summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-02-28 15:17:49 -0800
committerEvan Prodromou <evan@controlyourself.ca>2009-02-28 15:17:49 -0800
commit0369946b6d1b01a3d90fe641521a1ed117219d89 (patch)
tree6a98918cdccbb005c9ed21f16e3adadea7becdd8
parentd92beda526f1495d16b54880a40ebb3c7d7e5f2e (diff)
fix problem with dupe tags in profile
-rw-r--r--classes/Profile_tag.php43
1 files changed, 22 insertions, 21 deletions
diff --git a/classes/Profile_tag.php b/classes/Profile_tag.php
index cb60cbaec..0a1ad9cd6 100644
--- a/classes/Profile_tag.php
+++ b/classes/Profile_tag.php
@@ -4,7 +4,7 @@
*/
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
-class Profile_tag extends Memcached_DataObject
+class Profile_tag extends Memcached_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
@@ -23,45 +23,46 @@ class Profile_tag extends Memcached_DataObject
###END_AUTOCODE
static function getTags($tagger, $tagged) {
-
+
$tags = array();
# XXX: store this in memcached
-
+
$profile_tag = new Profile_tag();
$profile_tag->tagger = $tagger;
$profile_tag->tagged = $tagged;
-
+
$profile_tag->find();
-
+
while ($profile_tag->fetch()) {
$tags[] = $profile_tag->tag;
}
-
+
$profile_tag->free();
-
+
return $tags;
}
-
+
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();
@@ -70,7 +71,7 @@ class Profile_tag extends Memcached_DataObject
return false;
}
}
-
+
foreach ($to_insert as $instag) {
$profile_tag->tag = $instag;
$result = $profile_tag->insert();
@@ -79,12 +80,12 @@ class Profile_tag extends Memcached_DataObject
return false;
}
}
-
+
$profile_tag->query('COMMIT');
-
+
return true;
}
-
+
# Return profiles with a given tag
static function getTagged($tagger, $tag) {
$profile = new Profile();