File "pagination.class.php"

Full path: /home/dsvchile/public_html/equote/Buscadores/include/pagination.class.php
File size: 11.54 B
MIME-type: text/x-php
Charset: 8 bit

Download   Open   Edit   Advanced Editor   Back

<?php
class pagination{
/*
Script Name: *Digg Style Paginator Class
Script URI: http://www.mis-algoritmos.com/2007/05/27/digg-style-pagination-class/
Description: Class in PHP that allows to use a pagination like a digg or sabrosus style.
Script Version: 0.3.3
Author: Victor De la Rocha
Author URI: http://www.mis-algoritmos.com
*/
		/*Default values*/
		var $total_pages = -1;//items
		var $limit = null;
		var $target = "";
		var $page = 1;
		var $IdMenuIni= null;
		var $buscador= null;
		var $page1= null;
		var $page2= null;
		var $items1= null;
		var $items2= null;
		var $adjacents = 2;
		var $showCounter = false;
		var $className = "pagination";
		var $parameterName = "page";
		var $urlF = false;//urlFriendly

		var $Folio = null;
		var $Task = null;
		var $Responsible = null;

		var $MCode = null;
		var $Cliente = null;

		var $TCot = null;
		var $Reference = null;

		var $IdUsuario = null;
		var $ClienteID = null;
		var $COL =null;
		var $POL =null;
		var $COD =null;
		var $POD =null;
		var $IncotermID =null;

		var $ZIP =null;

		var $Nombre = null;
		var $ApellidoPaterno = null;
		var $ApellidoMaterno = null;
		var $Username = null;

		var $IdTarifa = null;
		var $Pais = null;
		var $Puerto = null;
		var $CodPuerto = null;

		var $GasLocal = null;

		/*Buttons next and previous*/
		var $nextT = "Next";
		var $nextI = "&#187;"; //&#9658;
		var $prevT = "Previous";
		var $prevI = "&#171;"; //&#9668;

		/*****/
		var $calculate = false;

		#Total items
		function items($value){$this->total_pages = (int) $value;}

		function IdMenuIni($value){$this->IdMenuIni = $value;}
		function buscador($value){$this->buscador = $value;}

		function page1($value){$this->page1 = $value;}
		function page2($value){$this->page2 = $value;}
		function items1($value){$this->items1 = $value;}
		function items2($value){$this->items2 = $value;}

		function Folio($value){$this->Folio = $value;}
		function Task($value){$this->Task = $value;}
		function Responsible($value){$this->Responsible = $value;}

		function TCot($value){$this->TCot = $value;}

		function Reference($value){$this->Reference = $value;}

		function MCode($value){$this->MCode = $value;}
		function Cliente($value){$this->Cliente = $value;}

		function IdUsuario($value){$this->IdUsuario = $value;}
		function ClienteID($value){$this->ClienteID = $value;}
		function IncotermID($value){$this->IncotermID = $value;}
		function COL($value){$this->COL = $value;}
		function POL($value){$this->POL = $value;}
		function COD($value){$this->COD = $value;}
		function POD($value){$this->POD = $value;}

		function ZIP($value){$this->ZIP = $value;}

		function Nombre($value){$this->Nombre = $value;}
		function ApellidoPaterno($value){$this->ApellidoPaterno = $value;}
		function ApellidoMaterno($value){$this->ApellidoMaterno = $value;}
		function Username($value){$this->Username = $value;}

		function IdTarifa($value){$this->IdTarifa = $value;}
		function Pais($value){$this->Pais = $value;}
		function Puerto($value){$this->Puerto = $value;}
		function CodPuerto($value){$this->CodPuerto = $value;}

