diff --git a/services/tagservice.php b/services/tagservice.php index bbf3574..256afc5 100644 --- a/services/tagservice.php +++ b/services/tagservice.php @@ -41,6 +41,10 @@ class TagService { } } + //clean tags from strange characters + $tags = str_replace(array('"', '\''), "_", $tags); + + $tags_count = count($tags); for ($i = 0; $i < $tags_count; $i++) { $tags[$i] = trim(strtolower($tags[$i])); diff --git a/tests/bookmarksTest.php b/tests/bookmarksTest.php index 882fb85..b7b03b6 100644 --- a/tests/bookmarksTest.php +++ b/tests/bookmarksTest.php @@ -29,6 +29,25 @@ class BookmarksTest extends PHPUnit_Framework_TestCase $this->tsts =& ServiceFactory::getServiceInstance('TagStatService'); $this->tsts->deleteAll(); } + + public function testHardCharactersInBookmarks() + { + $bs = $this->bs; + $title = "title&é\"'(-è_çà)="; + $desc = "description#{[|`\^@]}³<> ¹¡÷׿&é\"'(-è\\_çà)="; + $tag1 = "#{|`^@]³¹¡¿<&é\"'(-è\\_çà)"; + $tag2 = "&é\"'(-è.[?./§!_çà)"; + + $bs->addBookmark("http://site1.com", $title, $desc, "status", array($tag1, $tag2), null, false, false, 1); + + $bookmarks =& $bs->getBookmarks(0, 1, NULL, NULL, NULL, getSortOrder(), NULL, 0, $dtend); + + $b0 = $bookmarks['bookmarks'][0]; + $this->assertEquals($title, $b0['bTitle']); + $this->assertEquals($desc, $b0['bDescription']); + $this->assertEquals(str_replace(array('"', '\''), "_", $tag1), $b0['tags'][0]); + $this->assertEquals(str_replace(array('"', '\''), "_", $tag2), $b0['tags'][1]); + } public function testUnificationOfBookmarks() { @@ -38,6 +57,7 @@ class BookmarksTest extends PHPUnit_Framework_TestCase $bs->addBookmark("http://site1.com", "title2", "description2", "status", array('tag2'), null, false, false, 2); $bookmarks =& $bs->getBookmarks(0, 1, NULL, NULL, NULL, getSortOrder(), NULL, 0, $dtend); + $this->assertEquals(2, $bookmarks['total']); } public function testSearchingBookmarksAccentsInsensible()