From a507f04bc4da9303400db395946c78c95d1ed30c Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 25 Aug 2010 12:32:10 -0400 Subject: [PATCH 1/3] fix incorrect function name in updateostatus.php script --- plugins/OStatus/scripts/updateostatus.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/OStatus/scripts/updateostatus.php b/plugins/OStatus/scripts/updateostatus.php index 622ded56ab..ff0d86d379 100644 --- a/plugins/OStatus/scripts/updateostatus.php +++ b/plugins/OStatus/scripts/updateostatus.php @@ -44,14 +44,14 @@ try { if (empty($user)) { throw new Exception("Can't find user with id '$id'."); } - updateProfileURL($user); + updateOStatus($user); } else if (have_option('n', 'nickname')) { $nickname = get_option_value('n', 'nickname'); $user = User::staticGet('nickname', $nickname); if (empty($user)) { throw new Exception("Can't find user with nickname '$nickname'"); } - updateProfileURL($user); + updateOStatus($user); } else if (have_option('a', 'all')) { $user = new User(); if ($user->find()) { From 63fd2332f0469174be6476eb7455519ebaf30249 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Wed, 25 Aug 2010 11:59:39 -0700 Subject: [PATCH 2/3] Use Status_network's caching settings when loading Status_network_tag entries; cache entries are batched per site and will be cleared when tags are inserted/deleted using the main interface. (with fixes from tagcache branch) --- classes/Status_network.php | 11 ++---- classes/Status_network_tag.php | 62 +++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 10 deletions(-) diff --git a/classes/Status_network.php b/classes/Status_network.php index 5680c14584..c4f37ce1c6 100644 --- a/classes/Status_network.php +++ b/classes/Status_network.php @@ -308,15 +308,7 @@ class Status_network extends Safe_DataObject */ function getTags() { - $result = array(); - - $tags = new Status_network_tag(); - $tags->site_id = $this->site_id; - if ($tags->find()) { - while ($tags->fetch()) { - $result[] = $tags->tag; - } - } + $result = Status_network_tag::getTags($this->site_id); // XXX : for backwards compatibility if (empty($result)) { @@ -329,6 +321,7 @@ class Status_network extends Safe_DataObject /** * Save a given set of tags * @param array tags + * @fixme only add/remove differentials */ function setTags($tags) { diff --git a/classes/Status_network_tag.php b/classes/Status_network_tag.php index 18c508bc8e..975392c761 100644 --- a/classes/Status_network_tag.php +++ b/classes/Status_network_tag.php @@ -61,9 +61,69 @@ class Status_network_tag extends Safe_DataObject ###END_AUTOCODE - function pkeyGet($kv) { return Memcached_DataObject::pkeyGet('Status_network_tag', $kv); } + + /** + * Fetch the (possibly cached) tag entries for the given site id. + * Uses status_network's cache settings. + * + * @param string $site_id + * @return array of strings + */ + static function getTags($site_id) + { + $key = 'status_network_tags:' . $site_id; + if (Status_network::$cache) { + $packed = Status_network::$cache->get($key); + if (is_string($packed)) { + return explode('|', $packed); + } + } + + $result = array(); + + $tags = new Status_network_tag(); + $tags->site_id = $site_id; + if ($tags->find()) { + while ($tags->fetch()) { + $result[] = $tags->tag; + } + } + + if (Status_network::$cache) { + $packed = implode('|', $result); + Status_network::$cache->set($key, $packed, 3600); + } + + return $result; + } + + /** + * Drop the cached tag entries for this site. + * Needed after inserting/deleting a tag entry. + */ + function decache() + { + $key = 'status_network_tags:' . $this->site_id; + if (Status_network::$cache) { + Status_network::$cache->delete($key); + } + } + + function insert() + { + $ret = parent::insert(); + $this->decache(); + return $ret; + } + + function delete() + { + $ret = parent::delete(); + $this->decache(); + return $ret; + } } From 8f06e3b2819936d1a9fe30b1bc44759bdcd56992 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 26 Aug 2010 13:52:03 -0700 Subject: [PATCH 3/3] Fix for failover error in status_network_tag caching; when no tags present in table we would return an array with one empty element instead of no elements when getting the cached data. --- classes/Status_network_tag.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/classes/Status_network_tag.php b/classes/Status_network_tag.php index 975392c761..7dab232897 100644 --- a/classes/Status_network_tag.php +++ b/classes/Status_network_tag.php @@ -79,7 +79,11 @@ class Status_network_tag extends Safe_DataObject if (Status_network::$cache) { $packed = Status_network::$cache->get($key); if (is_string($packed)) { - return explode('|', $packed); + if ($packed == '') { + return array(); + } else { + return explode('|', $packed); + } } }