Passed
Pull Request — master (#154)
by
unknown
02:47
created
src/Libraries/Database/Sleekdb/Statements/Result.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -46,15 +46,15 @@
 block discarded – undo
46 46
         return $result;
47 47
     }
48 48
 
49
-	  /**
50
-	   * @param int $perPage
51
-	   * @param int $currentPage
52
-	   * @return PaginatorInterface
53
-	   */
54
-	  public function paginate(int $perPage, int $currentPage = 1): PaginatorInterface
55
-	  {
56
-		  return new Paginator($this, $perPage, $currentPage);
57
-	  }
49
+        /**
50
+         * @param int $perPage
51
+         * @param int $currentPage
52
+         * @return PaginatorInterface
53
+         */
54
+        public function paginate(int $perPage, int $currentPage = 1): PaginatorInterface
55
+        {
56
+            return new Paginator($this, $perPage, $currentPage);
57
+        }
58 58
 
59 59
     /**
60 60
      * @inheritDoc
Please login to merge, or discard this patch.
src/Libraries/Database/Sleekdb/SleekDbal.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -182,20 +182,20 @@
 block discarded – undo
182 182
         self::$connection = $config;
183 183
     }
184 184
 
185
-		public function setData(array $data)
186
-		{
187
-			$this->data = $data;
188
-		}
189
-
190
-		public function setModifiedFields($modifiedFields)
191
-		{
192
-			$this->modifiedFields = $modifiedFields;
193
-		}
194
-
195
-		public function setIsNew($isNew)
196
-		{
197
-			$this->isNew = $isNew;
198
-		}
185
+        public function setData(array $data)
186
+        {
187
+            $this->data = $data;
188
+        }
189
+
190
+        public function setModifiedFields($modifiedFields)
191
+        {
192
+            $this->modifiedFields = $modifiedFields;
193
+        }
194
+
195
+        public function setIsNew($isNew)
196
+        {
197
+            $this->isNew = $isNew;
198
+        }
199 199
 
200 200
     /**
201 201
      * @inheritDoc
Please login to merge, or discard this patch.
src/Libraries/Database/Idiorm/Statements/Result.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -35,15 +35,15 @@
 block discarded – undo
35 35
         return $this->getOrmModel()->find_many();
36 36
     }
37 37
 
38
-	  /**
39
-	   * @param int $perPage
40
-	   * @param int $currentPage
41
-	   * @return PaginatorInterface
42
-	   */
43
-	  public function paginate(int $perPage, int $currentPage = 1): PaginatorInterface
44
-	  {
45
-	  	  return new Paginator($this, $perPage, $currentPage);
46
-	  }
38
+        /**
39
+         * @param int $perPage
40
+         * @param int $currentPage
41
+         * @return PaginatorInterface
42
+         */
43
+        public function paginate(int $perPage, int $currentPage = 1): PaginatorInterface
44
+        {
45
+            return new Paginator($this, $perPage, $currentPage);
46
+        }
47 47
 
48 48
     /**
49 49
      * @inheritDoc
Please login to merge, or discard this patch.
src/Libraries/Database/DbalInterface.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -144,12 +144,12 @@
 block discarded – undo
144 144
      */
145 145
     public function get();
146 146
 
147
-		/**
148
-		 * @param int $perPage
149
-		 * @param int $currentPage
150
-		 * @return PaginatorInterface
151
-		 */
152
-		public function paginate(int $perPage, int $currentPage = 1): PaginatorInterface;
147
+        /**
148
+         * @param int $perPage
149
+         * @param int $currentPage
150
+         * @return PaginatorInterface
151
+         */
152
+        public function paginate(int $perPage, int $currentPage = 1): PaginatorInterface;
153 153
 
154 154
     /**
155 155
      * Returns the count
Please login to merge, or discard this patch.
src/Libraries/Database/PaginatorInterface.php 1 patch
Indentation   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -4,35 +4,35 @@
 block discarded – undo
4 4
 
5 5
 interface PaginatorInterface
6 6
 {
7
-	public function getPagination(bool $withBaseUrl): ?string;
7
+    public function getPagination(bool $withBaseUrl): ?string;
8 8
 
9
-	public function currentPageNumber(): int;
9
+    public function currentPageNumber(): int;
10 10
 
11
-	public function currentPageLink(bool $withBaseUrl): ?string;
11
+    public function currentPageLink(bool $withBaseUrl): ?string;
12 12
 
13
-	public function previousPageLink(bool $withBaseUrl): ?string;
13
+    public function previousPageLink(bool $withBaseUrl): ?string;
14 14
 
15
-	public function previousPageNumber(): ?int;
15
+    public function previousPageNumber(): ?int;
16 16
 
17
-	public function firstPageLink(bool $withBaseUrl): ?string;
17
+    public function firstPageLink(bool $withBaseUrl): ?string;
18 18
 
19
-	public function nextPageLink(bool $withBaseUrl): ?string;
19
+    public function nextPageLink(bool $withBaseUrl): ?string;
20 20
 
21
-	public function nextPageNumber(): ?int;
21
+    public function nextPageNumber(): ?int;
22 22
 
23
-	public function lastPageLink(bool $withBaseUrl): ?string;
23
+    public function lastPageLink(bool $withBaseUrl): ?string;
24 24
 	
25
-	public function lastPageNumber();
25
+    public function lastPageNumber();
26 26
 
27
-	public function firstItem();
27
+    public function firstItem();
28 28
 
29
-	public function lastItem();
29
+    public function lastItem();
30 30
 
31
-	public function perPage();
31
+    public function perPage();
32 32
 
33
-	public function total();
33
+    public function total();
34 34
 
35
-	public function links(bool $withBaseUrl);
35
+    public function links(bool $withBaseUrl);
36 36
 
37
-	public function data();
37
+    public function data();
38 38
 }
Please login to merge, or discard this patch.
src/Libraries/Database/Sleekdb/Paginator.php 2 patches
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -11,67 +11,67 @@
 block discarded – undo
11 11
 
12 12
 class Paginator extends BasePaginator
13 13
 {
14
-	/**
15
-	 * @var SleekDbal
16
-	 */
17
-	private $dbal;
14
+    /**
15
+     * @var SleekDbal
16
+     */
17
+    private $dbal;
18 18
 
