]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Private/Hidden tags 447/head
authorArthurHoaro <arthur@hoa.ro>
Thu, 21 Jan 2016 19:18:44 +0000 (20:18 +0100)
committerArthurHoaro <arthur@hoa.ro>
Mon, 15 Feb 2016 20:18:43 +0000 (21:18 +0100)
Tags starting with a dot '.' are now private.
They can only be seen and searched when logged in.

Fixes #315

application/LinkDB.php
tests/LinkDBTest.php
tests/Updater/UpdaterTest.php
tests/utils/ReferenceLinkDB.php

index 416aa0d3051a92e6f092ce3314612d0f811d3d5e..9f4d3e3cc7b4fabb23750fda02427ad23612b14d 100644 (file)
@@ -264,8 +264,15 @@ You use the community supported version of the original Shaarli project, by Seba
         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']);
index 06edea79201a2fe18ea53cf9a7277b95153b055e..765f771ec5381c1cbf8f3fe21843fc892488e566 100644 (file)
@@ -298,6 +298,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
                 'css' => 1,
                 'Mercurial' => 1,
                 '-exclude' => 1,
+                '.hidden' => 1,
             ),
             self::$privateLinkDB->allTags()
         );
@@ -349,4 +350,22 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
             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))
+        );
+    }
 }
index 84b82350390fbc207b14d483a53f6fe41b610096..d865066b99f9aa923bafbee30f9ce90b264de9d8 100644 (file)
@@ -239,7 +239,6 @@ class UpdaterTest extends PHPUnit_Framework_TestCase
         $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'));
     }
 }
index 2f188d29168c93e77a545190495d871108ef12c0..da3e8c651a533d9ea2addc704e9573f2e6ca88df 100644 (file)
@@ -28,7 +28,7 @@ class ReferenceLinkDB
             'A free software media publishing platform',
             0,
             '20130614_184135',
-            'gnu media web'
+            'gnu media web .hidden'
         );
 
         $this->addLink(