Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.54 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Framework;
  4.  
  5. defined('ROOT') or exit('No tienes Permitido el acceso.');
  6.  
  7. class Paginator
  8.  {
  9.   /**
  10.    * Cantidad de Páginas
  11.    */
  12.   protected static $pages = 0;
  13.  
  14.   /**
  15.    * Nro de páginas para mostrar
  16.    */
  17.   protected static $show = 10;
  18.  
  19.   /**
  20.    * Constructor de la clase
  21.    * @param int $total Cantidad total de nodos
  22.    * @param int $nodes_x_page Cantidad de nodos cargados por página
  23.    * @param int $show Cantidad de Páginas a listar.
  24.    * @author Cody Roodaka <roodakazo@hotmail.com>
  25.    */
  26.   public static function init($total_nodes, $nodes_x_page, $show)
  27.    {
  28.     // Calculamos la cantidad de páginas y lo seteamos
  29.     $div = ceil($total / $nodes_x_page);
  30.     if(($total - $nodes_x_page) >= 2 && $div == 1 ) { self::$pages = 2; }
  31.     elseif($div > 1) { self::$pages = $div; }
  32.     else { self::$pages = 1; }
  33.     self::$show = $show;
  34.    }
  35.  
  36.  
  37.   /**
  38.    * Calculamos el paginado
  39.    * @param int $page Número de página actual
  40.    * @author Cody Roodaka <roodakazo@hotmail.com>
  41.    * @return array Arreglo con el paginado.
  42.    */
  43.   public function paginate($page)
  44.    {
  45.     // Inicializamos el arreglo principal
  46.     $result = array();
  47.     // Seteamos los botones de previo e inicio
  48.     if($page == 1) { $result['first'] = 0; }
  49.     else { $result['first'] = 1; }
  50.  
  51.     if($page > 1) { $result['prev'] = ($page - 1); }
  52.     else { $result['prev'] = 0; }
  53.     // Calculamos el punto de partida para el conteo
  54.     $start = floor(self::$show / 2);
  55.     // Nos aseguramos de que si es posible siempre arranque desde el medio
  56.     if($start < self::$pages && $start > 0)
  57.      {
  58.       // indicamos que la actual estará (o lo intentará) estar en el medio.
  59.       $calc = ($page - $start);
  60.       // chequeamos que no sea ni negativo ni cero.
  61.       if($calc < 1) { $c = 1; }
  62.       else { $c = $calc; }
  63.      }
  64.     else
  65.      {
  66.       // iniciamos desde 1
  67.       $c = 1;
  68.      }
  69.     // Bucle! Corremos el paginado.
  70.     // $l indica la cantidad de páginas que se están mostrando
  71.     // $c indica el número de página que se está mostrando
  72.     $l = 1;
  73.     while($l <= self::$show)
  74.      {
  75.       if($c <= self::$pages)
  76.        {
  77.         $result['pages'][] = $c;
  78.        }
  79.       ++$l;
  80.       ++$c;
  81.      }
  82.  
  83.     if($page == self::$pages)
  84.      {
  85.       $result['next'] = 0;
  86.       $result['last'] = 0;
  87.      }
  88.     else
  89.      {
  90.       $result['next'] = ($page + 1);
  91.       $result['last'] = self::$pages;
  92.      }
  93.  
  94.     $result['self'] = $page;
  95.     return $result;
  96.    } // public function paginate();
  97.  } // class Paginator();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement