]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Status_network_tag.php
Merge branch 'lookup_url_fix' into 'nightly'
[quix0rs-gnu-social.git] / classes / Status_network_tag.php
index 18c508bc8e13c8f447f710d6094f710b7d4e4c98..b45224ff74c5225b02fa23c21d10269c9ba65d22 100644 (file)
@@ -26,7 +26,7 @@ class Status_network_tag extends Safe_DataObject
 
     public $__table = 'status_network_tag';                      // table name
     public $site_id;                  // int(4)  primary_key not_null
-    public $tag;                      // varchar(64)  primary_key not_null 
+    public $tag;                      // varchar(64)  primary_key not_null
     public $created;                 // datetime()   not_null
 
 
@@ -34,19 +34,22 @@ class Status_network_tag extends Safe_DataObject
     {
         global $config;
         global $_DB_DATAOBJECT;
-        
+
         $sn = new Status_network();
         $sn->_connect();
 
-        $config['db']['table_'. $this->__table] = $sn->_database;
+        $config['db']['table_'. $this->tableName()] = $sn->_database;
 
         $this->_connect();
     }
 
+    /* the code above is auto generated do not remove the tag below */
+    ###END_AUTOCODE
 
     /* Static get */
-    function staticGet($k,$v=null)
+    static function getKV($k,$v=null)
     {
+        // TODO: This probably has to be converted to a non-static call
         $i = DB_DataObject::staticGet('Status_network_tag',$k,$v);
 
         // Don't use local process cache; if we're fetching multiple
@@ -57,13 +60,85 @@ class Status_network_tag extends Safe_DataObject
         return $i;
     }
 
-    /* the code above is auto generated do not remove the tag below */
-    ###END_AUTOCODE
+    static function pkeyGet($kv)
+    {
+        return Memcached_DataObject::pkeyGetClass('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, 0, 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::$cacheInitialized) {
+            // FIXME: this was causing errors, so I'm hiding them.
+            // I'm a big chicken and lazy.
+            @Status_network::$cache->delete($key);
+        }
+    }
+
+    function insert()
+    {
+        $ret = parent::insert();
+        $this->decache();
+        return $ret;
+    }
 
+    function delete($useWhere=false)
+    {
+        $this->decache();
+        return parent::delete($useWhere);
+    }
 
-    function pkeyGet($kv)
+    static function withTag($tag)
     {
-        return Memcached_DataObject::pkeyGet('Status_network_tag', $kv);
+        $snt = new Status_network_tag();
+
+        $snt->tag = $tag;
+
+        $snt->find();
+
+        return $snt;
     }
 }