Better whitespace handling in tags

Correct PR #573 to work properly with hidden tags, and add ReferenceLinkDB UT.

Fixes #571 - Closes #573
This commit is contained in:
ArthurHoaro 2016-08-02 10:34:21 +02:00
parent 32d51093e3
commit 9866b40814
3 changed files with 6 additions and 28 deletions

View File

@ -291,7 +291,7 @@ You use the community supported version of the original Shaarli project, by Seba
// Remove private tags if the user is not logged in.
if (! $this->_loggedIn) {
$link['tags'] = preg_replace('/(^|\s*)\.[^($| )]+\s*$/', '', $link['tags']);
$link['tags'] = preg_replace('/(^|\s+)\.[^($|\s)]+\s*/', ' ', $link['tags']);
}
// Do not use the redirector for internal links (Shaarli note URL starting with a '?').

View File

@ -317,6 +317,10 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
'-exclude' => 1,
'.hidden' => 1,
'hashtag' => 2,
'tag1' => 1,
'tag2' => 1,
'tag3' => 1,
'tag4' => 1,
),
self::$privateLinkDB->allTags()
);
@ -429,30 +433,4 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
{
self::$publicLinkDB->filterHash('');
}
/**
* test whitespace handling in tags.
* split on whitespace runs and don't allow empty tags.
*/
public function testReadTagsWithWhitespace()
{
// test load contains "tags": " tag1 tag2 tag3 tag4 "
$ds = '<?php /* ';
$ds .= 'fY5BDoMwDAS/gvwB4hRKMY9BEaASNQKUuL1U/L22D721Odheez';
$ds .= 'baQEjvQtgSeIdX12I/onfyYAjU6e1GkOL2mAMvMPxAC8mWIydD';
$ds .= 'enHsU0jrXlj1heCZk5k7gpX5oLr+ErUdkGBeypTjwXHfdOUItD';
$ds .= 'XycbgXHb24KxFYafWVtYvVRoQiQhw5vixrJDdY/LyENP5PcJ4f */ ?>';
file_put_contents(self::$testDatastore, $ds);
self::$publicLinkDB = new LinkDB(self::$testDatastore, false, false);
$this->assertEquals(
array(
'tag1' => 1,
'tag2' => 1,
'tag3' => 1,
'tag4' => 1
),
self::$publicLinkDB->allTags()
);
}
}

View File

@ -75,7 +75,7 @@ class ReferenceLinkDB
'',
1,
'20121206_182539',
'dev cartoon'
'dev cartoon tag1 tag2 tag3 tag4 '
);
}