Passed
Pull Request — master (#154)
by
unknown
02:51
created
src/Libraries/Database/BasePaginator.php 2 patches
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
 	 */
128 128
 	public function lastPageNumber(): int
129 129
 	{
130
-		return (int)ceil($this->total() / $this->perPage);
130
+		return (int) ceil($this->total() / $this->perPage);
131 131
 	}
132 132
 
133 133
 	/**
@@ -189,8 +189,8 @@  discard block
 block discarded – undo
189 189
 
190 190
 	protected function getPageLink($pageNumber, $withBaseUrl = false): ?string
191 191
 	{
192
-		if (!empty($pageNumber)){
193
-			return $this->getUri($withBaseUrl) . self::PER_PAGE .'=' . $this->perPage . '&'. self::PAGE .'=' . $pageNumber;
192
+		if (!empty($pageNumber)) {
193
+			return $this->getUri($withBaseUrl) . self::PER_PAGE . '=' . $this->perPage . '&' . self::PAGE . '=' . $pageNumber;
194 194
 		}
195 195
 		return null;
196 196
 	}
@@ -213,7 +213,7 @@  discard block
 block discarded – undo
213 213
 			return null;
214 214
 		}
215 215
 
216
-		$pagination = '<ul class="'. self::PAGINATION_CLASS .'">';
216
+		$pagination = '<ul class="' . self::PAGINATION_CLASS . '">';
217 217
 
218 218
 		if ($currentPage > 1) {
219 219
 			$pagination .= $this->getPreviousPageItem($this->previousPageLink());
@@ -273,7 +273,7 @@  discard block
 block discarded – undo
273 273
 	protected function getNextPageItem(?string $nextPageLink): string
274 274
 	{
275 275
 		$link = '';
276
-		if (!empty($nextPageLink)){
276
+		if (!empty($nextPageLink)) {
277 277
 			$link = '<li><a href="' . $nextPageLink . '">Next &raquo;</a></li>';
278 278
 		}
279 279
 		return $link;
@@ -286,7 +286,7 @@  discard block
 block discarded – undo
286 286
 	protected function getPreviousPageItem(?string $previousPageLink): string
287 287
 	{
288 288
 		$link = '';
289
-		if (!empty($previousPageLink)){
289
+		if (!empty($previousPageLink)) {
290 290
 			$link = '<li><a href="' . $previousPageLink . '">&laquo; Previous</a></li>';
291 291
 		}
292 292
 		return $link;
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
 	protected function getItemsLinks($pagination, $startPage, $endPage, $currentPage, array $links)
296 296
 	{
297 297
 		for ($i = $startPage; $i <= $endPage; $i++) {
298
-			$active = $i == $currentPage ? 'class="'. self::PAGINATION_CLASS_ACTIVE .'"' : '';
298
+			$active = $i == $currentPage ? 'class="' . self::PAGINATION_CLASS_ACTIVE . '"' : '';
299 299
 			$pagination .= '<li ' . $active . '><a href="' . $links[$i - 1] . '">' . $i . '</a></li>';
300 300
 		}
301 301
 		return $pagination;
Please login to merge, or discard this patch.
Indentation   +296 added lines, -296 removed lines patch added patch discarded remove patch
@@ -4,300 +4,300 @@
 block discarded – undo
4 4
 
5 5
 abstract class BasePaginator implements PaginatorInterface
6 6
 {
7
-	/**
8
-	 * @var string
9
-	 */
10
-	protected const PAGINATION_CLASS = 'pagination';
11
-
12
-	/**
13
-	 * @var string
14
-	 */
15
-	protected const PAGINATION_CLASS_ACTIVE = 'active';
16
-
17
-	/**
18
-	 * @var string
19
-	 */
20
-	protected const PER_PAGE = 'per_page';
21
-
22
-	/**
23
-	 * @var string
24
-	 */
25
-	protected const PAGE = 'page';
26
-
27
-	/**
28
-	 * @var int
29
-	 */
30
-	protected const FIRST_PAGE_NUMBER = 1;
31
-
32
-	/**
33
-	 * @var int
34
-	 */
35
-	protected $total;
36
-
37
-	/**
38
-	 * @var string
39
-	 */
40
-	protected $baseUrl;
41
-
42
-	/**
43
-	 * @var int
44
-	 */
45
-	protected $perPage;
46
-
47
-	/**
48
-	 * @var int
49
-	 */
50
-	protected $page;
51
-
52
-	/**
53
-	 * @return int
54
-	 */
55
-	public function currentPageNumber(): int
56
-	{
57
-		return $this->page;
58
-	}
59
-
60
-	/**
61
-	 * @param bool $withBaseUrl
62
-	 * @return string|null
63
-	 */
64
-	public function currentPageLink(bool $withBaseUrl = false): ?string
65
-	{
66
-		return $this->getPageLink($this->page, $withBaseUrl);
67
-	}
68
-
69
-	/**
70
-	 * @return int|null
71
-	 */
72
-	public function previousPageNumber(): ?int
73
-	{
74
-		$previous = null;
75
-		if ($this->page > 1) {
76
-			$previous = $this->page - 1;
77
-		} elseif ($this->page == 1) {
78
-			$previous = $this->page;
79
-		}
80
-
81
-		return $previous;
82
-	}
83
-
84
-	/**
85
-	 * @param bool $withBaseUrl
86
-	 * @return string|null
87
-	 */
88
-	public function previousPageLink(bool $withBaseUrl = false): ?string
89
-	{
90
-		return $this->getPageLink($this->previousPageNumber(), $withBaseUrl);
91
-	}
92
-
93
-	/**
94
-	 * @return int|null
95
-	 */
96
-	public function nextPageNumber(): ?int
97
-	{
98
-		$next = null;
99
-		if ($this->page < $this->lastPageNumber()) {
100
-			$next = $this->page + 1;
101
-		} elseif ($this->page == $this->lastPageNumber()) {
102
-			$next = $this->page;
103
-		}
104
-		return $next;
105
-	}
106
-
107
-	/**
108
-	 * @param bool $withBaseUrl
109
-	 * @return string|null
110
-	 */
111
-	public function nextPageLink(bool $withBaseUrl = false): ?string
112
-	{
113
-		return $this->getPageLink($this->nextPageNumber(), $withBaseUrl);
114
-	}
115
-
116
-	/**
117
-	 * @param bool $withBaseUrl
118
-	 * @return string|null
119
-	 */
120
-	public function firstPageLink(bool $withBaseUrl = false): ?string
121
-	{
122
-		return $this->getPageLink(self::FIRST_PAGE_NUMBER, $withBaseUrl);
123
-	}
124
-
125
-	/**
126
-	 * @return int
127
-	 */
128
-	public function lastPageNumber(): int
129
-	{
130
-		return (int)ceil($this->total() / $this->perPage);
131
-	}
132
-
133
-	/**
134
-	 * @param bool $withBaseUrl
135
-	 * @return string|null
136
-	 */
137
-	public function lastPageLink(bool $withBaseUrl = false): ?string
138
-	{
139
-		return $this->getPageLink($this->lastPageNumber(), $withBaseUrl);
140
-	}
141
-
142
-	/**
143
-	 * @return int
144
-	 */
145
-	public function perPage(): int
146
-	{
147
-		return $this->perPage;
148
-	}
149
-
150
-	/**
151
-	 * @return int
152
-	 */
153
-	public function total(): int
154
-	{
155
-		return $this->total;
156
-	}
157
-
158
-	/**
159
-	 * @param bool $withBaseUrl
160
-	 * @return array
161
-	 */
162
-	public function links(bool $withBaseUrl = false): array
163
-	{
164
-		$links = [];
165
-		for ($i = 1; $i <= $this->lastPageNumber(); $i++) {
166
-			$links[] = $this->getPageLink($i, $withBaseUrl);
167
-		}
168
-
169
-		return $links;
170
-	}
171
-
172
-	/**
173
-	 * @param bool $withBaseUrl
174
-	 * @return string
175
-	 */
176
-	protected function getUri(bool $withBaseUrl = false): string
177
-	{
178
-		$routeUrl = preg_replace('/([?&](page|per_page)=\d+)/', '', route_uri());
179
-		$routeUrl = preg_replace('/&/', '?', $routeUrl, 1);
180
-		$url = $routeUrl;
181
-
182
-		if ($withBaseUrl) {
183
-			$url = $this->baseUrl . $routeUrl;
184
-		}
185
-
186
-		$delimiter = strpos($url, '?') ? '&' : '?';
187
-		return $url . $delimiter;
188
-	}
189
-
190
-	protected function getPageLink($pageNumber, $withBaseUrl = false): ?string
191
-	{
192
-		if (!empty($pageNumber)){
193
-			return $this->getUri($withBaseUrl) . self::PER_PAGE .'=' . $this->perPage . '&'. self::PAGE .'=' . $pageNumber;
194
-		}
195
-		return null;
196
-	}
197
-
198
-	/**
199
-	 * @param bool $withBaseUrl
200
-	 * @param $pageItemsCount
201
-	 * @return string|null
202
-	 */
203
-	public function getPagination(bool $withBaseUrl = false, $pageItemsCount = null): ?string
204
-	{
205
-		if (!is_null($pageItemsCount) && $pageItemsCount < 3) {
206
-			$pageItemsCount = 3;
207
-		}
208
-
209
-		$currentPage = $this->currentPageNumber();
210
-		$totalPages = $this->lastPageNumber();
211
-
212
-		if ($totalPages <= 1) {
213
-			return null;
214
-		}
215
-
216
-		$pagination = '<ul class="'. self::PAGINATION_CLASS .'">';
217
-
218
-		if ($currentPage > 1) {
219
-			$pagination .= $this->getPreviousPageItem($this->previousPageLink());
220
-		}
221
-
222
-		if ($pageItemsCount) {
223
-			$pagination = $this->getPageItems($pagination, $currentPage, $totalPages, $pageItemsCount, $withBaseUrl);
224
-		}
225
-
226
-		if ($currentPage < $totalPages) {
227
-			$pagination .= $this->getNextPageItem($this->nextPageLink());
228
-		}
229
-
230
-		$pagination .= '</ul>';
231
-
232
-		return $pagination;
233
-	}
234
-
235
-	/**
236
-	 * @param $pagination
237
-	 * @param $currentPage
238
-	 * @param $totalPages
239
-	 * @param $pageItemsCount
240
-	 * @param $withBaseUrl
241
-	 * @return mixed|string
242
-	 */
243
-	protected function getPageItems($pagination, $currentPage, $totalPages, $pageItemsCount, $withBaseUrl = false)
244
-	{
245
-		$startPage = max(1, $currentPage - ceil(($pageItemsCount - 3) / 2));
246
-		$endPage = min($totalPages, $startPage + $pageItemsCount - 3);
247
-		$startPage = max(1, $endPage - $pageItemsCount + 3);
248
-
249
-		if ($startPage > 1) {
250
-			$pagination .= '<li><a href="' . $this->firstPageLink() . '">1</a></li>';
251
-			if ($startPage > 2) {
252
-				$pagination .= '<li><span>...</span></li>';
253
-			}
254
-		}
255
-
256
-		$links = $this->links($withBaseUrl);
257
-		$pagination = $this->getItemsLinks($pagination, $startPage, $endPage, $currentPage, $links);
258
-
259
-		if ($endPage < $totalPages) {
260
-			if ($endPage < $totalPages - 1) {
261
-				$pagination .= '<li><span>...</span></li>';
262
-			}
263
-
264
-			$pagination .= '<li><a href="' . $links[$totalPages - 1] . '">' . $totalPages . '</a></li>';
265
-		}
266
-		return $pagination;
267
-	}
268
-
269
-	/**
270
-	 * @param string|null $nextPageLink
271
-	 * @return string
272
-	 */
273
-	protected function getNextPageItem(?string $nextPageLink): string
274
-	{
275
-		$link = '';
276
-		if (!empty($nextPageLink)){
277
-			$link = '<li><a href="' . $nextPageLink . '">Next &raquo;</a></li>';
278
-		}
279
-		return $link;
280
-	}
281
-
282
-	/**
283
-	 * @param string|null $previousPageLink
284
-	 * @return string
285
-	 */
286
-	protected function getPreviousPageItem(?string $previousPageLink): string
287
-	{
288
-		$link = '';
289
-		if (!empty($previousPageLink)){
290
-			$link = '<li><a href="' . $previousPageLink . '">&laquo; Previous</a></li>';
291
-		}
292
-		return $link;
293
-	}
294
-
295
-	protected function getItemsLinks($pagination, $startPage, $endPage, $currentPage, array $links)
296
-	{
297
-		for ($i = $startPage; $i <= $endPage; $i++) {
298
-			$active = $i == $currentPage ? 'class="'. self::PAGINATION_CLASS_ACTIVE .'"' : '';
299
-			$pagination .= '<li ' . $active . '><a href="' . $links[$i - 1] . '">' . $i . '</a></li>';
300
-		}
301
-		return $pagination;
302
-	}
7
+    /**
8
+     * @var string
9
+     */
10
+    protected const PAGINATION_CLASS = 'pagination';
11
+
12
+    /**
13
+     * @var string
14
+     */
15
+    protected const PAGINATION_CLASS_ACTIVE = 'active';
16
+
17
+    /**
18
+     * @var string
19
+     */
20
+    protected const PER_PAGE = 'per_page';
21
+
22
+    /**
23
+     * @var string
24
+     */
25
+    protected const PAGE = 'page';
26
+
27
+    /**
28
+     * @var int
29
+     */
30
+    protected const FIRST_PAGE_NUMBER = 1;
31
+
32
+    /**
33
+     * @var int
34
+     */
35
+    protected $total;
36
+
37
+    /**
38
+     * @var string
39
+     */
40
+    protected $baseUrl;
41
+
42
+    /**
43
+     * @var int
44
+     */
45
+    protected $perPage;
46
+
47
+    /**
48
+     * @var int
49
+     */
50
+    protected $page;
51
+
52
+    /**
53
+     * @return int
54
+     */
55
+    public function currentPageNumber(): int
56
+    {
57
+        return $this->page;
58
+    }
59
+
60
+    /**
61
+     * @param bool $withBaseUrl
62
+     * @return string|null
63
+     */
64
+    public function currentPageLink(bool $withBaseUrl = false): ?string
65
+    {
66
+        return $this->getPageLink($this->page, $withBaseUrl);
67
+    }
68
+
69
+    /**
70
+     * @return int|null
71
+     */
72
+    public function previousPageNumber(): ?int
73
+    {
74
+        $previous = null;
75
+        if ($this->page > 1) {
76
+            $previous = $this->page - 1;
77
+        } elseif ($this->page == 1) {
78
+            $previous = $this->page;
79
+        }
80
+
81
+        return $previous;
82
+    }
83
+
84
+    /**
85
+     * @param bool $withBaseUrl
86
+     * @return string|null
87
+     */
88
+    public function previousPageLink(bool $withBaseUrl = false): ?string
89
+    {
90
+        return $this->getPageLink($this->previousPageNumber(), $withBaseUrl);
91
+    }
92
+
93
+    /**
94
+     * @return int|null
95
+     */
96
+    public function nextPageNumber(): ?int
97
+    {
98
+        $next = null;
99
+        if ($this->page < $this->lastPageNumber()) {
100
+            $next = $this->page + 1;
101
+        } elseif ($this->page == $this->lastPageNumber()) {
102
+            $next = $this->page;
103
+        }
104
+        return $next;
105
+    }
106
+
107
+    /**
108
+     * @param bool $withBaseUrl
109
+     * @return string|null
110
+     */
111
+    public function nextPageLink(bool $withBaseUrl = false): ?string
112
+    {
113
+        return $this->getPageLink($this->nextPageNumber(), $withBaseUrl);
114
+    }
115
+
116
+    /**
117
+     * @param bool $withBaseUrl
118
+     * @return string|null
119
+     */
120
+    public function firstPageLink(bool $withBaseUrl = false): ?string
121
+    {
122
+        return $this->getPageLink(self::FIRST_PAGE_NUMBER, $withBaseUrl);
123
+    }
124
+
125
+    /**
126
+     * @return int
127
+     */
128
+    public function lastPageNumber(): int
129
+    {
130
+        return (int)ceil($this->total() / $this->perPage);
131
+    }
132
+
133
+    /**
134
+     * @param bool $withBaseUrl
135
+     * @return string|null
136
+     */
137
+    public function lastPageLink(bool $withBaseUrl = false): ?string
138
+    {
139
+        return $this->getPageLink($this->lastPageNumber(), $withBaseUrl);
140
+    }
141
+
142
+    /**
143
+     * @return int
144
+     */
145
+    public function perPage(): int
146
+    {
147
+        return $this->perPage;
148
+    }
149
+
150
+    /**
151
+     * @return int
152
+     */
153
+    public function total(): int
154
+    {
155
+        return $this->total;
156
+    }
157
+
158
+    /**
159
+     * @param bool $withBaseUrl
160
+     * @return array
161
+     */
162
+    public function links(bool $withBaseUrl = false): array
163
+    {
164
+        $links = [];
165
+        for ($i = 1; $i <= $this->lastPageNumber(); $i++) {
166
+            $links[] = $this->getPageLink($i, $withBaseUrl);
167
+        }
168
+
169
+        return $links;
170
+    }
171
+
172
+    /**
173
+     * @param bool $withBaseUrl
174
+     * @return string
175
+     */
176
+    protected function getUri(bool $withBaseUrl = false): string
177
+    {
178
+        $routeUrl = preg_replace('/([?&](page|per_page)=\d+)/', '', route_uri());
179
+        $routeUrl = preg_replace('/&/', '?', $routeUrl, 1);
180
+        $url = $routeUrl;
181
+
182
+        if ($withBaseUrl) {
183
+            $url = $this->baseUrl . $routeUrl;
184
+        }
185
+
186
+        $delimiter = strpos($url, '?') ? '&' : '?';
187
+        return $url . $delimiter;
188
+    }
189
+
190
+    protected function getPageLink($pageNumber, $withBaseUrl = false): ?string
191
+    {
192
+        if (!empty($pageNumber)){
193
+            return $this->getUri($withBaseUrl) . self::PER_PAGE .'=' . $this->perPage . '&'. self::PAGE .'=' . $pageNumber;
194
+        }
195
+        return null;
196
+    }
197
+
198
+    /**
199
+     * @param bool $withBaseUrl
200
+     * @param $pageItemsCount
201
+     * @return string|null
202
+     */
203
+    public function getPagination(bool $withBaseUrl = false, $pageItemsCount = null): ?string
204
+    {
205
+        if (!is_null($pageItemsCount) && $pageItemsCount < 3) {
206
+            $pageItemsCount = 3;
207
+        }
208
+
209
+        $currentPage = $this->currentPageNumber();
210
+        $totalPages = $this->lastPageNumber();
211
+
212
+        if ($totalPages <= 1) {
213
+            return null;
214
+        }
215
+
216
+        $pagination = '<ul class="'. self::PAGINATION_CLASS .'">';
217
+
218
+        if ($currentPage > 1) {
219
+            $pagination .= $this->getPreviousPageItem($this->previousPageLink());
220
+        }
221
+
222
+        if ($pageItemsCount) {
223
+            $pagination = $this->getPageItems($pagination, $currentPage, $totalPages, $pageItemsCount, $withBaseUrl);
224
+        }
225
+
226
+        if ($currentPage < $totalPages) {
227
+            $pagination .= $this->getNextPageItem($this->nextPageLink());
228
+        }
229
+
230
+        $pagination .= '</ul>';
231
+
232
+        return $pagination;
233
+    }
234
+
235
+    /**
236
+     * @param $pagination
237
+     * @param $currentPage
238
+     * @param $totalPages
239
+     * @param $pageItemsCount
240
+     * @param $withBaseUrl
241
+     * @return mixed|string
242
+     */
243
+    protected function getPageItems($pagination, $currentPage, $totalPages, $pageItemsCount, $withBaseUrl = false)
244
+    {
245
+        $startPage = max(1, $currentPage - ceil(($pageItemsCount - 3) / 2));
246
+        $endPage = min($totalPages, $startPage + $pageItemsCount - 3);
247
+        $startPage = max(1, $endPage - $pageItemsCount + 3);
248
+
249
+        if ($startPage > 1) {
250
+            $pagination .= '<li><a href="' . $this->firstPageLink() . '">1</a></li>';
251
+            if ($startPage > 2) {
252
+                $pagination .= '<li><span>...</span></li>';
253
+            }
254
+        }
255
+
256
+        $links = $this->links($withBaseUrl);
257
+        $pagination = $this->getItemsLinks($pagination, $startPage, $endPage, $currentPage, $links);
258
+
259
+        if ($endPage < $totalPages) {
260
+            if ($endPage < $totalPages - 1) {
261
+                $pagination .= '<li><span>...</span></li>';
262
+            }
263
+
264
+            $pagination .= '<li><a href="' . $links[$totalPages - 1] . '">' . $totalPages . '</a></li>';
265
+        }
266
+        return $pagination;
267
+    }
268
+
269
+    /**
270
+     * @param string|null $nextPageLink
271
+     * @return string
272
+     */
273
+    protected function getNextPageItem(?string $nextPageLink): string
274
+    {
275
+        $link = '';
276
+        if (!empty($nextPageLink)){
277
+            $link = '<li><a href="' . $nextPageLink . '">Next &raquo;</a></li>';
278
+        }
279
+        return $link;
280
+    }
281
+
282
+    /**
283
+     * @param string|null $previousPageLink
284
+     * @return string
285
+     */
286
+    protected function getPreviousPageItem(?string $previousPageLink): string
287
+    {
288
+        $link = '';
289
+        if (!empty($previousPageLink)){
290
+            $link = '<li><a href="' . $previousPageLink . '">&laquo; Previous</a></li>';
291
+        }
292
+        return $link;
293
+    }
294
+
295
+    protected function getItemsLinks($pagination, $startPage, $endPage, $currentPage, array $links)
296
+    {
297
+        for ($i = $startPage; $i <= $endPage; $i++) {
298
+            $active = $i == $currentPage ? 'class="'. self::PAGINATION_CLASS_ACTIVE .'"' : '';
299
+            $pagination .= '<li ' . $active . '><a href="' . $links[$i - 1] . '">' . $i . '</a></li>';
300
+        }
301
+        return $pagination;
302
+    }
303 303
 }
304 304
\ No newline at end of file
Please login to merge, or discard this patch.