]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - inc/3rdparty/paginator.php
postgres
[github/wallabag/wallabag.git] / inc / 3rdparty / paginator.php
index e8801555bbfd16a062a0283531598c832b72e650..306756c0e565bee474ff382f46d950726fcea2d5 100644 (file)
 class Paginator{
 
         /**
-        * set the number of items per page.
-        *
-        * @var numeric
-       */
-       private $_perPage;
-
-       /**
-        * set get parameter for fetching the page number
-        *
-        * @var string
-       */
-       private $_instance;
-
-       /**
-        * sets the page number.
-        *
-        * @var numeric
-       */
-       private $_page;
-
-       /**
-        * set the limit for the data source
-        *
-        * @var string
-       */
-       private $_limit;
-
-       /**
-        * set the total number of records/items.
-        *
-        * @var numeric
-       */
-       private $_totalRows = 0;
-
-
-
-       /**
-        *  __construct
-        *  
-        *  pass values when class is istantiated 
-        *  
-        * @param numeric  $_perPage  sets the number of iteems per page
-        * @param numeric  $_instance sets the instance for the GET parameter
-        */
-       public function __construct($perPage,$instance){
-               $this->_instance = $instance;           
-               $this->_perPage = $perPage;
-               $this->set_instance();          
-       }
-
-       /**
-        * get_start
-        *
-        * creates the starting point for limiting the dataset
-        * @return numeric
-       */
-       private function get_start(){
-               return ($this->_page * $this->_perPage) - $this->_perPage;
-       }
-
-       /**
-        * set_instance
-        * 
-        * sets the instance parameter, if numeric value is 0 then set to 1
-        *
-        * @var numeric
-       */
-       private function set_instance(){
-               $this->_page = (int) (!isset($_GET[$this->_instance]) ? 1 : $_GET[$this->_instance]); 
-               $this->_page = ($this->_page == 0 ? 1 : $this->_page);
-       }
-
-       /**
-        * set_total
-        *
-        * collect a numberic value and assigns it to the totalRows
-        *
-        * @var numeric
-       */
-       public function set_total($_totalRows){
-               $this->_totalRows = $_totalRows;
-       }
-
-       /**
-        * get_limit
-        *
-        * returns the limit for the data source, calling the get_start method and passing in the number of items perp page
-        * 
-        * @return string
-       */
-       public function get_limit(){
-               return "LIMIT ".$this->get_start().",$this->_perPage";
+     * set the number of items per page.
+     *
+     * @var numeric
+    */
+    private $_perPage;
+
+    /**
+     * set get parameter for fetching the page number
+     *
+     * @var string
+    */
+    private $_instance;
+
+    /**
+     * sets the page number.
+     *
+     * @var numeric
+    */
+    private $_page;
+
+    /**
+     * set the limit for the data source
+     *
+     * @var string
+    */
+    private $_limit;
+
+    /**
+     * set the total number of records/items.
+     *
+     * @var numeric
+    */
+    private $_totalRows = 0;
+
+
+
+    /**
+     *  __construct
+     *  
+     *  pass values when class is istantiated 
+     *  
+     * @param numeric  $_perPage  sets the number of iteems per page
+     * @param numeric  $_instance sets the instance for the GET parameter
+     */
+    public function __construct($perPage,$instance){
+        $this->_instance = $instance;        
+        $this->_perPage = $perPage;
+        $this->set_instance();        
+    }
+
+    /**
+     * get_start
+     *
+     * creates the starting point for limiting the dataset
+     * @return numeric
+    */
+    private function get_start(){
+        return ($this->_page * $this->_perPage) - $this->_perPage;
+    }
+
+    /**
+     * set_instance
+     * 
+     * sets the instance parameter, if numeric value is 0 then set to 1
+     *
+     * @var numeric
+    */
+    private function set_instance(){
+        $this->_page = (int) (!isset($_GET[$this->_instance]) ? 1 : $_GET[$this->_instance]); 
+        $this->_page = ($this->_page == 0 ? 1 : $this->_page);
+    }
+
+    /**
+     * set_total
+     *
+     * collect a numberic value and assigns it to the totalRows
+     *
+     * @var numeric
+    */
+    public function set_total($_totalRows){
+        $this->_totalRows = $_totalRows;
+    }
+
+    /**
+     * get_limit
+     *
+     * returns the limit for the data source, calling the get_start method and passing in the number of items perp page
+     * 
+     * @return string
+    */
+    public function get_limit(){
+        if (STORAGE == 'postgres') {
+            return "LIMIT ".$this->_perPage." OFFSET ".$this->get_start();
+        } else {
+            return "LIMIT ".$this->get_start().",".$this->_perPage;
         }
+    }
 
         /**
          * page_links
@@ -112,87 +116,87 @@ class Paginator{
          * @var sting $ext optionally pass in extra parameters to the GET
          * @return string returns the html menu
         */
-       public function page_links($path='?',$ext=null)
-       {
-           $adjacents = "2";
-           $prev = $this->_page - 1;
-           $next = $this->_page + 1;
-           $lastpage = ceil($this->_totalRows/$this->_perPage);
-           $lpm1 = $lastpage - 1;
-
-           $pagination = "";
-               if($lastpage > 1)
-               {   
-                   $pagination .= "<div class='pagination'>";
-               if ($this->_page > 1)
-                   $pagination.= "<a href='".$path."$this->_instance=$prev"."$ext'>« previous</a>";
-               else
-                   $pagination.= "<span class='disabled'>« previous</span>";   
-
-               if ($lastpage < 7 + ($adjacents * 2))
-               {   
-               for ($counter = 1; $counter <= $lastpage; $counter++)
-               {
-               if ($counter == $this->_page)
-                   $pagination.= "<span class='current'>$counter</span>";
-               else
-                   $pagination.= "<a href='".$path."$this->_instance=$counter"."$ext'>$counter</a>";                   
-               }
-               }
-               elseif($lastpage > 5 + ($adjacents * 2))
-               {
-               if($this->_page < 1 + ($adjacents * 2))       
-               {
-               for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
-               {
-               if ($counter == $this->_page)
-                   $pagination.= "<span class='current'>$counter</span>";
-               else
-                   $pagination.= "<a href='".$path."$this->_instance=$counter"."$ext'>$counter</a>";                   
-               }
-                   $pagination.= "...";
-                   $pagination.= "<a href='".$path."$this->_instance=$lpm1"."$ext'>$lpm1</a>";
-                   $pagination.= "<a href='".$path."$this->_instance=$lastpage"."$ext'>$lastpage</a>";       
-               }
-               elseif($lastpage - ($adjacents * 2) > $this->_page && $this->_page > ($adjacents * 2))
-               {
-                   $pagination.= "<a href='".$path."$this->_instance=1"."$ext'>1</a>";
-                   $pagination.= "<a href='".$path."$this->_instance=2"."$ext'>2</a>";
-                   $pagination.= "...";
-               for ($counter = $this->_page - $adjacents; $counter <= $this->_page + $adjacents; $counter++)
-               {
-               if ($counter == $this->_page)
-                   $pagination.= "<span class='current'>$counter</span>";
-               else
-                   $pagination.= "<a href='".$path."$this->_instance=$counter"."$ext'>$counter</a>";                   
-               }
-                   $pagination.= "..";
-                   $pagination.= "<a href='".$path."$this->_instance=$lpm1"."$ext'>$lpm1</a>";
-                   $pagination.= "<a href='".$path."$this->_instance=$lastpage"."$ext'>$lastpage</a>";       
-               }
-               else
-               {
-                   $pagination.= "<a href='".$path."$this->_instance=1"."$ext'>1</a>";
-                   $pagination.= "<a href='".$path."$this->_instance=2"."$ext'>2</a>";
-                   $pagination.= "..";
-               for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
-               {
-               if ($counter == $this->_page)
-                   $pagination.= "<span class='current'>$counter</span>";
-               else
-                   $pagination.= "<a href='".$path."$this->_instance=$counter"."$ext'>$counter</a>";                   
-               }
-               }
-               }
-
-               if ($this->_page < $counter - 1)
-                   $pagination.= "<a href='".$path."$this->_instance=$next"."$ext'>next »</a>";
-               else
-                   $pagination.= "<span class='disabled'>next »</span>";
-                   $pagination.= "</div>\n";       
-               }
-
-
-       return $pagination;
-       }
+    public function page_links($path='?',$ext=null)
+    {
+        $adjacents = "2";
+        $prev = $this->_page - 1;
+        $next = $this->_page + 1;
+        $lastpage = ceil($this->_totalRows/$this->_perPage);
+        $lpm1 = $lastpage - 1;
+
+        $pagination = "";
+        if($lastpage > 1)
+        {   
+            $pagination .= "<div class='pagination'>";
+        if ($this->_page > 1)
+            $pagination.= "<a href='".$path."$this->_instance=$prev"."$ext'>« previous</a>";
+        else
+            $pagination.= "<span class='disabled'>« previous</span>";   
+
+        if ($lastpage < 7 + ($adjacents * 2))
+        {   
+        for ($counter = 1; $counter <= $lastpage; $counter++)
+        {
+        if ($counter == $this->_page)
+            $pagination.= "<span class='current'>$counter</span>";
+        else
+            $pagination.= "<a href='".$path."$this->_instance=$counter"."$ext'>$counter</a>";                   
+        }
+        }
+        elseif($lastpage > 5 + ($adjacents * 2))
+        {
+        if($this->_page < 1 + ($adjacents * 2))       
+        {
+        for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
+        {
+        if ($counter == $this->_page)
+            $pagination.= "<span class='current'>$counter</span>";
+        else
+            $pagination.= "<a href='".$path."$this->_instance=$counter"."$ext'>$counter</a>";                   
+        }
+            $pagination.= "...";
+            $pagination.= "<a href='".$path."$this->_instance=$lpm1"."$ext'>$lpm1</a>";
+            $pagination.= "<a href='".$path."$this->_instance=$lastpage"."$ext'>$lastpage</a>";       
+        }
+        elseif($lastpage - ($adjacents * 2) > $this->_page && $this->_page > ($adjacents * 2))
+        {
+            $pagination.= "<a href='".$path."$this->_instance=1"."$ext'>1</a>";
+            $pagination.= "<a href='".$path."$this->_instance=2"."$ext'>2</a>";
+            $pagination.= "...";
+        for ($counter = $this->_page - $adjacents; $counter <= $this->_page + $adjacents; $counter++)
+        {
+        if ($counter == $this->_page)
+            $pagination.= "<span class='current'>$counter</span>";
+        else
+            $pagination.= "<a href='".$path."$this->_instance=$counter"."$ext'>$counter</a>";                   
+        }
+            $pagination.= "..";
+            $pagination.= "<a href='".$path."$this->_instance=$lpm1"."$ext'>$lpm1</a>";
+            $pagination.= "<a href='".$path."$this->_instance=$lastpage"."$ext'>$lastpage</a>";       
+        }
+        else
+        {
+            $pagination.= "<a href='".$path."$this->_instance=1"."$ext'>1</a>";
+            $pagination.= "<a href='".$path."$this->_instance=2"."$ext'>2</a>";
+            $pagination.= "..";
+        for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
+        {
+        if ($counter == $this->_page)
+            $pagination.= "<span class='current'>$counter</span>";
+        else
+            $pagination.= "<a href='".$path."$this->_instance=$counter"."$ext'>$counter</a>";                   
+        }
+        }
+        }
+
+        if ($this->_page < $counter - 1)
+            $pagination.= "<a href='".$path."$this->_instance=$next"."$ext'>next »</a>";
+        else
+            $pagination.= "<span class='disabled'>next »</span>";
+            $pagination.= "</div>\n";       
+        }
+
+
+    return $pagination;
+    }
 }