19
-	/**
20
-	 * @var array
21
-	 */
22
-	public $data;
19
+    /**
20
+     * @var array
21
+     */
22
+    public $data;
23 23
 
24
-	/**
25
-	 * @param $sleekDbal
26
-	 * @param int $perPage
27
-	 * @param int $page
28
-	 * @throws DatabaseException
29
-	 * @throws ModelException
30
-	 * @throws IOException
31
-	 * @throws InvalidArgumentException
32
-	 * @throws InvalidConfigurationException
33
-	 */
34
-	public function __construct($sleekDbal, int $perPage, int $page = 1)
35
-	{
36
-		/** @var SleekDbal $sleekDbal */
37
-		$this->total = count($sleekDbal->getBuilder()->getQuery()->fetch());
38
-		$this->dbal = $sleekDbal;
39
-		$this->dbal->limit($perPage)->offset($perPage * ($page - 1));
40
-		$this->data = $this->dbal->getBuilder()->getQuery()->fetch();
41
-		$this->perPage = $perPage;
42
-		$this->page = $page;
43
-		$this->baseUrl = base_url();
44
-	}
24
+    /**
25
+     * @param $sleekDbal
26
+     * @param int $perPage
27
+     * @param int $page
28
+     * @throws DatabaseException
29
+     * @throws ModelException
30
+     * @throws IOException
31
+     * @throws InvalidArgumentException
32
+     * @throws InvalidConfigurationException
33
+     */
34
+    public function __construct($sleekDbal, int $perPage, int $page = 1)
35
+    {
36
+        /** @var SleekDbal $sleekDbal */
37
+        $this->total = count($sleekDbal->getBuilder()->getQuery()->fetch());
38
+        $this->dbal = $sleekDbal;
39
+        $this->dbal->limit($perPage)->offset($perPage * ($page - 1));
40
+        $this->data = $this->dbal->getBuilder()->getQuery()->fetch();
41
+        $this->perPage = $perPage;
42
+        $this->page = $page;
43
+        $this->baseUrl = base_url();
44
+    }
45 45
 
46
-	/**
47
-	 * @return mixed
48
-	 */
49
-	public function firstItem()
50
-	{
51
-		return $this->data[array_key_first($this->data)];
52
-	}
46
+    /**
47
+     * @return mixed
48
+     */
49
+    public function firstItem()
50
+    {
51
+        return $this->data[array_key_first($this->data)];
52
+    }
53 53
 
54
-	/**
55
-	 * @return mixed
56
-	 */
57
-	public function lastItem()
58
-	{
59
-		return $this->data[array_key_last($this->data)];
60
-	}
54
+    /**
55
+     * @return mixed
56
+     */
57
+    public function lastItem()
58
+    {
59
+        return $this->data[array_key_last($this->data)];
60
+    }
61 61
 
62
-	/**
63
-	 * @return array|SleekDbal[]
64
-	 */
65
-	public function data(): array
66
-	{
67
-		$result = array_map(function ($element) {
68
-			$item = clone $this->dbal;
69
-			$item->setData($element);
70
-			$item->setModifiedFields($element);
71
-			$item->setIsNew(false);
72
-			return $item;
73
-		}, $this->data);
62
+    /**
63
+     * @return array|SleekDbal[]
64
+     */
65
+    public function data(): array
66
+    {
67
+        $result = array_map(function ($element) {
68
+            $item = clone $this->dbal;
69
+            $item->setData($element);
70
+            $item->setModifiedFields($element);
71
+            $item->setIsNew(false);
72
+            return $item;
73
+        }, $this->data);
74 74
 
75
-		return $result ?? [];
76
-	}
75
+        return $result ?? [];
76
+    }
77 77
 }
78 78
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -64,7 +64,7 @@
 block discarded – undo
64 64
 	 */
65 65
 	public function data(): array
