Source for file AREPagination.class.php

Documentation is available at AREPagination.class.php

  1. <?php
  2. /**
  3.  * Módosítva: 2010.03.06.
  4.  *
  5.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  6.  * @copyright Copyright (C) 2010, Takács Ákos
  7.  * @version 1.0
  8.  * @package REPagination
  9.  */
  10.  
  11. /**
  12.  * Lapozók abstract ősosztálya.
  13.  * Általános műveletek már itt meg vannak valósítva
  14.  *
  15.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  16.  * @copyright Copyright (C) 2010, Takács Ákos
  17.  * @package REPagination
  18.  */
  19. abstract class AREPagination
  20. {
  21.     /**
  22.      * Iterálható objektum a lapozandó tartalmakkal
  23.      * @var AREPItems 
  24.      */
  25.     protected $items = null;
  26.  
  27.     /**
  28.      * Első oldalra ugró link szövege
  29.      * @var string 
  30.      */
  31.     protected $startLinkText = "&laquo;&laquo;";
  32.  
  33.     /**
  34.      * Az utolsó oldalra ugró link szövege
  35.      * @var string 
  36.      */
  37.     protected $endLinkText = "&raquo;&raquo;";
  38.  
  39.     /**
  40.      * Az előző oldalra ugró link szövege
  41.      * @var string 
  42.      */
  43.     protected $prevLinkText = 'Előző';
  44.     /**
  45.      * A következő oldalra ugró link szövege
  46.      * @var string 
  47.      */
  48.     protected $nextLinkText = 'Következő';
  49.     /**
  50.      * Az oldal linkek megjelenítésének sablonja
  51.      * {page} helyére kerül az oldalszám
  52.      * @var string 
  53.      */
  54.     protected $pageLinkPattern = '[{page}. oldal]';
  55.  
  56.     /**
  57.      * Egy oldalon megjelenítendő elemek száma
  58.      * @var int 
  59.      */
  60.     protected $itemPerPage = 10;
  61.  
  62.     /**
  63.      * A változó neve, amiben az aktuális oldalszám lesz a $_GET tömbben.
  64.      * @var string 
  65.      */
  66.     protected $pagevar    = 'page';
  67.  
  68.     /**
  69.      *
  70.      * @param string $value {@link $pagevar} új értéke
  71.      * @return string {@link $pagevar} aktuális vagy új értéke
  72.      */
  73.     public function pagevar($value null)
  74.     {
  75.         if ($value !== null)
  76.         {
  77.             $this->pagevar = (string)$value;
  78.         }
  79.         return $this->pagevar;
  80.     }
  81.  
  82.     /**
  83.      *
  84.      * @param string $value {@link $startLinkText} új értéke
  85.      * @return string {@link $startLinkText}  aktuális vagy új értéke
  86.      */
  87.     public function startLinkText($value=null)
  88.     {
  89.         if ($value !== null)
  90.         {
  91.             $this->startLinkText = (string)$value;
  92.         }
  93.         return $this->startLinkText;
  94.     }
  95.  
  96.     /**
  97.      *
  98.      * @param string $value {@link $prevLinkText} új értéke
  99.      * @return string {@link $prevLinkText} aktuális vagy új értéke
  100.      */
  101.     public function prevLinkText($value=null)
  102.     {
  103.         if ($value !== null)
  104.         {
  105.             $this->prevLinkText = (string)$value;
  106.         }
  107.         return $this->prevLinkText;
  108.     }
  109.  
  110.     /**
  111.      *
  112.      * @param string $value {@link $nextLinkText} új értéke
  113.      * @return string {@link $nextLinkText} aktuális vagy új értéke
  114.      */
  115.     public function nextLinkText($value=null)
  116.     {
  117.         if ($value !== null)
  118.         {
  119.             $this->nextLinkText = (string)$value;
  120.         }
  121.         return $this->nextLinkText;
  122.     }
  123.  
  124.     /**
  125.      *
  126.      * @param string $value {@link $endLinkText} új értéke
  127.      * @return string {@link $endLinkText} aktuális vagy új értéke
  128.      */
  129.     public function endLinkText($value=null)
  130.     {
  131.         if ($value !== null)
  132.         {
  133.             $this->endLinkText = (string)$value;
  134.         }
  135.         return $this->endLinkText;
  136.     }
  137.  
  138.     /**
  139.      *
  140.      * @param string $value {@link $pageLinkPattern} új értéke
  141.      * @return string {@link $pageLinkPattern} aktuális vagy új értéke
  142.      */
  143.     public function pageLinkPattern($value=null)
  144.     {
  145.         if ($value !== null)
  146.         {
  147.             $this->pageLinkPattern = (string)$value;
  148.         }
  149.         return $this->pageLinkPattern;
  150.     }
  151.     /**
  152.      * 
  153.      * @param string $value {@link $itemPerPage} Új értéke
  154.      * @return string {@link $itemPerPage} aktuális vagy új értéke
  155.      */
  156.     public function itemPerPage($value=null)
  157.     {
  158.         if ($value !== null)
  159.         {
  160.             $this->itemPerPage = (int)$value;
  161.         }
  162.         return $this->itemPerPage;
  163.     }
  164.  
  165.     /**
  166.      * @return int A lapozandó adatokhoz szükséges maximális oldalszám
  167.      */
  168.     abstract public function maxpage();
  169.     /**
  170.      * @see $pagevar
  171.      * @param int $page Elhagyása esetén az url-ből veszi az oldalszámot.
  172.      * @return REPFileItems Aktuális oldal rekordjait tartalmazó objektum
  173.      */
  174.     abstract public function page($page=null);
  175.  
  176.     /**
  177.      * Aktuális oldalszám
  178.      * @return int 
  179.      */
  180.     public function pageNumber()
  181.     {
  182.         $pageNumber = isset($_GET[$this->pagevar]abs((int)$_GET[$this->pagevar]1;
  183.         
  184.         if ($pageNumber ($maxPage $this->maxpage()))
  185.         {
  186.             $pageNumber $maxPage;
  187.         }
  188.         return $pageNumber;
  189.     }
  190.  
  191.     /**
  192.      * Legenerálja és visszaadja a lapozó linkeket
  193.      * 
  194.      * @param int $numberOfLinks Megjelenítendő linkek maximális száma
  195.      * @return string A lapozó linkek
  196.      */
  197.     public function pageLinks($numberOfLinks)
  198.     {
  199.         $page $this->pageNumber()
  200.         $maxpage $this->maxpage()
  201.  
  202.         //lapozó linkek
  203.         $numberOfLinks = (int)$numberOfLinks;
  204.         $numberOfLinks2 floor($numberOfLinks 2);
  205.         $linkoffset ($page $numberOfLinks2$page $numberOfLinks2 0;
  206.         $linkend $linkoffset+$numberOfLinks;
  207.  
  208.         if ($maxpage $numberOfLinks2 $page)
  209.         {
  210.             $linkoffset $maxpage $numberOfLinks;
  211.             if ($linkoffset 0)
  212.             {
  213.                 $linkoffset 0;
  214.             }
  215.             $linkend $maxpage;
  216.         }
  217.         $pageLinks '';
  218.         $pagevar $this->pagevar();
  219.  
  220.         if (trim($this->startLinkText()) != '')
  221.         {
  222.             $url_start self::setUrl(array($pagevar=>1));
  223.             $pageLinks .= "<a href='".$url_start."'>".$this->startLinkText()."</a> &nbsp; ";
  224.         }
  225.         if (trim($this->prevLinkText()) != '')
  226.         {
  227.             $url_prev self::setUrl(array($pagevar=>$page-1));
  228.             $pageLinks .= ($page 1
  229.                 ? "<a href='".$url_prev."'>".$this->prevLinkText()."</a>"
  230.                 : $this->prevLinkText();
  231.             $pageLinks .= " &nbsp; ";
  232.         }
  233.         
  234.         for ($i=1+$linkoffset$i <= $linkend$i++)
  235.         {
  236.             $url self::setUrl(array($pagevar=>$i));
  237.             $class ($i == $page"pagelink current" "pagelink";
  238.             $pageLinkText str_replace('{page}',$i,$this->pageLinkPattern());
  239.             $pageLinks .= "<a href='".$url."' class='$class'>".$pageLinkText."</a> &nbsp; ";
  240.         }
  241.         if (trim($this->nextLinkText()) != '')
  242.         {
  243.             $url_next self::setUrl(array($pagevar=>$page+1));
  244.             $pageLinks .= ($page $maxpage
  245.                 ? "<a href='".$url_next."'>".$this->nextLinkText()."</a>"
  246.                 : $this->nextLinkText();
  247.             $pageLinks .= " &nbsp; ";
  248.         }
  249.         if (trim($this->endLinkText()) != '')
  250.         {
  251.             $url_end self::setUrl(array($pagevar=>$this->maxpage()));
  252.             $pageLinks .= "<a href='".$url_end."'>".$this->endLinkText()."</a> &nbsp; ";
  253.         }
  254.         return $pageLinks;
  255.     }
  256.  
  257.     /**
  258.      *
  259.      * @param array $vars Beállítandó $_GET változók asszociatív tömbje.
  260.      * @param string $url Az alap url, amihez hozzá kell adni a változókat.
  261.      *                 Elhagyása esetén a REQUEST_URI lesz.
  262.      * @param string $sep query string-ben az eválasztó jel. Alapértelmezett &amp;amp;
  263.      * @return string 
  264.      */
  265.     public static function setUrl($vars$url=null,$sep=null)
  266.     {
  267.         if ($sep === null)
  268.         {
  269.             $sep '&amp;';
  270.         }
  271.         if ($url === null)
  272.         {
  273.             $url $_SERVER['REQUEST_URI'];
  274.         }
  275.         $parse parse_url($url);
  276.         $file $parse['path'];
  277.         $get array();
  278.         if (isset($parse['query']))
  279.         {
  280.             parse_str($parse['query'],$get);
  281.         }
  282.         foreach ($vars as $key => &$value)
  283.         {
  284.             $get[$key$value;
  285.         }
  286.         $ret $file;
  287.         $query http_build_query($get''$sep);
  288.         if ($query)
  289.         {
  290.             $ret  .= '?'.$query;
  291.         }
  292.         return $ret;
  293.     }
  294. }
  295. ?>

Documentation generated on Sat, 06 Mar 2010 22:00:15 +0100 by phpDocumentor 1.4.1