]>
git.immae.eu Git - github/wallabag/wallabag.git/blob - inc/3rdparty/paginator.php
5 * @author David Carr - dave@daveismyname.com - http://www.daveismyname.com
7 * @date October 20, 2013
12 * set the number of items per page.
19 * set get parameter for fetching the page number
26 * sets the page number.
33 * set the limit for the data source
40 * set the total number of records/items.
44 private $_totalRows = 0;
51 * pass values when class is istantiated
53 * @param numeric $_perPage sets the number of iteems per page
54 * @param numeric $_instance sets the instance for the GET parameter
56 public function __construct($perPage,$instance){
57 $this->_instance
= $instance;
58 $this->_perPage
= $perPage;
59 $this->set_instance();
65 * creates the starting point for limiting the dataset
68 private function get_start(){
69 return ($this->_page
* $this->_perPage
) - $this->_perPage
;
75 * sets the instance parameter, if numeric value is 0 then set to 1
79 private function set_instance(){
80 $this->_page
= (int) (!isset($_GET[$this->_instance
]) ? 1 : $_GET[$this->_instance
]);
81 $this->_page
= ($this->_page
== 0 ? 1 : $this->_page
);
87 * collect a numberic value and assigns it to the totalRows
91 public function set_total($_totalRows){
92 $this->_totalRows
= $_totalRows;
98 * returns the limit for the data source, calling the get_start method and passing in the number of items perp page
102 public function get_limit(){
103 return "LIMIT ".$this->get_start().",$this->_perPage";
109 * create the html links for navigating through the dataset
111 * @var sting $path optionally set the path for the link
112 * @var sting $ext optionally pass in extra parameters to the GET
113 * @return string returns the html menu
115 public function page_links($path='?',$ext=null)
118 $prev = $this->_page
- 1;
119 $next = $this->_page +
1;
120 $lastpage = ceil($this->_totalRows
/$this->_perPage
);
121 $lpm1 = $lastpage - 1;
126 $pagination .= "<div class='pagination'>";
127 if ($this->_page
> 1)
128 $pagination.= "<a href='".$path."$this->_instance=$prev"."$ext'>« previous
</a
>";
130 $pagination.= "<span
class='disabled'>« previous
</span
>";
132 if ($lastpage < 7 + ($adjacents * 2))
134 for ($counter = 1; $counter <= $lastpage; $counter++)
136 if ($counter == $this->_page)
137 $pagination.= "<span
class='current'>$counter</span
>";
139 $pagination.= "<a href
='".$path."$this->_instance=$counter"."$ext'>$counter</a>";
142 elseif($lastpage > 5 + ($adjacents * 2))
144 if($this->_page < 1 + ($adjacents * 2))
146 for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
148 if ($counter == $this->_page)
149 $pagination.= "<span class='current
'>$counter</span>";
151 $pagination.= "<a href='".$path."$this->_instance
=$counter"."$ext'>$counter</a>";
154 $pagination.= "<a href='".$path."$this->_instance=$lpm1"."$ext'>$lpm1</a
>";
155 $pagination.= "<a href
='".$path."$this->_instance=$lastpage"."$ext'>$lastpage</a>";
157 elseif($lastpage - ($adjacents * 2) > $this->_page && $this->_page > ($adjacents * 2))
159 $pagination.= "<a href='".$path."$this->_instance
=1"."$ext'>1</a
>";
160 $pagination.= "<a href
='".$path."$this->_instance=2"."$ext'>2</a>";
162 for ($counter = $this->_page - $adjacents; $counter <= $this->_page + $adjacents; $counter++)
164 if ($counter == $this->_page)
165 $pagination.= "<span class='current
'>$counter</span>";
167 $pagination.= "<a href='".$path."$this->_instance
=$counter"."$ext'>$counter</a>";
170 $pagination.= "<a href='".$path."$this->_instance=$lpm1"."$ext'>$lpm1</a
>";
171 $pagination.= "<a href
='".$path."$this->_instance=$lastpage"."$ext'>$lastpage</a>";
175 $pagination.= "<a href='".$path."$this->_instance
=1"."$ext'>1</a
>";
176 $pagination.= "<a href
='".$path."$this->_instance=2"."$ext'>2</a>";
178 for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
180 if ($counter == $this->_page)
181 $pagination.= "<span class='current
'>$counter</span>";
183 $pagination.= "<a href='".$path."$this->_instance
=$counter"."$ext'>$counter</a>";
188 if ($this->_page
< $counter - 1)
189 $pagination.= "<a href='".$path."$this->_instance=$next"."$ext'>next »
</a
>";
191 $pagination.= "<span
class='disabled'>next »
</span
>";
192 $pagination.= "</div
>\n";