Código PHP:
Ver original<?php
return $this->surroundBefore;
}
/*
* calcula las paginas circundantes posteriores/surroundAfter
*/
public function surroundPagesAfter()
{
//suma a la pagina actual las paginas configuradas para mostrar despues
$pageAfter = $this->page + 1;
//comienza a crear tantos botones como paginas sean posibles
for($i=$pageAfter, $ji=1; $i < $this->totalPages AND $ji<=$this->pagesAfter; $i++ AND $ji++)
{
if($i>$this->page)
{
'page' =>$i,
'url' =>$this->createURL($this->url, $this->id, $i)
));
}
}
//asigna false para que no muestre botones posteriores
if(empty($this->surroundAfter)) {
$this->surroundAfter = FALSE;
}
return $this->surroundAfter;
}
/*
* crea el boton anterior/beforeButton
*/
public function beforeButtons()
{
//resta 1 a la pagina actual
$pageBefore = ceil($this->page - 1);
//si el resultado anterior indica que no da un valor negativo
if($pageBefore >=0)
{
$this->beforeButton = array( 'page' =>$pageBefore,
'url' =>$this->createURL($this->url, $this->id, $pageBefore)
);
}
//sino asigna false para no mostrar boton anterior
else
{
$this->beforeButton = FALSE;
}
return $this->beforeButton;
}
/*
* crea el boton siguiente/afterButton
*/
public function afterButtons()
{
//suma a la pagina actual 1
$afterButton = $this->page + 1;
//si el resultado anterior es menor o igual a las paginas totales posibles
if($afterButton < $this->totalPages)
{
$this->afterButton = array( 'page' =>$afterButton,
'url' =>$this->createURL($this->url, $this->id, $afterButton)
);
}
else
{
$this->afterButton = FALSE;
}
return $this->afterButton;
}
/*
* crea el array definitivo con todos los valores necesarios para todos los botones/result
*/
public function paginator()
{
//comprueba que la pagina que ha enviado el usuario no sea mayor que el total de resultados posibles
//tampoco que sea inferior a 0
if($this->page <= $this->totalPages AND $this->page>=0)
{
'page'=>$this->page,
'surround_before' =>$this->surroundPagesBefore(),
'surround_after' =>$this->surroundPagesAfter(),
'before_button' =>$this->beforeButtons(),
'after_button' =>$this->afterButtons(),
'total_pages' =>$this->totalPages,
'current_pages' =>$this->currentPages,
'total_results_set' =>$this->totalResultsSet,
'limit_since' =>$this->currentPages,
'limit_result_set' =>$this->resultsPage
);
}
//si el usuario intentara romper el paginado poniendo páginas falsas entonces asigna FALSE
else
{
$this->result = FALSE;
}
return $this->result;
}
/*
* busca y sustituye un patron dentro de una URL para
* eliminar ese patron y sustituirlo para crear una nueva URL
* evitando acumular paginaciones de un mismo objeto en la URL
*
* evita, por ejemplo: ?page_camisetas=1&page_camisetas=2&page_camisetas=3
*/
public function createURL($url, $id, $page)
{
//si el identificador no se encuentra en la url
{
//agrega al final de la url el identificador y el valor que le corresponde
$url = $url."&".$id."=".$page;
}
//sino busca y reemplaza el identificador en la url por su nuevo valor
else
{
$url = preg_replace("/(".$id."=[[:digit:]]*)/i", $id."=".$page, $url); }
return $url;
}
}
?>
No olvides quitar del final del primer post que inicia la clase el cierre de PHP "?>"
y del segundo post que termina la clase la apertura de PHP "<?php" para así tener todo el código sin aperturas y cierres de PHP entre medias de la clase.