Tags starting with a dot '.' are now private.
They can only be seen and searched when logged in.
Fixes #315
foreach ($this->_links as &$link) {
// Keep the list of the mapping URLs-->linkdate up-to-date.
$this->_urls[$link['url']] = $link['linkdate'];
+
// Sanitize data fields.
sanitizeLink($link);
+
+ // Remove private tags if the user is not logged in.
+ if (! $this->_loggedIn) {
+ $link['tags'] = preg_replace('/(^| )\.[^($| )]+/', '', $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 . urlencode($link['url']);
'css' => 1,
'Mercurial' => 1,
'-exclude' => 1,
+ '.hidden' => 1,
),
self::$privateLinkDB->allTags()
);
count(self::$privateLinkDB->filter(LinkFilter::$FILTER_TAG, $tags, true, false))
);
}
+
+ /**
+ * Test hidden tags feature:
+ * tags starting with a dot '.' are only visible when logged in.
+ */
+ public function testHiddenTags()
+ {
+ $tags = '.hidden';
+ $this->assertEquals(
+ 1,
+ count(self::$privateLinkDB->filter(LinkFilter::$FILTER_TAG, $tags, true, false))
+ );
+
+ $this->assertEquals(
+ 0,
+ count(self::$publicLinkDB->filter(LinkFilter::$FILTER_TAG, $tags, true, false))
+ );
+ }
}
$this->assertEmpty($linkDB->filter(LinkFilter::$FILTER_TAG, 'exclude'));
$updater = new Updater(array(), self::$configFields, $linkDB, true);
$updater->updateMethodRenameDashTags();
- var_dump($linkDB->filter(LinkFilter::$FILTER_TAG, 'exclude'));
$this->assertNotEmpty($linkDB->filter(LinkFilter::$FILTER_TAG, 'exclude'));
}
}
'A free software media publishing platform',
0,
'20130614_184135',
- 'gnu media web'
+ 'gnu media web .hidden'
);
$this->addLink(