diff options
Diffstat (limited to 'application/bookmark/BookmarkArray.php')
-rw-r--r-- | application/bookmark/BookmarkArray.php | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/application/bookmark/BookmarkArray.php b/application/bookmark/BookmarkArray.php index d87d43b4..67bb3b73 100644 --- a/application/bookmark/BookmarkArray.php +++ b/application/bookmark/BookmarkArray.php | |||
@@ -1,5 +1,7 @@ | |||
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | declare(strict_types=1); | ||
4 | |||
3 | namespace Shaarli\Bookmark; | 5 | namespace Shaarli\Bookmark; |
4 | 6 | ||
5 | use Shaarli\Bookmark\Exception\InvalidBookmarkException; | 7 | use Shaarli\Bookmark\Exception\InvalidBookmarkException; |
@@ -187,13 +189,13 @@ class BookmarkArray implements \Iterator, \Countable, \ArrayAccess | |||
187 | /** | 189 | /** |
188 | * Returns a bookmark offset in bookmarks array from its unique ID. | 190 | * Returns a bookmark offset in bookmarks array from its unique ID. |
189 | * | 191 | * |
190 | * @param int $id Persistent ID of a bookmark. | 192 | * @param int|null $id Persistent ID of a bookmark. |
191 | * | 193 | * |
192 | * @return int Real offset in local array, or null if doesn't exist. | 194 | * @return int Real offset in local array, or null if doesn't exist. |
193 | */ | 195 | */ |
194 | protected function getBookmarkOffset($id) | 196 | protected function getBookmarkOffset(?int $id): ?int |
195 | { | 197 | { |
196 | if (isset($this->ids[$id])) { | 198 | if ($id !== null && isset($this->ids[$id])) { |
197 | return $this->ids[$id]; | 199 | return $this->ids[$id]; |
198 | } | 200 | } |
199 | return null; | 201 | return null; |
@@ -205,7 +207,7 @@ class BookmarkArray implements \Iterator, \Countable, \ArrayAccess | |||
205 | * | 207 | * |
206 | * @return int next ID. | 208 | * @return int next ID. |
207 | */ | 209 | */ |
208 | public function getNextId() | 210 | public function getNextId(): int |
209 | { | 211 | { |
210 | if (!empty($this->ids)) { | 212 | if (!empty($this->ids)) { |
211 | return max(array_keys($this->ids)) + 1; | 213 | return max(array_keys($this->ids)) + 1; |
@@ -214,11 +216,11 @@ class BookmarkArray implements \Iterator, \Countable, \ArrayAccess | |||
214 | } | 216 | } |
215 | 217 | ||
216 | /** | 218 | /** |
217 | * @param $url | 219 | * @param string $url |
218 | * | 220 | * |
219 | * @return Bookmark|null | 221 | * @return Bookmark|null |
220 | */ | 222 | */ |
221 | public function getByUrl($url) | 223 | public function getByUrl(string $url): ?Bookmark |
222 | { | 224 | { |
223 | if (! empty($url) | 225 | if (! empty($url) |
224 | && isset($this->urls[$url]) | 226 | && isset($this->urls[$url]) |
@@ -234,16 +236,17 @@ class BookmarkArray implements \Iterator, \Countable, \ArrayAccess | |||
234 | * | 236 | * |
235 | * Also update the urls and ids mapping arrays. | 237 | * Also update the urls and ids mapping arrays. |
236 | * | 238 | * |
237 | * @param string $order ASC|DESC | 239 | * @param string $order ASC|DESC |
240 | * @param bool $ignoreSticky If set to true, sticky bookmarks won't be first | ||
238 | */ | 241 | */ |
239 | public function reorder($order = 'DESC') | 242 | public function reorder(string $order = 'DESC', bool $ignoreSticky = false): void |
240 | { | 243 | { |
241 | $order = $order === 'ASC' ? -1 : 1; | 244 | $order = $order === 'ASC' ? -1 : 1; |
242 | // Reorder array by dates. | 245 | // Reorder array by dates. |
243 | usort($this->bookmarks, function ($a, $b) use ($order) { | 246 | usort($this->bookmarks, function ($a, $b) use ($order, $ignoreSticky) { |
244 | /** @var $a Bookmark */ | 247 | /** @var $a Bookmark */ |
245 | /** @var $b Bookmark */ | 248 | /** @var $b Bookmark */ |
246 | if ($a->isSticky() !== $b->isSticky()) { | 249 | if (false === $ignoreSticky && $a->isSticky() !== $b->isSticky()) { |
247 | return $a->isSticky() ? -1 : 1; | 250 | return $a->isSticky() ? -1 : 1; |
248 | } | 251 | } |
249 | return $a->getCreated() < $b->getCreated() ? 1 * $order : -1 * $order; | 252 | return $a->getCreated() < $b->getCreated() ? 1 * $order : -1 * $order; |