summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/Status_network.php11
-rw-r--r--classes/Status_network_tag.php66
-rw-r--r--plugins/OStatus/scripts/updateostatus.php4
3 files changed, 69 insertions, 12 deletions
diff --git a/classes/Status_network.php b/classes/Status_network.php
index 5680c1458..c4f37ce1c 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 18c508bc8..7dab23289 100644
--- a/classes/Status_network_tag.php
+++ b/classes/Status_network_tag.php
@@ -61,9 +61,73 @@ 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)) {
+ if ($packed == '') {
+ return array();
+ } else {
+ 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;
+ }
}
diff --git a/plugins/OStatus/scripts/updateostatus.php b/plugins/OStatus/scripts/updateostatus.php
index 622ded56a..ff0d86d37 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()) {