aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorArthurHoaro <arthur@hoa.ro>2016-04-14 17:59:37 +0200
committerArthurHoaro <arthur@hoa.ro>2016-05-31 09:09:32 +0200
commitb1eb5d1d31e3ea256501c08a3ed9aa7183b27466 (patch)
treeda39f2c91bf636ff7a9d0890ec70601b2ca92797
parent11609d9fd8ba53f049e6c913d8e3affab6cfc9ce (diff)
downloadShaarli-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.php11
-rw-r--r--tests/FeedBuilderTest.php2
-rw-r--r--tests/LinkDBTest.php6
-rw-r--r--tests/utils/ReferenceLinkDB.php2
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(