return array();
}
- // XXX: cache me
+ $ids = array();
- $groups = array();
+ $keypart = sprintf('notice:groups:%d', $this->id);
- $gi = new Group_inbox();
+ $idstr = self::cacheGet($keypart);
- $gi->selectAdd();
- $gi->selectAdd('group_id');
+ if ($idstr !== false) {
+ $ids = explode(',', $idstr);
+ } else {
+ $gi = new Group_inbox();
- $gi->notice_id = $this->id;
+ $gi->selectAdd();
+ $gi->selectAdd('group_id');
- if ($gi->find()) {
- while ($gi->fetch()) {
- $group = User_group::staticGet('id', $gi->group_id);
- if ($group) {
- $groups[] = $group;
+ $gi->notice_id = $this->id;
+
+ if ($gi->find()) {
+ while ($gi->fetch()) {
+ $ids[] = $gi->group_id;
}
}
+
+ self::cacheSet($keypart, implode(',', $ids));
}
- $gi->free();
+ $groups = array();
+
+ foreach ($ids as $id) {
+ $group = User_group::staticGet('id', $id);
+ if ($group) {
+ $groups[] = $group;
+ }
+ }
return $groups;
}