]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Status_network_tag.php
Remove CSRF protection from username/password login and from OpenID login.
[quix0rs-gnu-social.git] / classes / Status_network_tag.php
index 18c508bc8e13c8f447f710d6094f710b7d4e4c98..7dab232897bcb3f64601c980c52bc338788314d3 100644 (file)
@@ -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;
+    }
 }