Source for file ADBListClass.class.php

Documentation is available at ADBListClass.class.php

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

Documentation generated on Fri, 02 Apr 2010 17:34:17 +0200 by phpDocumentor 1.4.1