From: Arthur Date: Fri, 3 Jun 2016 16:30:19 +0000 (+0200) Subject: Merge pull request #583 from ArthurHoaro/enhance/tag-case X-Git-Tag: v0.8.0~31 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=92a381f51737de1e4a03c482fe7c43da311ad556;hp=e8f6024400307cbf2b8293073d7ba8cba5caae7e;p=github%2Fshaarli%2FShaarli.git Merge pull request #583 from ArthurHoaro/enhance/tag-case Fixes #497: ignore case difference between tags --- diff --git a/application/LinkDB.php b/application/LinkDB.php index 1cb70de0..b1072e07 100644 --- a/application/LinkDB.php +++ b/application/LinkDB.php @@ -440,11 +440,18 @@ You use the community supported version of the original Shaarli project, by Seba public function allTags() { $tags = array(); + $caseMapping = array(); foreach ($this->_links as $link) { foreach (explode(' ', $link['tags']) as $tag) { - if (!empty($tag)) { - $tags[$tag] = (empty($tags[$tag]) ? 1 : $tags[$tag] + 1); + if (empty($tag)) { + continue; } + // The first case found will be displayed. + if (!isset($caseMapping[strtolower($tag)])) { + $caseMapping[strtolower($tag)] = $tag; + $tags[$caseMapping[strtolower($tag)]] = 0; + } + $tags[$caseMapping[strtolower($tag)]]++; } } // 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 $this->assertContains('Permalink', $link['description']); $this->assertContains('http://host.tld/?WDWyig', $link['description']); $this->assertEquals(1, count($link['taglist'])); - $this->assertEquals('stuff', $link['taglist'][0]); + $this->assertEquals('sTuff', $link['taglist'][0]); // Test URL with external link. $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 b055fe91..30ea4e01 100644 --- a/tests/LinkDBTest.php +++ b/tests/LinkDBTest.php @@ -290,7 +290,9 @@ class LinkDBTest extends PHPUnit_Framework_TestCase 'stallman' => 1, 'free' => 1, '-exclude' => 1, - 'stuff' => 2, + // The DB contains a link with `sTuff` and another one with `stuff` tag. + // They need to be grouped with the first case found (`sTuff`). + 'sTuff' => 2, ), self::$publicLinkDB->allTags() ); @@ -310,7 +312,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase 'w3c' => 1, 'css' => 1, 'Mercurial' => 1, - 'stuff' => 2, + 'sTuff' => 2, '-exclude' => 1, '.hidden' => 1, ), 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 'Stallman has a beard and is part of the Free Software Foundation (or not). Seriously, read this.', 0, '20150310_114651', - 'stuff' + 'sTuff' ); $this->addLink(