<?php
+use Shaarli\Bookmark\LinkDB;
+
/**
* Class LinkFilter.
*
<?php
+use Shaarli\Bookmark\LinkDB;
+
/**
* Get cURL callback function for CURLOPT_WRITEFUNCTION
*
<?php
use Psr\Log\LogLevel;
+use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager;
use Shaarli\History;
use Shaarli\NetscapeBookmarkParser\NetscapeBookmarkParser;
<?php
+
+use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigJson;
use Shaarli\Config\ConfigPhp;
use Shaarli\Config\ConfigManager;
*/
protected function setLinkDb($conf)
{
- $linkDb = new \LinkDB(
+ $linkDb = new \Shaarli\Bookmark\LinkDB(
$conf->get('resource.datastore'),
true,
$conf->get('privacy.hide_public_links'),
protected $conf;
/**
- * @var \LinkDB
+ * @var \Shaarli\Bookmark\LinkDB
*/
protected $linkDb;
<?php
+namespace Shaarli\Bookmark;
+
+use ArrayAccess;
+use Countable;
+use DateTime;
+use Iterator;
+use LinkFilter;
+use LinkNotFoundException;
use Shaarli\Exceptions\IOException;
use Shaarli\FileUtils;
*
* 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 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).
*/
public function __construct(
$redirector = '',
$redirectorEncode = true
) {
+
$this->datastore = $datastore;
$this->loggedIn = $isLoggedIn;
$this->hidePublicLinks = $hidePublicLinks;
if (!isset($value['id']) || empty($value['url'])) {
die(t('Internal Error: A link should always have an id and URL.'));
}
- if (($offset !== null && ! is_int($offset)) || ! is_int($value['id'])) {
+ if (($offset !== null && !is_int($offset)) || !is_int($value['id'])) {
die(t('You must specify an integer as a key.'));
}
if ($offset !== null && $offset !== $value['id']) {
$this->links = array();
$link = array(
'id' => 1,
- 'title'=> t('The personal, minimalist, super-fast, database free, bookmarking service'),
- 'url'=>'https://shaarli.readthedocs.io',
- 'description'=>t(
+ 'title' => t('The personal, minimalist, super-fast, database free, bookmarking service'),
+ 'url' => 'https://shaarli.readthedocs.io',
+ 'description' => t(
'Welcome to Shaarli! This is your first public bookmark. '
- .'To edit or delete me, you must first login.
+ . 'To edit or delete me, you must first login.
To learn how to use Shaarli, consult the link "Documentation" at the bottom of this page.
You use the community supported version of the original Shaarli project, by Sebastien Sauvage.'
),
- 'private'=>0,
- 'created'=> new DateTime(),
- 'tags'=>'opensource software'
+ 'private' => 0,
+ 'created' => new DateTime(),
+ 'tags' => 'opensource software'
);
$link['shorturl'] = link_small_hash($link['created'], $link['id']);
$this->links[1] = $link;
$link = array(
'id' => 0,
- 'title'=> t('My secret stuff... - Pastebin.com'),
- 'url'=>'http://sebsauvage.net/paste/?8434b27936c09649#bR7XsXhoTiLcqCpQbmOpBi3rq2zzQUC5hBI7ZT1O3x8=',
- 'description'=> t('Shhhh! I\'m a private link only YOU can see. You can delete me too.'),
- 'private'=>1,
- 'created'=> new DateTime('1 minute ago'),
- 'tags'=>'secretstuff',
+ 'title' => t('My secret stuff... - Pastebin.com'),
+ 'url' => 'http://sebsauvage.net/paste/?8434b27936c09649#bR7XsXhoTiLcqCpQbmOpBi3rq2zzQUC5hBI7ZT1O3x8=',
+ 'description' => t('Shhhh! I\'m a private link only YOU can see. You can delete me too.'),
+ 'private' => 1,
+ 'created' => new DateTime('1 minute ago'),
+ 'tags' => 'secretstuff',
);
$link['shorturl'] = link_small_hash($link['created'], $link['id']);
$this->links[0] = $link;
$toremove = array();
foreach ($this->links as $key => &$link) {
- if (! $this->loggedIn && $link['private'] != 0) {
+ if (!$this->loggedIn && $link['private'] != 0) {
// Transition for not upgraded databases.
unset($this->links[$key]);
continue;
sanitizeLink($link);
// Remove private tags if the user is not logged in.
- if (! $this->loggedIn) {
+ if (!$this->loggedIn) {
$link['tags'] = preg_replace('/(^|\s+)\.[^($|\s)]+\s*/', ' ', $link['tags']);
}
}
// To be able to load links before running the update, and prepare the update
- if (! isset($link['created'])) {
+ if (!isset($link['created'])) {
$link['id'] = $link['linkdate'];
$link['created'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['linkdate']);
- if (! empty($link['updated'])) {
+ if (!empty($link['updated'])) {
$link['updated'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['updated']);
}
$link['shorturl'] = smallHash($link['linkdate']);
/**
* 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 string $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 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
*/
<?php
namespace Shaarli\Feed;
+
/**
* Simple cache system, mainly for the RSS/ATOM feeds
*/
namespace Shaarli\Feed;
use DateTime;
-use LinkDB;
+use Shaarli\Bookmark\LinkDB;
/**
* FeedBuilder class.
public static $DEFAULT_NB_LINKS = 50;
/**
- * @var LinkDB instance.
+ * @var \Shaarli\Bookmark\LinkDB instance.
*/
protected $linkDB;
/**
* Feed constructor.
*
- * @param LinkDB $linkDB LinkDB instance.
- * @param string $feedType Type of feed.
- * @param array $serverInfo $_SERVER.
- * @param array $userInput $_GET.
- * @param boolean $isLoggedIn True if the user is currently logged in, false otherwise.
+ * @param \Shaarli\Bookmark\LinkDB $linkDB LinkDB instance.
+ * @param string $feedType Type of feed.
+ * @param array $serverInfo $_SERVER.
+ * @param array $userInput $_GET.
+ * @param boolean $isLoggedIn True if the user is currently logged in,
+ * false otherwise.
*/
public function __construct($linkDB, $feedType, $serverInfo, $userInput, $isLoggedIn)
{
use ApplicationUtils;
use Exception;
-use LinkDB;
+use Shaarli\Bookmark\LinkDB;
use RainTPL;
use Shaarli\Config\ConfigManager;
use Shaarli\Thumbnailer;
"Shaarli\\Api\\": "application/api/",
"Shaarli\\Api\\Controllers\\": "application/api/controllers",
"Shaarli\\Api\\Exceptions\\": "application/api/exceptions",
+ "Shaarli\\Bookmark\\": "application/bookmark",
"Shaarli\\Config\\": "application/config/",
"Shaarli\\Config\\Exception\\": "application/config/exception",
"Shaarli\\Exceptions\\": "application/exceptions",
require_once 'application/http/UrlUtils.php';
require_once 'application/FileUtils.php';
require_once 'application/History.php';
-require_once 'application/LinkDB.php';
require_once 'application/LinkFilter.php';
require_once 'application/LinkUtils.php';
require_once 'application/NetscapeBookmarkUtils.php';
require_once 'application/PluginManager.php';
require_once 'application/Router.php';
require_once 'application/Updater.php';
+
+use \Shaarli\Bookmark\LinkDB;
use \Shaarli\Config\ConfigManager;
use \Shaarli\Feed\CachedPage;
use \Shaarli\Feed\FeedBuilder;
<?php
+use Shaarli\Bookmark\LinkDB;
+
require_once 'application/LinkFilter.php';
/**
<?php
+use Shaarli\Bookmark\LinkDB;
+
require_once 'application/NetscapeBookmarkUtils.php';
/**
require_once 'application/NetscapeBookmarkUtils.php';
+use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager;
use Shaarli\History;
<?php
+use Shaarli\Bookmark\LinkDB;
+
require_once 'application/Updater.php';
/**
<?php
+
+use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigJson;
use Shaarli\Config\ConfigManager;
use Shaarli\Config\ConfigPhp;
$this->container = new Container();
$this->container['conf'] = $this->conf;
- $this->container['db'] = new \LinkDB(self::$testDatastore, true, false);
+ $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->container['history'] = null;
$this->controller = new Info($this->container);
protected $refDB = null;
/**
- * @var \LinkDB instance.
+ * @var \Shaarli\Bookmark\LinkDB instance.
*/
protected $linkDB;
$this->conf = new ConfigManager('tests/utils/config/configJson');
$this->refDB = new \ReferenceLinkDB();
$this->refDB->write(self::$testDatastore);
- $this->linkDB = new \LinkDB(self::$testDatastore, true, false);
+ $this->linkDB = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$refHistory = new \ReferenceHistory();
$refHistory->write(self::$testHistory);
$this->history = new \Shaarli\History(self::$testHistory);
$this->assertEquals(204, $response->getStatusCode());
$this->assertEmpty((string) $response->getBody());
- $this->linkDB = new \LinkDB(self::$testDatastore, true, false);
+ $this->linkDB = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->assertFalse(isset($this->linkDB[$id]));
$historyEntry = $this->history->getHistory()[0];
$this->container = new Container();
$this->container['conf'] = $this->conf;
- $this->container['db'] = new \LinkDB(self::$testDatastore, true, false);
+ $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->container['history'] = null;
$this->controller = new Links($this->container);
$this->assertEquals('sTuff', $data['tags'][0]);
$this->assertEquals(false, $data['private']);
$this->assertEquals(
- \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20150310_114651')->format(\DateTime::ATOM),
+ \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20150310_114651')->format(\DateTime::ATOM),
$data['created']
);
$this->assertEmpty($data['updated']);
$this->container = new Container();
$this->container['conf'] = $this->conf;
- $this->container['db'] = new \LinkDB(self::$testDatastore, true, false);
+ $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->container['history'] = null;
$this->controller = new Links($this->container);
$this->assertEquals('sTuff', $first['tags'][0]);
$this->assertEquals(false, $first['private']);
$this->assertEquals(
- \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20150310_114651')->format(\DateTime::ATOM),
+ \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20150310_114651')->format(\DateTime::ATOM),
$first['created']
);
$this->assertEmpty($first['updated']);
// Update date
$this->assertEquals(
- \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20160803_093033')->format(\DateTime::ATOM),
+ \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20160803_093033')->format(\DateTime::ATOM),
$link['updated']
);
}
$this->container = new Container();
$this->container['conf'] = $this->conf;
- $this->container['db'] = new \LinkDB(self::$testDatastore, true, false);
+ $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->container['history'] = new \Shaarli\History(self::$testHistory);
$this->controller = new Links($this->container);
$this->assertEquals(['gnu', 'media', 'web', '.hidden', 'hashtag'], $data['tags']);
$this->assertEquals(false, $data['private']);
$this->assertEquals(
- \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20130614_184135'),
+ \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20130614_184135'),
\DateTime::createFromFormat(\DateTime::ATOM, $data['created'])
);
$this->assertEquals(
- \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20130615_184230'),
+ \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20130615_184230'),
\DateTime::createFromFormat(\DateTime::ATOM, $data['updated'])
);
}
$this->container = new Container();
$this->container['conf'] = $this->conf;
- $this->container['db'] = new \LinkDB(self::$testDatastore, true, false);
+ $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->container['history'] = new \Shaarli\History(self::$testHistory);
$this->controller = new Links($this->container);
$this->assertEquals(['gnu', 'media', 'web', '.hidden', 'hashtag'], $data['tags']);
$this->assertEquals(false, $data['private']);
$this->assertEquals(
- \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20130614_184135'),
+ \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20130614_184135'),
\DateTime::createFromFormat(\DateTime::ATOM, $data['created'])
);
$this->assertEquals(
- \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20130615_184230'),
+ \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20130615_184230'),
\DateTime::createFromFormat(\DateTime::ATOM, $data['updated'])
);
}
protected $refDB = null;
/**
- * @var \LinkDB instance.
+ * @var \Shaarli\Bookmark\LinkDB instance.
*/
protected $linkDB;
$this->conf = new ConfigManager('tests/utils/config/configJson');
$this->refDB = new \ReferenceLinkDB();
$this->refDB->write(self::$testDatastore);
- $this->linkDB = new \LinkDB(self::$testDatastore, true, false);
+ $this->linkDB = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$refHistory = new \ReferenceHistory();
$refHistory->write(self::$testHistory);
$this->history = new \Shaarli\History(self::$testHistory);
$this->assertEquals(204, $response->getStatusCode());
$this->assertEmpty((string) $response->getBody());
- $this->linkDB = new \LinkDB(self::$testDatastore, true, false);
+ $this->linkDB = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$tags = $this->linkDB->linksCountPerTag();
$this->assertFalse(isset($tags[$tagName]));
$this->assertEquals(204, $response->getStatusCode());
$this->assertEmpty((string) $response->getBody());
- $this->linkDB = new \LinkDB(self::$testDatastore, true, false);
+ $this->linkDB = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$tags = $this->linkDB->linksCountPerTag();
$this->assertFalse(isset($tags[$tagName]));
$this->assertTrue($tags[strtolower($tagName)] > 0);
$this->container = new Container();
$this->container['conf'] = $this->conf;
- $this->container['db'] = new \LinkDB(self::$testDatastore, true, false);
+ $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->container['history'] = null;
$this->controller = new Tags($this->container);
protected $container;
/**
- * @var \LinkDB instance.
+ * @var \Shaarli\Bookmark\LinkDB instance.
*/
protected $linkDB;
$this->container = new Container();
$this->container['conf'] = $this->conf;
- $this->linkDB = new \LinkDB(self::$testDatastore, true, false);
+ $this->linkDB = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->container['db'] = $this->linkDB;
$this->container['history'] = null;
protected $container;
/**
- * @var \LinkDB instance.
+ * @var \Shaarli\Bookmark\LinkDB instance.
*/
protected $linkDB;
$this->container = new Container();
$this->container['conf'] = $this->conf;
- $this->linkDB = new \LinkDB(self::$testDatastore, true, false);
+ $this->linkDB = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
$this->container['db'] = $this->linkDB;
$this->container['history'] = $this->history;
* Link datastore tests
*/
+namespace Shaarli\Bookmark;
+
+use DateTime;
+use LinkNotFoundException;
+use ReferenceLinkDB;
+use ReflectionClass;
+use Shaarli;
+
require_once 'application/feed/Cache.php';
-require_once 'application/FileUtils.php';
-require_once 'application/LinkDB.php';
require_once 'application/Utils.php';
require_once 'tests/utils/ReferenceLinkDB.php';
/**
* Unitary tests for LinkDB
*/
-class LinkDBTest extends PHPUnit_Framework_TestCase
+class LinkDBTest extends \PHPUnit\Framework\TestCase
{
// datastore to test write operations
protected static $testDatastore = 'sandbox/datastore.php';
*/
protected static function getMethod($name)
{
- $class = new ReflectionClass('LinkDB');
+ $class = new ReflectionClass('Shaarli\Bookmark\LinkDB');
$method = $class->getMethod($name);
$method->setAccessible(true);
return $method;
$link = array(
'id' => 42,
- 'title'=>'an additional link',
- 'url'=>'http://dum.my',
- 'description'=>'One more',
- 'private'=>0,
- 'created'=> DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150518_190000'),
- 'tags'=>'unit test'
+ 'title' => 'an additional link',
+ 'url' => 'http://dum.my',
+ 'description' => 'One more',
+ 'private' => 0,
+ 'created' => DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150518_190000'),
+ 'tags' => 'unit test'
);
$testDB[$link['id']] = $link;
$testDB->save('tests');
namespace Shaarli\Feed;
use DateTime;
-use LinkDB;
+use Shaarli\Bookmark\LinkDB;
use ReferenceLinkDB;
-require_once 'application/LinkDB.php';
-
/**
* FeedBuilderTest class.
*
namespace Shaarli\Http;
-
/**
* Unitary tests for URL utilities
*/
<?php
+
+use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager;
require_once 'plugins/isso/isso.php';
<?php
+
+use Shaarli\Bookmark\LinkDB;
+
/**
* Populates a reference datastore to test LinkDB
*/