total_pages = (int)$value; } #how many items to show per page function limit($value) { $this->limit = (int)$value; } #Page to sent the page value function target($value) { $this->target = $value; } #Current page function currentPage($value) { $this->page = (int)$value; } #How many adjacent pages should be shown on each side of the current page? function adjacents($value) { $this->adjacents = (int)$value; } #show counter? function showCounter($value = "") { $this->showCounter = ($value === true) ? true : false; } #to change the class name of the pagination div function changeClass($value = "") { $this->className = $value; } function nextLabel($value) { $this->nextT = $value; } function nextIcon($value) { $this->nextI = $value; } function prevLabel($value) { $this->prevT = $value; } function prevIcon($value) { $this->prevI = $value; } #to change the class name of the pagination div function parameterName($value = "") { $this->parameterName = $value; } #to change urlFriendly function urlFriendly($value = "%") { if (eregi('^ *$', $value)) { $this->urlF = false; return false; } $this->urlF = $value; } var $pagination; function pagination() { } function show() { if (!$this->calculate) if ($this->calculate()) return "
className\">$this->pagination
\n"; } function getOutput() { if (!$this->calculate) if ($this->calculate()) return "
className\">$this->pagination
\n"; } function get_pagenum_link($id) { if (strpos($this->target, '?') === false) if ($this->urlF) return str_replace($this->urlF, $id, $this->target); else return "$this->target?$this->parameterName=$id"; else return "$this->target&$this->parameterName=$id"; } function calculate() { $this->pagination = ""; $this->calculate == true; $error = false; if ($this->urlF and $this->urlF != '%' and strpos($this->target, $this->urlF) === false) { //Es necesario especificar el comodin para sustituir echo "Especificaste un wildcard para sustituir, pero no existe en el target
"; $error = true; } elseif ($this->urlF and $this->urlF == '%' and strpos($this->target, $this->urlF) === false) { echo "Es necesario especificar en el target el comodin % para sustituir el número de página
"; $error = true; } if ($this->total_pages < 0) { echo "It is necessary to specify the number of pages (\$class->items(1000))
"; $error = true; } if ($this->limit == null) { echo "It is necessary to specify the limit of items to show per page (\$class->limit(10))
"; $error = true; } if ($error) return false; $n = trim($this->nextT.' '.$this->nextI); $p = trim($this->prevI.' '.$this->prevT); /* Setup vars for query. */ if ($this->page) $start = ($this->page - 1) * $this->limit; //first item to display on this page else $start = 0; //if no page var is given, set start to 0 /* Setup page vars for display. */ $prev = $this->page - 1; //previous page is page - 1 $next = $this->page + 1; //next page is page + 1 $lastpage = ceil($this->total_pages / $this->limit); //lastpage is = total pages / items per page, rounded up. $lpm1 = $lastpage - 1; //last page minus 1 /* Now we apply our rules and draw the pagination object. We're actually saving the code to a variable in case we want to draw it more than once. */ if ($lastpage > 1) { if ($this->page) { //anterior button if ($this->page > 1) $this->pagination .= "get_pagenum_link($prev). "\" class=\"prev-page\">$p"; else $this->pagination .= "$p"; } //pages if ($lastpage < 7 + ($this->adjacents * 2)) { //not enough pages to bother breaking it up for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $this->page) $this->pagination .= "$counter"; else $this->pagination .= "get_pagenum_link($counter)."\">$counter"; } } elseif ($lastpage > 5 + ($this->adjacents * 2)) { //enough pages to hide some //close to beginning; only hide later pages if ($this->page < 1 + ($this->adjacents * 2)) { for ($counter = 1; $counter < 4 + ($this->adjacents * 2); $counter++) { if ($counter == $this->page) $this->pagination .= "$counter"; else $this->pagination .= "get_pagenum_link($counter)."\">$counter"; } $this->pagination .= "..."; $this->pagination .= "get_pagenum_link($lpm1)."\">$lpm1"; $this->pagination .= "get_pagenum_link($lastpage)."\">$lastpage"; } //in middle; hide some front and some back elseif ($lastpage - ($this->adjacents * 2) > $this->page && $this->page > ($this-> adjacents * 2)) { $this->pagination .= "get_pagenum_link(1)."\">1"; $this->pagination .= "get_pagenum_link(2)."\">2"; $this->pagination .= "..."; for ($counter = $this->page - $this->adjacents; $counter <= $this->page + $this-> adjacents; $counter++) if ($counter == $this->page) $this->pagination .= "$counter"; else $this->pagination .= "get_pagenum_link($counter)."\">$counter"; $this->pagination .= "..."; $this->pagination .= "get_pagenum_link($lpm1)."\">$lpm1"; $this->pagination .= "get_pagenum_link($lastpage)."\">$lastpage"; } //close to end; only hide early pages else { $this->pagination .= "get_pagenum_link(1)."\">1"; $this->pagination .= "get_pagenum_link(2)."\">2"; $this->pagination .= "..."; for ($counter = $lastpage - (2 + ($this->adjacents * 2)); $counter <= $lastpage; $counter++) if ($counter == $this->page) $this->pagination .= "$counter"; else $this->pagination .= "get_pagenum_link($counter)."\">$counter"; } } if ($this->page) { //siguiente button if ($this->page < $counter - 1) $this->pagination .= " get_pagenum_link($next)."\" class=\"next-page\">$n"; else $this->pagination .= "$n"; if ($this->showCounter) $this->pagination .= "
($this->total_pages Pages)
"; } } return true; } } ?>