From 6f312b54db9179f93a09195aad2baf8964bf7c56 Mon Sep 17 00:00:00 2001 From: mensonge Date: Tue, 19 Feb 2008 13:51:18 +0000 Subject: [PATCH] Bug fixes: prevent from adding special characters into tags git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@44 b3834d28-1941-0410-a4f8-b48e95affb8f --- services/tagservice.php | 4 ++++ tests/bookmarksTest.php | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) 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()