use Countable;
use DateTime;
use Iterator;
-use LinkFilter;
-use LinkNotFoundException;
+use Shaarli\Bookmark\Exception\LinkNotFoundException;
use Shaarli\Exceptions\IOException;
use Shaarli\FileUtils;
* - private: Is this link private? 0=no, other value=yes
* - tags: tags attached to this entry (separated by spaces)
* - title Title of the link
- * - url URL of the link. Used for displayable links (no redirector, relative, etc.).
- * Can be absolute or relative.
- * Relative URLs are permalinks (e.g.'?m-ukcw')
- * - real_url Absolute processed URL.
+ * - url URL of the link. Used for displayable links.
+ * Can be absolute or relative in the database but the relative links
+ * will be converted to absolute ones in templates.
+ * - real_url Raw URL in stored in the DB (absolute or relative).
* - shorturl Permalink smallhash
*
* Implements 3 interfaces:
// Hide public links
private $hidePublicLinks;
- // link redirector set in user settings.
- private $redirector;
-
- /**
- * Set this to `true` to urlencode link behind redirector link, `false` to leave it untouched.
- *
- * Example:
- * anonym.to needs clean URL while dereferer.org needs urlencoded URL.
- *
- * @var boolean $redirectorEncode parameter: true or false
- */
- private $redirectorEncode;
-
/**
* Creates a new LinkDB
*
* Checks if the datastore exists; else, attempts to create a dummy one.
*
- * @param string $datastore datastore file path.
- * @param boolean $isLoggedIn is the user logged in?
- * @param boolean $hidePublicLinks if true all links are private.
- * @param string $redirector link redirector set in user settings.
- * @param boolean $redirectorEncode Enable urlencode on redirected urls (default: true).
+ * @param string $datastore datastore file path.
+ * @param boolean $isLoggedIn is the user logged in?
+ * @param boolean $hidePublicLinks if true all links are private.
*/
public function __construct(
$datastore,
$isLoggedIn,
- $hidePublicLinks,
- $redirector = '',
- $redirectorEncode = true
+ $hidePublicLinks
) {
-
+
$this->datastore = $datastore;
$this->loggedIn = $isLoggedIn;
$this->hidePublicLinks = $hidePublicLinks;
- $this->redirector = $redirector;
- $this->redirectorEncode = $redirectorEncode === true;
$this->check();
$this->read();
}
),
'private' => 0,
'created' => new DateTime(),
- 'tags' => 'opensource software'
+ 'tags' => 'opensource software',
+ 'sticky' => false,
);
$link['shorturl'] = link_small_hash($link['created'], $link['id']);
$this->links[1] = $link;
'private' => 1,
'created' => new DateTime('1 minute ago'),
'tags' => 'secretstuff',
+ 'sticky' => false,
);
$link['shorturl'] = link_small_hash($link['created'], $link['id']);
$this->links[0] = $link;
$link['tags'] = preg_replace('/(^|\s+)\.[^($|\s)]+\s*/', ' ', $link['tags']);
}
- // Do not use the redirector for internal links (Shaarli note URL starting with a '?').
- if (!empty($this->redirector) && !startsWith($link['url'], '?')) {
- $link['real_url'] = $this->redirector;
- if ($this->redirectorEncode) {
- $link['real_url'] .= urlencode(unescape($link['url']));
- } else {
- $link['real_url'] .= $link['url'];
- }
- } else {
- $link['real_url'] = $link['url'];
- }
+ $link['real_url'] = $link['url'];
+
+ $link['sticky'] = isset($link['sticky']) ? $link['sticky'] : false;
// To be able to load links before running the update, and prepare the update
if (!isset($link['created'])) {
/**
* Filter links according to search parameters.
*
- * @param array $filterRequest Search request content. Supported keys:
+ * @param array $filterRequest Search request content. Supported keys:
* - searchtags: list of tags
* - searchterm: term search
- * @param bool $casesensitive Optional: Perform case sensitive filter
- * @param string $visibility return only all/private/public links
- * @param string $untaggedonly return only untagged links
+ * @param bool $casesensitive Optional: Perform case sensitive filter
+ * @param string $visibility return only all/private/public links
+ * @param bool $untaggedonly return only untagged links
*
* @return array filtered links, all links if no suitable filter was provided.
*/
$visibility = 'all',
$untaggedonly = false
) {
-
+
// Filter link database according to parameters.
$searchtags = isset($filterRequest['searchtags']) ? escape($filterRequest['searchtags']) : '';
$searchterm = isset($filterRequest['searchterm']) ? escape($filterRequest['searchterm']) : '';
/**
* Returns the list tags appearing in the links with the given tags
*
- * @param array $filteringTags tags selecting the links to consider
- * @param string $visibility process only all/private/public links
+ * @param array $filteringTags tags selecting the links to consider
+ * @param string $visibility process only all/private/public links
*
* @return array tag => linksCount
*/
* Rename or delete a tag across all links.
*
* @param string $from Tag to rename
- * @param string $to New tag. If none is provided, the from tag will be deleted
+ * @param string $to New tag. If none is provided, the from tag will be deleted
*
* @return array|bool List of altered links or false on error
*/