diff options
author | Evan Prodromou <evan@prodromou.name> | 2008-11-20 16:48:21 -0500 |
---|---|---|
committer | Evan Prodromou <evan@prodromou.name> | 2008-11-20 16:48:21 -0500 |
commit | 6f31f25105f59bee5d6a8eccf43952e1396846b3 (patch) | |
tree | ca3fe49756d05e81b5b2fed39bd3f0953fbb3fb8 /classes | |
parent | 8a0c438aedebaa0282e4f23c83dbe0d7d2635f33 (diff) |
let users set their own profile tags from profilesettings
darcs-hash:20081120214821-84dde-c8569ef645b389de545f78bf01a270f28b871f02.gz
Diffstat (limited to 'classes')
-rw-r--r-- | classes/Profile_tag.php | 63 | ||||
-rw-r--r-- | classes/User.php | 8 | ||||
-rw-r--r-- | classes/laconica.ini | 1 |
3 files changed, 71 insertions, 1 deletions
diff --git a/classes/Profile_tag.php b/classes/Profile_tag.php index f2d6ec6cf..464a817fc 100644 --- a/classes/Profile_tag.php +++ b/classes/Profile_tag.php @@ -20,4 +20,67 @@ class Profile_tag extends Memcached_DataObject /* the code above is auto generated do not remove the tag below */ ###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, $tags) { + + $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; + } } diff --git a/classes/User.php b/classes/User.php index 45b133213..696c85e73 100644 --- a/classes/User.php +++ b/classes/User.php @@ -401,4 +401,12 @@ class User extends Memcached_DataObject $cache->delete(common_cache_key('user:faves:'.$this->id).';last'); } } + + function getSelfTags() { + return Profile_tag::getTags($this->id, $this->id); + } + + function setSelfTags($newtags) { + return Profile_tag::setTags($this->id, $this->id, $newtags); + } } diff --git a/classes/laconica.ini b/classes/laconica.ini index 470c0eaf1..ccf7e2f87 100644 --- a/classes/laconica.ini +++ b/classes/laconica.ini @@ -155,7 +155,6 @@ id = N [notice_inbox] user_id = 129 notice_id = 129 -source = 17 created = 142 source = 17 |