summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-01-15 13:06:21 -0800
committerBrion Vibber <brion@pobox.com>2010-01-15 13:06:21 -0800
commitd35faa04c1927994916a46a1bd48f8420a3e2dfe (patch)
treed7ad7a86ecb2697ff614a516f3a0996abc1bd476
parent963260d2628cdaccd330c47761ebbf972193f15e (diff)
Fix for background recalculation of groups; needs to get Group objects not IDs; also don't list any groups for repeats to match saveGroups behavior
todo: merge calculation portion with saveGroups so they don't get out of sync
-rw-r--r--classes/Notice.php24
1 files changed, 21 insertions, 3 deletions
diff --git a/classes/Notice.php b/classes/Notice.php
index a43ce867b..38b10db04 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -826,6 +826,10 @@ class Notice extends Memcached_DataObject
return $ids;
}
+ /**
+ * @param $groups array of Group *objects*
+ * @param $recipients array of profile *ids*
+ */
function whoGets($groups=null, $recipients=null)
{
$c = self::memcache();
@@ -925,6 +929,9 @@ class Notice extends Memcached_DataObject
return $ids;
}
+ /**
+ * @return array of Group objects
+ */
function saveGroups()
{
// Don't save groups for repeats
@@ -1117,11 +1124,22 @@ class Notice extends Memcached_DataObject
return $ids;
}
+ /**
+ * Same calculation as saveGroups but without the saving
+ * @fixme merge the functions
+ * @return array of Group objects
+ */
function getGroups()
{
+ // Don't save groups for repeats
+
+ if (!empty($this->repeat_of)) {
+ return array();
+ }
+
// XXX: cache me
- $ids = array();
+ $groups = array();
$gi = new Group_inbox();
@@ -1132,13 +1150,13 @@ class Notice extends Memcached_DataObject
if ($gi->find()) {
while ($gi->fetch()) {
- $ids[] = $gi->group_id;
+ $groups[] = clone($gi);
}
}
$gi->free();
- return $ids;
+ return $groups;
}
function asAtomEntry($namespace=false, $source=false)