diff options
author | ArthurHoaro <arthur@hoa.ro> | 2016-04-14 17:59:37 +0200 |
---|---|---|
committer | ArthurHoaro <arthur@hoa.ro> | 2016-05-31 09:09:32 +0200 |
commit | b1eb5d1d31e3ea256501c08a3ed9aa7183b27466 (patch) | |
tree | da39f2c91bf636ff7a9d0890ec70601b2ca92797 | |
parent | 11609d9fd8ba53f049e6c913d8e3affab6cfc9ce (diff) | |
download | Shaarli-b1eb5d1d31e3ea256501c08a3ed9aa7183b27466.tar.gz Shaarli-b1eb5d1d31e3ea256501c08a3ed9aa7183b27466.tar.zst Shaarli-b1eb5d1d31e3ea256501c08a3ed9aa7183b27466.zip |
Fixes #497: ignore case difference between tags
While retrieving all tags, case differences will be ignored.
This affects:
* tag cloud
* tag autocompletion
-rw-r--r-- | application/LinkDB.php | 11 | ||||
-rw-r--r-- | tests/FeedBuilderTest.php | 2 | ||||
-rw-r--r-- | tests/LinkDBTest.php | 6 | ||||
-rw-r--r-- | tests/utils/ReferenceLinkDB.php | 2 |
4 files changed, 15 insertions, 6 deletions
diff --git a/application/LinkDB.php b/application/LinkDB.php index a62341fc..4c1a45b5 100644 --- a/application/LinkDB.php +++ b/application/LinkDB.php | |||
@@ -417,11 +417,18 @@ You use the community supported version of the original Shaarli project, by Seba | |||
417 | public function allTags() | 417 | public function allTags() |
418 | { | 418 | { |
419 | $tags = array(); | 419 | $tags = array(); |
420 | $caseMapping = array(); | ||
420 | foreach ($this->_links as $link) { | 421 | foreach ($this->_links as $link) { |
421 | foreach (explode(' ', $link['tags']) as $tag) { | 422 | foreach (explode(' ', $link['tags']) as $tag) { |
422 | if (!empty($tag)) { | 423 | if (empty($tag)) { |
423 | $tags[$tag] = (empty($tags[$tag]) ? 1 : $tags[$tag] + 1); | 424 | continue; |
424 | } | 425 | } |
426 | // The first case found will be displayed. | ||
427 | if (!isset($caseMapping[strtolower($tag)])) { | ||
428 | $caseMapping[strtolower($tag)] = $tag; | ||
429 | $tags[$caseMapping[strtolower($tag)]] = 0; | ||
430 | } | ||
431 | $tags[$caseMapping[strtolower($tag)]]++; | ||
425 | } | 432 | } |
426 | } | 433 | } |
427 | // Sort tags by usage (most used tag first) | 434 | // Sort tags by usage (most used tag first) |
diff --git a/tests/FeedBuilderTest.php b/tests/FeedBuilderTest.php index 069b1581..647b2db2 100644 --- a/tests/FeedBuilderTest.php +++ b/tests/FeedBuilderTest.php | |||
@@ -93,7 +93,7 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase | |||
93 | $this->assertContains('Permalink', $link['description']); | 93 | $this->assertContains('Permalink', $link['description']); |
94 | $this->assertContains('http://host.tld/?WDWyig', $link['description']); | 94 | $this->assertContains('http://host.tld/?WDWyig', $link['description']); |
95 | $this->assertEquals(1, count($link['taglist'])); | 95 | $this->assertEquals(1, count($link['taglist'])); |
96 | $this->assertEquals('stuff', $link['taglist'][0]); | 96 | $this->assertEquals('sTuff', $link['taglist'][0]); |
97 | 97 | ||
98 | // Test URL with external link. | 98 | // Test URL with external link. |
99 | $this->assertEquals('https://static.fsf.org/nosvn/faif-2.0.pdf', $data['links']['20150310_114633']['url']); | 99 | $this->assertEquals('https://static.fsf.org/nosvn/faif-2.0.pdf', $data['links']['20150310_114633']['url']); |
diff --git a/tests/LinkDBTest.php b/tests/LinkDBTest.php index 52d31400..8ffb1512 100644 --- a/tests/LinkDBTest.php +++ b/tests/LinkDBTest.php | |||
@@ -290,7 +290,9 @@ class LinkDBTest extends PHPUnit_Framework_TestCase | |||
290 | 'stallman' => 1, | 290 | 'stallman' => 1, |
291 | 'free' => 1, | 291 | 'free' => 1, |
292 | '-exclude' => 1, | 292 | '-exclude' => 1, |
293 | 'stuff' => 2, | 293 | // The DB contains a link with `sTuff` and another one with `stuff` tag. |
294 | // They need to be grouped with the first case found (`sTuff`). | ||
295 | 'sTuff' => 2, | ||
294 | ), | 296 | ), |
295 | self::$publicLinkDB->allTags() | 297 | self::$publicLinkDB->allTags() |
296 | ); | 298 | ); |
@@ -310,7 +312,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase | |||
310 | 'w3c' => 1, | 312 | 'w3c' => 1, |
311 | 'css' => 1, | 313 | 'css' => 1, |
312 | 'Mercurial' => 1, | 314 | 'Mercurial' => 1, |
313 | 'stuff' => 2, | 315 | 'sTuff' => 2, |
314 | '-exclude' => 1, | 316 | '-exclude' => 1, |
315 | '.hidden' => 1, | 317 | '.hidden' => 1, |
316 | ), | 318 | ), |
diff --git a/tests/utils/ReferenceLinkDB.php b/tests/utils/ReferenceLinkDB.php index dc4f5dfa..46165b4d 100644 --- a/tests/utils/ReferenceLinkDB.php +++ b/tests/utils/ReferenceLinkDB.php | |||
@@ -21,7 +21,7 @@ class ReferenceLinkDB | |||
21 | 'Stallman has a beard and is part of the Free Software Foundation (or not). Seriously, read this.', | 21 | 'Stallman has a beard and is part of the Free Software Foundation (or not). Seriously, read this.', |
22 | 0, | 22 | 0, |
23 | '20150310_114651', | 23 | '20150310_114651', |
24 | 'stuff' | 24 | 'sTuff' |
25 | ); | 25 | ); |
26 | 26 | ||
27 | $this->addLink( | 27 | $this->addLink( |