X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FStatus_network_tag.php;h=b45224ff74c5225b02fa23c21d10269c9ba65d22;hb=94392ab00ceefec6105ac7d6e6846fb644bbd0f1;hp=18c508bc8e13c8f447f710d6094f710b7d4e4c98;hpb=41dfea163460bb216483e8e12fff7a8afefbb4fb;p=quix0rs-gnu-social.git diff --git a/classes/Status_network_tag.php b/classes/Status_network_tag.php index 18c508bc8e..b45224ff74 100644 --- a/classes/Status_network_tag.php +++ b/classes/Status_network_tag.php @@ -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; } }