		function Gaslocal($value){$this->Gaslocal = $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())
						echo "<div class=\"$this->className\">$this->pagination</div>\n";
			}
		function get_pagenum_link($id){
				if($this->buscador == 1)
					$Parametros = "page1=$id&items1=$this->items1&Folio=$this->Folio&NumOC=$this->NumOC&Task=$this->Task&Responsible=$this->Responsible&Numero=$this->Numero&Client=$this->Client&FecEstSail=$this->FecEstSail&FecCreacion=$this->FecCreacion";
				else if ($this->buscador == 2)
					$Parametros = "page1=$id&items1=$this->items1&MCode=$this->MCode&Cliente=$this->Cliente&IncotermID=$this->IncotermID";
				else if ($this->buscador == 3)
					$Parametros = "page1=$id&items1=$this->items1&Nombre=$this->Nombre&ApellidoPaterno=$this->ApellidoPaterno&ApellidoMaterno=$this->ApellidoMaterno&Username=$this->Username";
				else if ($this->buscador == 4)
					$Parametros = "page1=$id&items1=$this->items1&IdTarifa=$this->IdTarifa&Pais=$this->Pais&Puerto=$this->Puerto&CodPuerto=$this->CodPuerto";

				else if ($this->buscador == 5)
					$Parametros = "page1=$id&items1=$this->items1&IdUsuario=$this->IdUsuario&ClienteID=$this->ClienteID&IncotermID=$this->IncotermID&COL=$this->COL&POL=$this->POL&COD=$this->COD&POD=$this->POD";

				else if ($this->buscador == 6)
					$Parametros = "page1=$id&items1=$this->items1&IncotermID=$this->IncotermID&Cliente=$this->Cliente&TCot=$this->TCot&Reference=$this->Reference";

				else if ($this->buscador == 7)
					$Parametros = "page1=$id&items1=$this->items1&IncotermID=$this->IncotermID&ClienteID=$this->ClienteID&ZIP=$this->ZIP";


				if(strpos($this->target,'?')===false)
					if($this->urlF)
						return str_replace($this->urlF,$id,$this->target);
					else
						return "$this->target?$this->parameterName=$id&IdMenuIni=$this->IdMenuIni&$Parametros";
				else
					return "$this->target&$this->parameterName=$id&IdMenuIni=$this->IdMenuIni&$Parametros";
			}

		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<br />";
						$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 nmero de pgina<br />";
						$error = true;
					}

				if($this->total_pages < 0){
						echo "It is necessary to specify the <strong>number of pages</strong> (\$class->items(1000))<br />";
						$error = true;
					}
				if($this->limit == null){
						echo "It is necessary to specify the <strong>limit of items</strong> to show per page (\$class->limit(10))<br />";
						$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 .= "<a href=\"".$this->get_pagenum_link($prev)."\">$p</a>";
									else
										$this->pagination .= "<span class=\"disabled\">$p</span>";
							}
						//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 .= "<span class=\"current\">$counter</span>";
											else
												$this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
									}
							}
						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 .= "<span class=\"current\">$counter</span>";
													else
														$this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
											}
										$this->pagination .= "...";
										$this->pagination .= "<a href=\"".$this->get_pagenum_link($lpm1)."\">$lpm1</a>";
										$this->pagination .= "<a href=\"".$this->get_pagenum_link($lastpage)."\">$lastpage</a>";
									}
								//in middle; hide some front and some back
								elseif($lastpage - ($this->adjacents * 2) > $this->page && $this->page > ($this->adjacents * 2)){
										$this->pagination .= "<a href=\"".$this->get_pagenum_link(1)."\">1</a>";
										$this->pagination .= "<a href=\"".$this->get_pagenum_link(2)."\">2</a>";
										$this->pagination .= "...";
										for ($counter = $this->page - $this->adjacents; $counter <= $this->page + $this->adjacents; $counter++)
											if ($counter == $this->page)
													$this->pagination .= "<span class=\"current\">$counter</span>";
												else
													$this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
										$this->pagination .= "...";
										$this->pagination .= "<a href=\"".$this->get_pagenum_link($lpm1)."\">$lpm1</a>";
										$this->pagination .= "<a href=\"".$this->get_pagenum_link($lastpage)."\">$lastpage</a>";
									}
								//close to end; only hide early pages
								else{
										$this->pagination .= "<a href=\"".$this->get_pagenum_link(1)."\">1</a>";
										$this->pagination .= "<a href=\"".$this->get_pagenum_link(2)."\">2</a>";
										$this->pagination .= "...";
										for ($counter = $lastpage - (2 + ($this->adjacents * 2)); $counter <= $lastpage; $counter++)
											if ($counter == $this->page)
													$this->pagination .= "<span class=\"current\">$counter</span>";
												else
													$this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
									}
							}
						if($this->page){
								//siguiente button
								if ($this->page < $counter - 1)
										$this->pagination .= "<a href=\"".$this->get_pagenum_link($next)."\">$n</a>";
									else
										$this->pagination .= "<span class=\"disabled\">$n</span>";
									if($this->showCounter)$this->pagination .= "<div class=\"pagination_data\">($this->total_pages Pages)</div>";
							}
					}

				return true;
			}
	}
?>