<?php
+declare(strict_types=1);
+
namespace Shaarli\Bookmark;
use Shaarli\Bookmark\Exception\InvalidBookmarkException;
$realOffset = $this->getBookmarkOffset($offset);
$url = $this->bookmarks[$realOffset]->getUrl();
unset($this->urls[$url]);
- unset($this->ids[$realOffset]);
+ unset($this->ids[$offset]);
unset($this->bookmarks[$realOffset]);
}
/**
* Returns a bookmark offset in bookmarks array from its unique ID.
*
- * @param int $id Persistent ID of a bookmark.
+ * @param int|null $id Persistent ID of a bookmark.
*
* @return int Real offset in local array, or null if doesn't exist.
*/
- protected function getBookmarkOffset($id)
+ protected function getBookmarkOffset(?int $id): ?int
{
- if (isset($this->ids[$id])) {
+ if ($id !== null && isset($this->ids[$id])) {
return $this->ids[$id];
}
return null;
*
* @return int next ID.
*/
- public function getNextId()
+ public function getNextId(): int
{
if (!empty($this->ids)) {
return max(array_keys($this->ids)) + 1;
}
/**
- * @param $url
+ * @param string $url
*
* @return Bookmark|null
*/
- public function getByUrl($url)
+ public function getByUrl(string $url): ?Bookmark
{
if (! empty($url)
&& isset($this->urls[$url])
*
* Also update the urls and ids mapping arrays.
*
- * @param string $order ASC|DESC
+ * @param string $order ASC|DESC
+ * @param bool $ignoreSticky If set to true, sticky bookmarks won't be first
*/
- public function reorder($order = 'DESC')
+ public function reorder(string $order = 'DESC', bool $ignoreSticky = false): void
{
$order = $order === 'ASC' ? -1 : 1;
// Reorder array by dates.
- usort($this->bookmarks, function ($a, $b) use ($order) {
+ usort($this->bookmarks, function ($a, $b) use ($order, $ignoreSticky) {
/** @var $a Bookmark */
/** @var $b Bookmark */
- if ($a->isSticky() !== $b->isSticky()) {
+ if (false === $ignoreSticky && $a->isSticky() !== $b->isSticky()) {
return $a->isSticky() ? -1 : 1;
}
return $a->getCreated() < $b->getCreated() ? 1 * $order : -1 * $order;