66 66
 	{
67
-		$result = array_map(function ($element) {
67
+		$result = array_map(function($element) {
68 68
 			$item = clone $this->dbal;
69 69
 			$item->setData($element);
70 70
 			$item->setModifiedFields($element);
Please login to merge, or discard this patch.
src/Libraries/Database/Idiorm/Paginator.php 2 patches
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -8,61 +8,61 @@
 block discarded – undo
8 8
 
9 9
 class Paginator extends BasePaginator
10 10
 {
11
-	/**
12
-	 * @var IdiormDbal
13
-	 */
14
-	private $dbal;
11
+    /**
12
+     * @var IdiormDbal
13
+     */
14
+    private $dbal;
15 15
 
16
-	/**
17
-	 * @var array|IdiormResultSet
18
-	 */
19
-	public $data;
16
+    /**
17
+     * @var array|IdiormResultSet
18
+     */
19
+    public $data;
20 20
 
21
-	/**
22
-	 * @param $idiormDbal
23
-	 * @param int $perPage
24
-	 * @param int $page
25
-	 * @throws DatabaseException
26
-	 */
27
-	public function __construct($idiormDbal, int $perPage, int $page = 1)
28
-	{
29
-		/** @var IdiormDbal $idiormDbal */
30
-		$this->total = $idiormDbal->getOrmModel()->count();
31
-		$this->dbal = $idiormDbal;
32
-		$this->dbal->limit($perPage)->offset($perPage * ($page - 1));
33
-		$this->data = $this->dbal->getOrmModel()->find_many();
34
-		$this->perPage = $perPage;
35
-		$this->page = $page;
36
-		$this->baseUrl = base_dir();
37
-	}
21
+    /**
22
+     * @param $idiormDbal
23
+     * @param int $perPage
24
+     * @param int $page
25
+     * @throws DatabaseException
26
+     */
27
+    public function __construct($idiormDbal, int $perPage, int $page = 1)
28
+    {
29
+        /** @var IdiormDbal $idiormDbal */
30
+        $this->total = $idiormDbal->getOrmModel()->count();
31
+        $this->dbal = $idiormDbal;
32
+        $this->dbal->limit($perPage)->offset($perPage * ($page - 1));
33
+        $this->data = $this->dbal->getOrmModel()->find_many();
34
+        $this->perPage = $perPage;
35
+        $this->page = $page;
36
+        $this->baseUrl = base_dir();
37
+    }
38 38
 
39
-	/**
40
-	 * @return mixed
41
-	 */
42
-	public function firstItem()
43
-	{
44
-		if (!is_array($this->data)){
45
-			$this->data = $this->data->as_array();
46
-		}
47
-		return $this->data[array_key_first($this->data)];
48
-	}
39
+    /**
40
+     * @return mixed
41
+     */
42
+    public function firstItem()
43
+    {
44
+        if (!is_array($this->data)){
45
+            $this->data = $this->data->as_array();
46
+        }
47
+        return $this->data[array_key_first($this->data)];
48
+    }
49 49
 
50
-	/**
51
-	 * @return mixed
52
-	 */
53
-	public function lastItem()
54
-	{
55
-		if (!is_array($this->data)){
56
-			$this->data = $this->data->as_array();
57
-		}
58
-		return $this->data[array_key_last($this->data)];
59
-	}
50
+    /**
51
+     * @return mixed
52
+     */
53
+    public function lastItem()
54
+    {
55
+        if (!is_array($this->data)){
56
+            $this->data = $this->data->as_array();
57
+        }
58
+        return $this->data[array_key_last($this->data)];
59
+    }
60 60
 
61
-	/**
62
-	 * @return array|IdiormResultSet
63
-	 */
64
-	public function data()
65
-	{
66
-		return $this->data ?? [];
67
-	}
61
+    /**
62
+     * @return array|IdiormResultSet
63
+     */
64
+    public function data()
65
+    {
66
+        return $this->data ?? [];
67
+    }
68 68
 }
69 69
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
 	 */
42 42
 	public function firstItem()
43 43
 	{
44
-		if (!is_array($this->data)){
44
+		if (!is_array($this->data)) {
45 45
 			$this->data = $this->data->as_array();
46 46
 		}
47 47
 		return $this->data[array_key_first($this->data)];
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
 	 */
53 53
 	public function lastItem()
54 54
 	{
55
-		if (!is_array($this->data)){
55
+		if (!is_array($this->data)) {
56 56
 			$this->data = $this->data->as_array();
57 57
 		}
58 58
 		return $this->data[array_key_last($this->data)];
Please login to merge, or discard this patch.
src/Libraries/Database/BasePaginator.php 2 patches
Indentation   +344 added lines, -344 removed lines patch added patch discarded remove patch
@@ -4,349 +4,349 @@
 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 const MINIMUM_PAGE_ITEMS_COUNT = 3;
36
-
37
-	/**
38
-	 * @var int
39
-	 */
40
-	protected const EDGE_PADDING = 3;
41
-
42
-	/**
43
-	 * @var int
44
-	 */
45
-	protected $total;
46
-
47
-	/**
48
-	 * @var string
49
-	 */
50
-	protected $baseUrl;
51
-
52
-	/**
53
-	 * @var int
54
-	 */
55
-	protected $perPage;
56
-
57
-	/**
58
-	 * @var int
59
-	 */
60
-	protected $page;
61
-
62
-	/**
63
-	 * @return int
64
-	 */
65
-	public function currentPageNumber(): int
66
-	{
67
-		return $this->page;
68
-	}
69
-
70
-	/**
71
-	 * @param bool $withBaseUrl
72
-	 * @return string|null
73
-	 */
74
-	public function currentPageLink(bool $withBaseUrl = false): ?string
75
-	{
76
-		return $this->getPageLink($this->page, $withBaseUrl);
77
-	}
78
-
79
-	/**
80
-	 * @return int|null
81
-	 */
82
-	public function previousPageNumber(): ?int
83
-	{
84
-		$previous = null;
85
-		if ($this->page > 1) {
86
-			$previous = $this->page - 1;
87
-		} elseif ($this->page == 1) {
88
-			$previous = $this->page;
89
-		}
90
-
91
-		return $previous;
92
-	}
93
-
94
-	/**
95
-	 * @param bool $withBaseUrl
96
-	 * @return string|null
97
-	 */
98
-	public function previousPageLink(bool $withBaseUrl = false): ?string
99
-	{
100
-		return $this->getPageLink($this->previousPageNumber(), $withBaseUrl);
101
-	}
102
-
103
-	/**
104
-	 * @return int|null
105
-	 */
106
-	public function nextPageNumber(): ?int
107
-	{
108
-		$next = null;
109
-		if ($this->page < $this->lastPageNumber()) {
110
-			$next = $this->page + 1;
111
-		} elseif ($this->page == $this->lastPageNumber()) {
112
-			$next = $this->page;
113
-		}
114
-		return $next;
115
-	}
116
-
117
-	/**
118
-	 * @param bool $withBaseUrl
119
-	 * @return string|null
120
-	 */
121
-	public function nextPageLink(bool $withBaseUrl = false): ?string
122
-	{
123
-		return $this->getPageLink($this->nextPageNumber(), $withBaseUrl);
124
-	}
125
-
126
-	/**
127
-	 * @param bool $withBaseUrl
128
-	 * @return string|null
129
-	 */
130
-	public function firstPageLink(bool $withBaseUrl = false): ?string
131
-	{
132
-		return $this->getPageLink(self::FIRST_PAGE_NUMBER, $withBaseUrl);
133
-	}
134
-
135
-	/**
136
-	 * @return int
137
-	 */
138
-	public function lastPageNumber(): int
139
-	{
140
-		return (int)ceil($this->total() / $this->perPage);
141
-	}
142
-
143
-	/**
144
-	 * @param bool $withBaseUrl
145
-	 * @return string|null
146
-	 */
147
-	public function lastPageLink(bool $withBaseUrl = false): ?string
148
-	{
149
-		return $this->getPageLink($this->lastPageNumber(), $withBaseUrl);
150
-	}
151
-
152
-	/**
153
-	 * @return int
154
-	 */
155
-	public function perPage(): int
156
-	{
157
-		return $this->perPage;
158
-	}
159
-
160
-	/**
161
-	 * @return int
162
-	 */
163
-	public function total(): int
164
-	{
165
-		return $this->total;
166
-	}
167
-
168
-	/**
169
-	 * @param bool $withBaseUrl
170
-	 * @return array
171
-	 */
172
-	public function links(bool $withBaseUrl = false): array
173
-	{
174
-		$links = [];
175
-		for ($i = 1; $i <= $this->lastPageNumber(); $i++) {
176
-			$links[] = $this->getPageLink($i, $withBaseUrl);
177
-		}
178
-
179
-		return $links;
180
-	}
181
-
182
-	/**
183
-	 * @param bool $withBaseUrl
184
-	 * @return string
185
-	 */
186
-	protected function getUri(bool $withBaseUrl = false): string
187
-	{
188
-		$routeUrl = preg_replace('/([?&](page|per_page)=\d+)/', '', route_uri());
189
-		$routeUrl = preg_replace('/&/', '?', $routeUrl, 1);
190
-		$url = $routeUrl;
191
-
192
-		if ($withBaseUrl) {
193
-			$url = $this->baseUrl . $routeUrl;
194
-		}
195
-
196
-		$delimiter = strpos($url, '?') ? '&' : '?';
197
-		return $url . $delimiter;
198
-	}
199
-
200
-	/**
201
-	 * @param $pageNumber
202
-	 * @param bool $withBaseUrl
203
-	 * @return string|null
204
-	 */
205
-	protected function getPageLink($pageNumber, bool $withBaseUrl = false): ?string
206
-	{
207
-		if (!empty($pageNumber)){
208
-			return $this->getUri($withBaseUrl) . self::PER_PAGE .'=' . $this->perPage . '&'. self::PAGE .'=' . $pageNumber;
209
-		}
210
-		return null;
211
-	}
212
-
213
-	/**
214
-	 * @param bool $withBaseUrl
215
-	 * @param $pageItemsCount
216
-	 * @return string|null
217
-	 */
218
-	public function getPagination(bool $withBaseUrl = false, $pageItemsCount = null): ?string
219
-	{
220
-		$totalPages = $this->lastPageNumber();
221
-		if ($totalPages <= 1) {
222
-			return null;
223
-		}
224
-
225
-		if (!is_null($pageItemsCount) && $pageItemsCount < self::MINIMUM_PAGE_ITEMS_COUNT) {
226
-			$pageItemsCount = self::MINIMUM_PAGE_ITEMS_COUNT;
227
-		}
228
-
229
-		$pagination = '<ul class="'. self::PAGINATION_CLASS .'">';
230
-		$currentPage = $this->currentPageNumber();
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 const MINIMUM_PAGE_ITEMS_COUNT = 3;
36
+
37
+    /**
38
+     * @var int
39
+     */
40
+    protected const EDGE_PADDING = 3;
41
+
42
+    /**
43
+     * @var int
44
+     */
45
+    protected $total;
46
+
47
+    /**
48
+     * @var string
49
+     */
50
+    protected $baseUrl;
51
+
52
+    /**
53
+     * @var int
54
+     */
55
+    protected $perPage;
56
+
57
+    /**
58
+     * @var int
59
+     */
60
+    protected $page;
61
+
62
+    /**
63
+     * @return int
64
+     */
65
+    public function currentPageNumber(): int
66
+    {
67
+        return $this->page;
68
+    }
69
+
70
+    /**
71
+     * @param bool $withBaseUrl
72
+     * @return string|null
73
+     */
74
+    public function currentPageLink(bool $withBaseUrl = false): ?string
75
+    {
76
+        return $this->getPageLink($this->page, $withBaseUrl);
77
+    }
78
+
79
+    /**
80
+     * @return int|null
81
+     */
82
+    public function previousPageNumber(): ?int
83
+    {
84
+        $previous = null;
85
+        if ($this->page > 1) {
86
+            $previous = $this->page - 1;
87
+        } elseif ($this->page == 1) {
88
+            $previous = $this->page;
89
+        }
90
+
91
+        return $previous;
92
+    }
93
+
94
+    /**
95
+     * @param bool $withBaseUrl
96
+     * @return string|null
97
+     */
98
+    public function previousPageLink(bool $withBaseUrl = false): ?string
99
+    {
100
+        return $this->getPageLink($this->previousPageNumber(), $withBaseUrl);
101
+    }
102
+
103
+    /**
104
+     * @return int|null
105
+     */
106
+    public function nextPageNumber(): ?int
107
+    {
108
+        $next = null;
109
+        if ($this->page < $this->lastPageNumber()) {
110
+            $next = $this->page + 1;
111
+        } elseif ($this->page == $this->lastPageNumber()) {
112
+            $next = $this->page;
113
+        }
114
+        return $next;
115
+    }
116
+
117
+    /**
118
+     * @param bool $withBaseUrl
119
+     * @return string|null
120
+     */
121
+    public function nextPageLink(bool $withBaseUrl = false): ?string
122
+    {
123
+        return $this->getPageLink($this->nextPageNumber(), $withBaseUrl);
124
+    }
125
+
126
+    /**
127
+     * @param bool $withBaseUrl
128
+     * @return string|null
129
+     */
130
+    public function firstPageLink(bool $withBaseUrl = false): ?string
131
+    {
132
+        return $this->getPageLink(self::FIRST_PAGE_NUMBER, $withBaseUrl);
133
+    }
134
+
135
+    /**
136
+     * @return int
137
+     */
138
+    public function lastPageNumber(): int
139
+    {
140
+        return (int)ceil($this->total() / $this->perPage);
141
+    }
142
+
143
+    /**
144
+     * @param bool $withBaseUrl
145
+     * @return string|null
146
+     */
147
+    public function lastPageLink(bool $withBaseUrl = false): ?string
148
+    {
149
+        return $this->getPageLink($this->lastPageNumber(), $withBaseUrl);
150
+    }
151
+
152
+    /**
153
+     * @return int
154
+     */
155
+    public function perPage(): int
156
+    {
157
+        return $this->perPage;
158
+    }
159
+
160
+    /**
161
+     * @return int
162
+     */
163
+    public function total(): int
164
+    {
165
+        return $this->total;
166
+    }
167
+
168
+    /**
169
+     * @param bool $withBaseUrl
170
+     * @return array
171
+     */
172
+    public function links(bool $withBaseUrl = false): array
173
+    {
174
+        $links = [];
175
+        for ($i = 1; $i <= $this->lastPageNumber(); $i++) {
176
+            $links[] = $this->getPageLink($i, $withBaseUrl);
177
+        }
178
+
179
+        return $links;
180
+    }
181
+
182
+    /**
183
+     * @param bool $withBaseUrl
184
+     * @return string
185
+     */
186
+    protected function getUri(bool $withBaseUrl = false): string
187
+    {
188
+        $routeUrl = preg_replace('/([?&](page|per_page)=\d+)/', '', route_uri());
189
+        $routeUrl = preg_replace('/&/', '?', $routeUrl, 1);
190
+        $url = $routeUrl;
191
+
192
+        if ($withBaseUrl) {
193
+            $url = $this->baseUrl . $routeUrl;
194
+        }
195
+
196
+        $delimiter = strpos($url, '?') ? '&' : '?';
197
+        return $url . $delimiter;
198
+    }
199
+
200
+    /**
201
+     * @param $pageNumber
202
+     * @param bool $withBaseUrl
203
+     * @return string|null
204
+     */
205
+    protected function getPageLink($pageNumber, bool $withBaseUrl = false): ?string
206
+    {
207
+        if (!empty($pageNumber)){
208
+            return $this->getUri($withBaseUrl) . self::PER_PAGE .'=' . $this->perPage . '&'. self::PAGE .'=' . $pageNumber;
209
+        }
210
+        return null;
211
+    }
212
+
213
+    /**
214
+     * @param bool $withBaseUrl
215
+     * @param $pageItemsCount
216
+     * @return string|null
217
+     */
218
+    public function getPagination(bool $withBaseUrl = false, $pageItemsCount = null): ?string
219
+    {
220
+        $totalPages = $this->lastPageNumber();
221
+        if ($totalPages <= 1) {
222
+            return null;
223
+        }
224
+
225
+        if (!is_null($pageItemsCount) && $pageItemsCount < self::MINIMUM_PAGE_ITEMS_COUNT) {
226
+            $pageItemsCount = self::MINIMUM_PAGE_ITEMS_COUNT;
227
+        }
228
+
229
+        $pagination = '<ul class="'. self::PAGINATION_CLASS .'">';
230
+        $currentPage = $this->currentPageNumber();
231 231
 		
232
-		if ($currentPage > 1) {
233
-			$pagination .= $this->getPreviousPageItem($this->previousPageLink());
234
-		}
235
-
236
-		if ($pageItemsCount) {
237
-			$links = $this->links($withBaseUrl);
238
-			$startPage = $this->calculateStartPage($currentPage, $pageItemsCount);
239
-			$endPage = $this->calculateEndPage($startPage, $totalPages, $pageItemsCount);
240
-			$pagination = $this->addFirstPageLink($pagination, $startPage);
241
-			$pagination = $this->getItemsLinks($pagination, $startPage, $endPage, $currentPage, $links);
242
-			$pagination = $this->addLastPageLink($pagination, $endPage, $totalPages, $links);
243
-		}
244
-
245
-		if ($currentPage < $totalPages) {
246
-			$pagination .= $this->getNextPageItem($this->nextPageLink());
247
-		}
248
-
249
-		$pagination .= '</ul>';
250
-
251
-		return $pagination;
252
-	}
253
-
254
-	/**
255
-	 * @param string|null $nextPageLink
256
-	 * @return string
257
-	 */
258
-	protected function getNextPageItem(?string $nextPageLink): string
259
-	{
260
-		$link = '';
261
-		if (!empty($nextPageLink)){
262
-			$link = '<li><a href="' . $nextPageLink . '">Next &raquo;</a></li>';
263
-		}
264
-		return $link;
265
-	}
266
-
267
-	/**
268
-	 * @param string|null $previousPageLink
269
-	 * @return string
270
-	 */
271
-	protected function getPreviousPageItem(?string $previousPageLink): string
272
-	{
273
-		$link = '';
274
-		if (!empty($previousPageLink)){
275
-			$link = '<li><a href="' . $previousPageLink . '">&laquo; Previous</a></li>';
276
-		}
277
-		return $link;
278
-	}
279
-
280
-	/**
281
-	 * @param $pagination
282
-	 * @param $startPage
283
-	 * @param $endPage
284
-	 * @param $currentPage
285
-	 * @param array $links
286
-	 * @return mixed|string
287
-	 */
288
-	protected function getItemsLinks($pagination, $startPage, $endPage, $currentPage, array $links)
289
-	{
290
-		for ($i = $startPage; $i <= $endPage; $i++) {
291
-			$active = $i == $currentPage ? 'class="'. self::PAGINATION_CLASS_ACTIVE .'"' : '';
292
-			$pagination .= '<li ' . $active . '><a href="' . $links[$i - 1] . '">' . $i . '</a></li>';
293
-		}
294
-		return $pagination;
295
-	}
296
-
297
-	/**
298
-	 * @param $currentPage
299
-	 * @param $pageItemsCount
300
-	 * @return mixed
301
-	 */
302
-	protected function calculateStartPage($currentPage, $pageItemsCount)
303
-	{
304
-		return max(1, $currentPage - ceil(($pageItemsCount - self::EDGE_PADDING) / 2));
305
-	}
306
-
307
-	/**
308
-	 * @param $startPage
309
-	 * @param $totalPages
310
-	 * @param $pageItemsCount
311
-	 * @return mixed
312
-	 */
313
-	protected function calculateEndPage($startPage, $totalPages, $pageItemsCount)
314
-	{
315
-		$endPage = min($totalPages, $startPage + $pageItemsCount - self::EDGE_PADDING);
316
-		return max(1, $endPage - $pageItemsCount + self::EDGE_PADDING);
317
-	}
318
-
319
-	/**
320
-	 * @param $pagination
321
-	 * @param $startPage
322
-	 * @return mixed|string
323
-	 */
324
-	protected function addFirstPageLink($pagination, $startPage)
325
-	{
326
-		if ($startPage > 1) {
327
-			$pagination .= '<li><a href="' . $this->firstPageLink() . '">'. self::FIRST_PAGE_NUMBER .'</a></li>';
328
-			if ($startPage > 2) {
329
-				$pagination .= '<li><span>...</span></li>';
330
-			}
331
-		}
332
-		return $pagination;
333
-	}
334
-
335
-	/**
336
-	 * @param $pagination
337
-	 * @param $endPage
338
-	 * @param $totalPages
339
-	 * @param $links
340
-	 * @return mixed|string
341
-	 */
342
-	protected function addLastPageLink($pagination, $endPage, $totalPages, $links)
343
-	{
344
-		if ($endPage < $totalPages) {
345
-			if ($endPage < $totalPages - 1) {
346
-				$pagination .= '<li><span>...</span></li>';
347
-			}
348
-			$pagination .= '<li><a href="' . $links[$totalPages - 1] . '">' . $totalPages . '</a></li>';
349
-		}
350
-		return $pagination;
351
-	}
232
+        if ($currentPage > 1) {
233
+            $pagination .= $this->getPreviousPageItem($this->previousPageLink());
234
+        }
235
+
236
+        if ($pageItemsCount) {
237
+            $links = $this->links($withBaseUrl);
238
+            $startPage = $this->calculateStartPage($currentPage, $pageItemsCount);
239
+            $endPage = $this->calculateEndPage($startPage, $totalPages, $pageItemsCount);
240
+            $pagination = $this->addFirstPageLink($pagination, $startPage);
241
+            $pagination = $this->getItemsLinks($pagination, $startPage, $endPage, $currentPage, $links);
242
+            $pagination = $this->addLastPageLink($pagination, $endPage, $totalPages, $links);
243
+        }
244
+
245
+        if ($currentPage < $totalPages) {
246
+            $pagination .= $this->getNextPageItem($this->nextPageLink());
247
+        }
248
+
249
+        $pagination .= '</ul>';
250
+
251
+        return $pagination;
252
+    }
253
+
254
+    /**
255
+     * @param string|null $nextPageLink
256
+     * @return string
257
+     */
258
+    protected function getNextPageItem(?string $nextPageLink): string
259
+    {
260
+        $link = '';
261
+        if (!empty($nextPageLink)){
262
+            $link = '<li><a href="' . $nextPageLink . '">Next &raquo;</a></li>';
263
+        }
264
+        return $link;
265
+    }
266
+
267
+    /**
268
+     * @param string|null $previousPageLink
269
+     * @return string
270
+     */
271
+    protected function getPreviousPageItem(?string $previousPageLink): string
272
+    {
273
+        $link = '';
274
+        if (!empty($previousPageLink)){
275
+            $link = '<li><a href="' . $previousPageLink . '">&laquo; Previous</a></li>';
276
+        }
277
+        return $link;
278
+    }
279
+
280
+    /**
281
+     * @param $pagination
282
+     * @param $startPage
283
+     * @param $endPage
284
+     * @param $currentPage
285
+     * @param array $links
286
+     * @return mixed|string
287
+     */
288
+    protected function getItemsLinks($pagination, $startPage, $endPage, $currentPage, array $links)
289
+    {
290
+        for ($i = $startPage; $i <= $endPage; $i++) {
291
+            $active = $i == $currentPage ? 'class="'. self::PAGINATION_CLASS_ACTIVE .'"' : '';
292
+            $pagination .= '<li ' . $active . '><a href="' . $links[$i - 1] . '">' . $i . '</a></li>';
293
+        }
294
+        return $pagination;
295
+    }
296
+
297
+    /**
298
+     * @param $currentPage
299
+     * @param $pageItemsCount
300
+     * @return mixed
301
+     */
302
+    protected function calculateStartPage($currentPage, $pageItemsCount)
303
+    {
304
+        return max(1, $currentPage - ceil(($pageItemsCount - self::EDGE_PADDING) / 2));
305
+    }
306
+
307
+    /**
308
+     * @param $startPage
309
+     * @param $totalPages
310
+     * @param $pageItemsCount
311
+     * @return mixed
312
+     */
313
+    protected function calculateEndPage($startPage, $totalPages, $pageItemsCount)
314
+    {
315
+        $endPage = min($totalPages, $startPage + $pageItemsCount - self::EDGE_PADDING);
316
+        return max(1, $endPage - $pageItemsCount + self::EDGE_PADDING);
317
+    }
318
+
319
+    /**
320
+     * @param $pagination
321
+     * @param $startPage
322
+     * @return mixed|string
323
+     */
324
+    protected function addFirstPageLink($pagination, $startPage)
325
+    {
326
+        if ($startPage > 1) {
327
+            $pagination .= '<li><a href="' . $this->firstPageLink() . '">'. self::FIRST_PAGE_NUMBER .'</a></li>';
328
+            if ($startPage > 2) {
329
+                $pagination .= '<li><span>...</span></li>';
330
+            }
331
+        }
332
+        return $pagination;
333
+    }
334
+
335
+    /**
336
+     * @param $pagination
337
+     * @param $endPage
338
+     * @param $totalPages
339
+     * @param $links
340
+     * @return mixed|string
341
+     */
342
+    protected function addLastPageLink($pagination, $endPage, $totalPages, $links)
343
+    {
344
+        if ($endPage < $totalPages) {
345
+            if ($endPage < $totalPages - 1) {
346
+                $pagination .= '<li><span>...</span></li>';
347
+            }
348
+            $pagination .= '<li><a href="' . $links[$totalPages - 1] . '">' . $totalPages . '</a></li>';
349
+        }
350
+        return $pagination;
351
+    }
352 352
 }
353 353
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -137,7 +137,7 @@  discard block
 block discarded – undo
137 137
 	 */
138 138
 	public function lastPageNumber(): int
139 139
 	{
140
-		return (int)ceil($this->total() / $this->perPage);
140
+		return (int) ceil($this->total() / $this->perPage);
141 141
 	}
142 142
 
143 143
 	/**
@@ -204,8 +204,8 @@  discard block
 block discarded – undo
204 204
 	 */
205 205
 	protected function getPageLink($pageNumber, bool $withBaseUrl = false): ?string
206 206
 	{
207
-		if (!empty($pageNumber)){
208
-			return $this->getUri($withBaseUrl) . self::PER_PAGE .'=' . $this->perPage . '&'. self::PAGE .'=' . $pageNumber;
207
+		if (!empty($pageNumber)) {
208
+			return $this->getUri($withBaseUrl) . self::PER_PAGE . '=' . $this->perPage . '&' . self::PAGE . '=' . $pageNumber;
209 209
 		}
210 210
 		return null;
211 211
 	}
@@ -226,7 +226,7 @@  discard block
 block discarded – undo
226 226
 			$pageItemsCount = self::MINIMUM_PAGE_ITEMS_COUNT;
227 227
 		}
228 228
 
229
-		$pagination = '<ul class="'. self::PAGINATION_CLASS .'">';
229
+		$pagination = '<ul class="' . self::PAGINATION_CLASS . '">';
230 230
 		$currentPage = $this->currentPageNumber();
231 231
 		
232 232
 		if ($currentPage > 1) {
@@ -258,7 +258,7 @@  discard block
 block discarded – undo
258 258
 	protected function getNextPageItem(?string $nextPageLink): string
259 259
 	{
260 260
 		$link = '';
261
-		if (!empty($nextPageLink)){
261
+		if (!empty($nextPageLink)) {
262 262
 			$link = '<li><a href="' . $nextPageLink . '">Next &raquo;</a></li>';
263 263
 		}
264 264
 		return $link;
@@ -271,7 +271,7 @@  discard block
 block discarded – undo
271 271
 	protected function getPreviousPageItem(?string $previousPageLink): string
272 272
 	{
273 273
 		$link = '';
274
-		if (!empty($previousPageLink)){
274
+		if (!empty($previousPageLink)) {
275 275
 			$link = '<li><a href="' . $previousPageLink . '">&laquo; Previous</a></li>';
276 276
 		}
277 277
 		return $link;
@@ -288,7 +288,7 @@  discard block
 block discarded – undo
288 288
 	protected function getItemsLinks($pagination, $startPage, $endPage, $currentPage, array $links)
289 289
 	{
290 290
 		for ($i = $startPage; $i <= $endPage; $i++) {
291
-			$active = $i == $currentPage ? 'class="'. self::PAGINATION_CLASS_ACTIVE .'"' : '';
291
+			$active = $i == $currentPage ? 'class="' . self::PAGINATION_CLASS_ACTIVE . '"' : '';
292 292
 			$pagination .= '<li ' . $active . '><a href="' . $links[$i - 1] . '">' . $i . '</a></li>';
293 293
 		}
294 294
 		return $pagination;
@@ -324,7 +324,7 @@  discard block
 block discarded – undo
324 324
 	protected function addFirstPageLink($pagination, $startPage)
325 325
 	{
326 326
 		if ($startPage > 1) {
327
-			$pagination .= '<li><a href="' . $this->firstPageLink() . '">'. self::FIRST_PAGE_NUMBER .'</a></li>';
327
+			$pagination .= '<li><a href="' . $this->firstPageLink() . '">' . self::FIRST_PAGE_NUMBER . '</a></li>';
328 328
 			if ($startPage > 2) {
329 329
 				$pagination .= '<li><span>...</span></li>';
330 330
 			}
Please login to merge, or discard this patch.