Feature improvement: make rename tags more consistent (with regards to linked tags)

git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@85 b3834d28-1941-0410-a4f8-b48e95affb8f
This commit is contained in:
mensonge 2008-03-14 15:18:01 +00:00
parent d10c26fd1d
commit 146c63e90c
5 changed files with 54 additions and 17 deletions

View file

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Scuttle\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-03-14 11:42+0100\n"
"PO-Revision-Date: 2008-03-14 11:43+0100\n"
"PO-Revision-Date: 2008-03-14 16:06+0100\n"
"Last-Translator: BenjaminHKB <benjamin.huynh-kim-bang@loria.fr>\n"
"Language-Team: fr-FR <toony.sf@chezouam.net>\n"
"MIME-Version: 1.0\n"
@ -490,14 +490,14 @@ msgstr "Tag renommé"
#: ../../../tagrename.php:50
msgid "Failed to rename the tag"
msgstr "Erreur dans la suppression du tag"
msgstr "Erreur dans le renommage du tag"
#: ../../../tagrename.php:57
#: ../../../templates/sidebar.block.tagactions.php:11
msgid "Rename Tag"
msgid_plural "Rename Tags"
msgstr[0] "Renommer le tag"
msgstr[1] "TRenommer les tags"
msgstr[1] "Renommer les tags"
#: ../../../tags.php:38
#: ../../../templates/editbookmark.tpl.php:44
@ -1043,7 +1043,7 @@ msgstr "Ancien"
#: ../../../templates/tagrename.tpl.php:17
msgid "New"
msgstr "Nouvaeu"
msgstr "Nouveau"
#: ../../../templates/tagrename.tpl.php:24
msgid "Rename"

View file

@ -231,6 +231,30 @@ class Tag2TagService {
return true;
}
function renameTag($uId, $oldName, $newName) {
$query = 'UPDATE `'. $this->getTableName() .'`';
$query.= ' SET tag1="'.$newName.'"';
$query.= ' WHERE tag1="'.$oldName.'"';
$query.= ' AND uId="'.$uId.'"';
$this->db->sql_query($query);
$query = 'UPDATE `'. $this->getTableName() .'`';
$query.= ' SET tag2="'.$newName.'"';
$query.= ' WHERE tag2="'.$oldName.'"';
$query.= ' AND uId="'.$uId.'"';
$this->db->sql_query($query);
// Update stats
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->updateStat($oldName, '=', $uId);
$tsts->updateStat($oldName, '>', $uId);
$tsts->updateStat($newName, '=', $uId);
$tsts->updateStat($newName, '>', $uId);
return true;
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);

View file

@ -21,10 +21,12 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
require_once('header.inc.php');
$tagservice = & ServiceFactory :: getServiceInstance('TagService');
$tag2tagservice = & ServiceFactory :: getServiceInstance('Tag2tagService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$tag = isset($_GET['query']) ? $_GET['query'] : NULL;
list ($url, $tag) = explode('/', $_SERVER['PATH_INFO']);
//$tag = isset($_GET['query']) ? $_GET['query'] : NULL;
$template = 'tagrename.tpl';
if ($_POST['confirm']) {
@ -41,7 +43,8 @@ if ($_POST['confirm']) {
if (
!is_null($old) &&
!is_null($new) &&
$tagservice->renameTag($userservice->getCurrentUserId(), $old, $new)
$tagservice->renameTag($userservice->getCurrentUserId(), $old, $new) &&
$tag2tagservice->renameTag($userservice->getCurrentUserId(), $old, $new)
) {
$tplVars['msg'] = T_('Tag renamed');
$logged_on_user = $userservice->getCurrentUser();

View file

@ -430,24 +430,34 @@ class Tag2TagTest extends PHPUnit_Framework_TestCase
$tsts = $this->tsts;
// with classic tags (users 10 & 20)
$tags = array('a', 'b', 'c');
$bs->addBookmark("http://site1.com", "title", "description", "status", $tags, null, false, false, 10);
$bs->addBookmark("http://site1.com", "title", "description", "status", array('tag1', 'tag11', 'tag111'), null, false, false, 1);
$bs->addBookmark("http://site1.com", "title2", "description2", "status", array('tag2', 'tag22', 'tag222'), null, false, false, 2);
$tags = array('a', 'b', 'c');
$bs->addBookmark("http://site2.com", "title", "description", "status", $tags, null, false, false, 20);
$bookmarks =& $bs->getBookmarks(0, 1, NULL, NULL, NULL, getSortOrder(), NULL, 0, $dtend);
$this->assertEquals(1, $bookmarks['total']);
$bookmarks = $bs->getBookmarks(0, NULL, 10, 'a');
$this->assertSame(array(), $bookmarks);
$ts->renameTag(10, 'a', 'ddd');
$ts->renameTag(1, 'tag1', 'newtag1');
$tags1 = $ts->getTagsForBookmark(1);
$this->assertSame(array('b', 'c', 'ddd'), $tags1);
$this->assertSame(array('newtag1', 'tag11', 'tag111'), $tags1);
$tags1 = $ts->getTagsForBookmark(2);
$this->assertSame(array('tag2', 'tag22', 'tag222'), $tags1); //should not be changed
// with linked tags
$tts->addLinkedTags('b', 'c', '>', 1);
$tts->addLinkedTags('a', 'd', '>', 1);
$tts->addLinkedTags('a', 'b', '>', 1);
$tts->addLinkedTags('b', 'a', '>', 2); // should not be modified because of userid
$tts->renameTag(1, 'b', 'e');
$linkedTags = $tts->getLinkedTags('e', '>', 1);
$this->assertSame(array('c'), $linkedTags);
$linkedTags = $tts->getLinkedTags('a', '>', 1);
$this->assertSame(array('e'), $linkedTags);
$linkedTags = $tts->getLinkedTags('b', '>', 2);
$this->assertSame(array('a'), $linkedTags);
//with stats