File size: 3.51Kb
<?php
/**
* Free Wallpaper Script
*
* Free Wallpaper Script by Vepa Halliyev is licensed under a Creative Commons Attribution-Share Alike 3.0 License.
*
* @package Free Wallpaper Script
* @author Vepa Halliyev
* @copyright Copyright (c) 2009, Vepa Halliyev, veppa.com.
* @license http://www.veppa.com/free-wallpaper-script/
* @link http://www.veppa.com/free-wallpaper-script/
* @since Version 1.0
* @filesource
*/
class Paginator {
static function render($page, $total_pages, $extralink, $pattern = true, $extralink_alt="")
{
//echo "make_links_array($st,$total_rows,$numrows,$extralink,$pattern)";
/*
$st : kayit baslama satiri. sayfada 20 yazi varsa 2 sayfanin linki 20 diye basliyor.
$total_rows : toplam yazi zayisi
$numrows : her sayfada listelenen sayfa sayisi
$extralink : ornek/link/sayfa/{st} . burada {st} nin yerine sayfa numarasini koyuyor. pattern true olmasi lazim. yoksa gelen linkin sonuna duruma gore ?st=2 veya &st=2 ekliyor
$pattern : true ise gelen linki pattenr olarak kullanir, yoksa arkasina link ekler
<sayfalar>
html...
</sayfalar>
*/
// on each side
$links_count = 5;
if($total_pages>1)
{
// define page number
if($page<1)
{
$page = 1;
}
if($page>$total_pages)
{
$page = $total_pages;
}
// define max and minimum page numbers
$p_min = $page - $links_count;
if($p_min<1)
{
$p_min = 1;
$p_max = $p_min + $links_count * 2;
if($p_max > $total_pages)
{
$p_max = $total_pages;
}
}
else
{
$p_max = $page + $links_count;
if($p_max > $total_pages)
{
$p_max = $total_pages;
$p_min = $p_max - $links_count * 2;
if($p_min < 1)
{
$p_min = 1;
}
}
}
// create links
$arr_l=array();
if($page > 1)
{
$arr_l[] = array("st"=>($page-1)."","label"=>"«");
}
if($p_min > 1)
{
$arr_l[] = array("st"=>"1","label"=>"1");
$arr_l[] = array("st"=>"space","label"=>"...");
}
for($i = $p_min; $i <= $p_max; $i++)
{
if($i == $page)
{
$arr_l[] = array("st"=>"span","label"=>$i);
}
else
{
$arr_l[] = array("st"=>$i,"label"=>$i);
}
}
if($p_max < $total_pages)
{
$arr_l[] = array("st"=>"space","label"=>"...");
$arr_l[] = array("st"=>"$total_pages","label"=>"$total_pages");
}
if($page < $total_pages)
{
$arr_l[] = array("st"=>($page+1),"label"=>"»");
}
// create links from array
foreach($arr_l as $val)
{
switch($val['st'])
{
case "space":
$links .= $val['label'];
break;
case "span":
$links .= " <span class=\"sel_page\">".$val['label']."</span> ";
break;
default:
if($pattern)
{
if($extralink_alt && $val['st']==1)
{
$val_st = $extralink_alt;
}
else
{
$val_st = str_replace("{page}",$val['st'],$extralink);
}
}
else
{
$val_st = "?page=".$val['st'].$extralink;
}
$links .= " <a href=\"$val_st\">".$val['label']."</a> ";
}
}//foreach
if($links)
{
$links = '<div class="paginator">'.$links.'</div>';
}
}//have any more pages
return $links;
}
static function display($page, $total_pages, $extralink, $pattern=false, $extralink_alt="")
{
echo self::render($page, $total_pages, $extralink, $pattern, $extralink_alt);
}
}
?>