static function setTags($tagger, $tagged, $newtags) { $newtags = array_unique($newtags); $oldtags = Profile_tag::getTags($tagger, $tagged); # Delete stuff that's old that not in new $to_delete = array_diff($oldtags, $newtags); # Insert stuff that's in new and not in old $to_insert = array_diff($newtags, $oldtags); $profile_tag = new Profile_tag(); $profile_tag->tagger = $tagger; $profile_tag->tagged = $tagged; $profile_tag->query('BEGIN'); foreach ($to_delete as $deltag) { $profile_tag->tag = $deltag; $result = $profile_tag->delete(); if (!$result) { common_log_db_error($profile_tag, 'DELETE', __FILE__); return false; } } foreach ($to_insert as $instag) { $profile_tag->tag = $instag; $result = $profile_tag->insert(); if (!$result) { common_log_db_error($profile_tag, 'INSERT', __FILE__); return false; } } $profile_tag->query('COMMIT'); return true; }
static function moveTag($orig, $new) { $tags = new Profile_tag(); $qry = 'UPDATE profile_tag SET ' . 'tag = "%s", tagger = "%s" ' . 'WHERE tag = "%s" ' . 'AND tagger = "%s"'; $result = $tags->query(sprintf($qry, $new->tag, $new->tagger, $orig->tag, $orig->tagger)); if (!$result) { common_log_db_error($tags, 'UPDATE', __FILE__); return false; } return true; }
static function moveTag($orig, $new) { $tags = new Profile_tag(); $qry = 'UPDATE profile_tag SET ' . 'tag = "%s", tagger = "%s" ' . 'WHERE tag = "%s" ' . 'AND tagger = "%s"'; $result = $tags->query(sprintf($qry, $tags->escape($new->tag), $tags->escape($new->tagger), $tags->escape($orig->tag), $tags->escape($orig->tagger))); if ($result === false) { common_log_db_error($tags, 'UPDATE', __FILE__); throw new Exception('Could not move Profile_tag, see db log for details.'); } return $result; }