View file veppa_wallpaper/sys/helpers/Paginator.php

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"=>"&laquo;");
			}
			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"=>"&raquo;");
			}


			// 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);
	}

}
?>