forked from GNUsocial/gnu-social
cache groups per notice
This commit is contained in:
parent
d9ca956ecf
commit
44c64816a5
@ -1250,28 +1250,40 @@ class Notice extends Memcached_DataObject
|
|||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX: cache me
|
$ids = array();
|
||||||
|
|
||||||
|
$keypart = sprintf('notice:groups:%d', $this->id);
|
||||||
|
|
||||||
|
$idstr = self::cacheGet($keypart);
|
||||||
|
|
||||||
|
if ($idstr !== false) {
|
||||||
|
$ids = explode(',', $idstr);
|
||||||
|
} else {
|
||||||
|
$gi = new Group_inbox();
|
||||||
|
|
||||||
|
$gi->selectAdd();
|
||||||
|
$gi->selectAdd('group_id');
|
||||||
|
|
||||||
|
$gi->notice_id = $this->id;
|
||||||
|
|
||||||
|
if ($gi->find()) {
|
||||||
|
while ($gi->fetch()) {
|
||||||
|
$ids[] = $gi->group_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self::cacheSet($keypart, implode(',', $ids));
|
||||||
|
}
|
||||||
|
|
||||||
$groups = array();
|
$groups = array();
|
||||||
|
|
||||||
$gi = new Group_inbox();
|
foreach ($ids as $id) {
|
||||||
|
$group = User_group::staticGet('id', $id);
|
||||||
$gi->selectAdd();
|
if ($group) {
|
||||||
$gi->selectAdd('group_id');
|
$groups[] = $group;
|
||||||
|
|
||||||
$gi->notice_id = $this->id;
|
|
||||||
|
|
||||||
if ($gi->find()) {
|
|
||||||
while ($gi->fetch()) {
|
|
||||||
$group = User_group::staticGet('id', $gi->group_id);
|
|
||||||
if ($group) {
|
|
||||||
$groups[] = $group;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$gi->free();
|
|
||||||
|
|
||||||
return $groups;
|
return $groups;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user