1 | <?php |
||
13 | class Paginator extends DataComponent { |
||
14 | |||
15 | /** @var int */ |
||
16 | private $_perPage; |
||
17 | |||
18 | /** @var int */ |
||
19 | private $_currentPage; |
||
20 | |||
21 | /** @var int */ |
||
22 | private $_surroundingPages = 2; |
||
23 | |||
24 | /** @var array */ |
||
25 | private $_pageSymbols = ['first' => 'first', 'last' => 'last', 'next' => '→', 'previous' => '←']; |
||
26 | |||
27 | /** |
||
28 | * Paginator constructor. |
||
29 | * @param int $perPage |
||
30 | */ |
||
31 | 10 | public function __construct(int $perPage = 15) |
|
35 | |||
36 | /** |
||
37 | * How many entries per page? |
||
38 | * |
||
39 | * @param int $perPage |
||
40 | * @return Paginator |
||
41 | */ |
||
42 | 1 | public function entriesPerPage($perPage = 15) : Paginator |
|
48 | |||
49 | /** |
||
50 | * How many surrounding pages should be shown? |
||
51 | * |
||
52 | * @param int $count |
||
53 | * @return Paginator |
||
54 | */ |
||
55 | 2 | public function surroundingPages($count = 2) : Paginator |
|
61 | |||
62 | /** |
||
63 | * @param array $pageSymbols |
||
64 | * @return Paginator |
||
65 | */ |
||
66 | 1 | public function pageSymbols(array $pageSymbols) : Paginator |
|
72 | |||
73 | /** |
||
74 | * Render the page links. |
||
75 | * |
||
76 | * @return string |
||
77 | * @throws \RuntimeException |
||
78 | */ |
||
79 | 6 | public function render() : string |
|
94 | |||
95 | /** |
||
96 | * Renders a list item with a page link. |
||
97 | * |
||
98 | * @param int $pagenumber |
||
99 | * @param string $url |
||
100 | * @param string|null $symbol |
||
101 | * |
||
102 | * @return string |
||
103 | */ |
||
104 | 5 | private function _renderListItem(int $pagenumber, ? string $url, ? string $symbol = null) : string |
|
113 | |||
114 | /** |
||
115 | * @return null|string |
||
116 | * @throws \RuntimeException |
||
117 | */ |
||
118 | 5 | private function _getFirstPageUrl() : ? string |
|
127 | |||
128 | /** |
||
129 | * Generate URL to jump to {$pageNumber}. |
||
130 | * |
||
131 | * @param int $pageNumber |
||
132 | * @return string |
||
133 | * |
||
134 | * @throws \RuntimeException |
||
135 | */ |
||
136 | 5 | private function _buildPageUrl(int $pageNumber) : string |
|
143 | |||
144 | /** |
||
145 | * @return null|string |
||
146 | * @throws \RuntimeException |
||
147 | */ |
||
148 | 5 | private function _getPreviousPageUrl() : ? string |
|
158 | |||
159 | /** |
||
160 | * Renders a list of pages. |
||
161 | * |
||
162 | * @return string |
||
163 | * @throws \RuntimeException |
||
164 | */ |
||
165 | 5 | private function _renderPageList() : string |
|
177 | |||
178 | /** |
||
179 | * @return int |
||
180 | */ |
||
181 | 5 | private function _getEndPage() : int |
|
188 | |||
189 | /** |
||
190 | * @return int |
||
191 | */ |
||
192 | 8 | public function pageCount() : int |
|
207 | |||
208 | /** |
||
209 | * @return int |
||
210 | */ |
||
211 | 5 | private function _getStartPage() : int |
|
217 | |||
218 | /** |
||
219 | * @return null|string |
||
220 | * @throws \RuntimeException |
||
221 | */ |
||
222 | 5 | private function _getNextPageUrl() : ? string |
|
231 | |||
232 | /** |
||
233 | * @return null|string |
||
234 | * @throws \RuntimeException |
||
235 | */ |
||
236 | 5 | private function _getLastPageUrl() : ? string |
|
246 | |||
247 | /** |
||
248 | * @return Builder |
||
249 | */ |
||
250 | 2 | protected function _shapeData() : Builder |
|
259 | |||
260 | 10 | protected function _afterInit() : void |
|
264 | } |