cache tags per notice

This commit is contained in:
Evan Prodromou 2011-04-06 23:25:24 -04:00
parent 59d0e2f373
commit d3d0ec5ebe

View File

@ -2004,14 +2004,24 @@ class Notice extends Memcached_DataObject
public function getTags()
{
$tags = array();
$tag = new Notice_tag();
$tag->notice_id = $this->id;
if ($tag->find()) {
while ($tag->fetch()) {
$tags[] = $tag->tag;
$keypart = sprintf('notice:tags:%d', $this->id);
$tagstr = self::cacheGet($keypart);
if ($tagstr !== false) {
$tags = explode(',', $tagstr);
} else {
$tag = new Notice_tag();
$tag->notice_id = $this->id;
if ($tag->find()) {
while ($tag->fetch()) {
$tags[] = $tag->tag;
}
}
self::cacheSet($keypart, implode(',', $tags));
}
$tag->free();
return $tags;
}