File: /www/exchange0old/exchange/classes/Lib/Paging.php
<?php
class Lib_Paging
{
var $output=array();
var $prev;
var $next;
function Lib_Paging($model,$par,$cssstyle)
{
if($model='classic')
$this->doClassicPaging($par,$cssstyle);
}
function getPaginated()
{
return '<style>ul.pagination li a{font-size: 12px !important;}</style><nav><ul class="pagination">'.$this->prev.' '.implode(' ',$this->output).' '.$this->next.'</ul></nav>';
}
function doClassicPaging($par = array(),$cssstyle)
{
if(empty($_GET['page']))
{
$_REQUEST['page']=$_GET['page']= 1;
$_SERVER['QUERY_STRING'] = $_SERVER['QUERY_STRING'].'&page=1';
}
if(count($par)>0)
{
if(!isset($_GET['page']))
{
$start = 1;
$end = ($par['length']>$par['totalpages'] ? $par['totalpages'] : $par['length']);
$s = 0;
for($i=$start;$i<=$end;$i++)
{
$tmp = $_SERVER['QUERY_STRING']."&page=".$i;
if(empty($_GET['page']) && $i==1)
$this->output[++$s]= '<li class="active"><a>'.$i.'</a></li>';
else
$this->output[++$s]= '<li><a href="?'.$tmp.'">'.$i.'</a></li>';
}
if($par['totalpages']>$par['length'])
{
$tmp = $_SERVER['QUERY_STRING']."&page=".($start+1);
$this->next = '<li><a href="?'.($tmp).'">Next </a></li>';
}
return true;
}
elseif (isset($_GET['page']))
{
$cpage = (int)$_GET['page'];
$mid = (int) ($par['length']/2);
if($cpage > ($mid+1))
{
$start = ($cpage - $mid);
$end = $start + $par['length']-1;
$page_diff = abs($cpage - $par['totalpages']);
if($page_diff < 4)
{
$page_diff = 4 - $page_diff;
$new_start = $start - $page_diff;
if($new_start < 0)
{
$start = $new_start + 3;
}
else
{
$start = $new_start;
}
}
}
else
{
$start = 1;
$end = ($par['length']>$par['totalpages'] ? $par['totalpages'] : $par['length']);
}
$s=0;
for($i=$start;$i<=$end;$i++)
{
$tmp = split('page',$_SERVER['QUERY_STRING']);
$q = $tmp[0]."page=".$i;
$tmp = split('&',$tmp[1]);
$q .= (!empty($tmp[1]) ? '&'.$tmp[1] : '');
if($_GET['page']==$i)
{
if($par['totalpages'] != 1)
{
$this->output[++$s] = '<li class="active"><a>'.$i.'</a></li>';
}
}
else
{
if($i<=$par['totalpages'])
$this->output[++$s] = '<li><a href="?'.$q.' ">'.$i.'</a></li>';
}
}
if ($_GET['page']<$par['totalpages'])
{
$tmp = split('page',$_SERVER['QUERY_STRING']);
$q = $tmp[0]."page=".($_GET['page']+1);
$tmp = split('&',$tmp[1]);
$q .= (!empty($tmp[1]) ? '&'.$tmp[1] : '');
$this->next = '<li><a href="?'.($q).'"> <span aria-hidden="true">></span> </a></li>';
$tmp = split('page',$_SERVER['QUERY_STRING']);
$q = $tmp[0]."page=".($par['totalpages']);
$tmp = split('&',$tmp[1]);
$q .= (!empty($tmp[1]) ? '&'.$tmp[1] : '');
$this->next .= '<li><a href="?'.($q).'" > <span aria-hidden="true">»</span> </a></li>';
}
if($_GET['page']>1)
{
$tmp = split('page',$_SERVER['QUERY_STRING']);
$q = $tmp[0]."page=1";
$tmp = split('&',$tmp[1]);
$q .= (!empty($tmp[1]) ? '&'.$tmp[1] : '');
$this->prev .= '<li> <a href="?'.($q).'"> <span aria-hidden="true">«</span> </a></li>';
$tmp = split('page',$_SERVER['QUERY_STRING']);
$q = $tmp[0]."page=".($_GET['page']-1);
$tmp = split('&',$tmp[1]);
$q .= (!empty($tmp[1]) ? '&'.$tmp[1] : '');
$this->prev .= '<li> <a href="?'.($q).'"> <span aria-hidden="true"><</span> </a></li>';
}
}
}
}
}
?>