forked from GNUsocial/gnu-social
make sure whoGets() doesn't write anything
This commit is contained in:
parent
c3188fd1fe
commit
d032fc038a
@ -335,7 +335,11 @@ class Notice extends Memcached_DataObject
|
||||
|
||||
$notice->saveTags();
|
||||
|
||||
$notice->addToInboxes();
|
||||
$groups = $notice->saveGroups();
|
||||
|
||||
$recipients = $notice->saveReplies();
|
||||
|
||||
$notice->addToInboxes($groups, $recipients);
|
||||
|
||||
$notice->saveUrls();
|
||||
|
||||
@ -822,7 +826,7 @@ class Notice extends Memcached_DataObject
|
||||
return $ids;
|
||||
}
|
||||
|
||||
function whoGets()
|
||||
function whoGets($groups=null, $recipients=null)
|
||||
{
|
||||
$c = self::memcache();
|
||||
|
||||
@ -833,6 +837,14 @@ class Notice extends Memcached_DataObject
|
||||
}
|
||||
}
|
||||
|
||||
if (is_null($groups)) {
|
||||
$groups = $this->getGroups();
|
||||
}
|
||||
|
||||
if (is_null($recipients)) {
|
||||
$recipients = $this->getReplies();
|
||||
}
|
||||
|
||||
$users = $this->getSubscribedUsers();
|
||||
|
||||
// FIXME: kind of ignoring 'transitional'...
|
||||
@ -845,7 +857,6 @@ class Notice extends Memcached_DataObject
|
||||
$ni[$id] = NOTICE_INBOX_SOURCE_SUB;
|
||||
}
|
||||
|
||||
$groups = $this->saveGroups();
|
||||
$profile = $this->getProfile();
|
||||
|
||||
foreach ($groups as $group) {
|
||||
@ -860,8 +871,6 @@ class Notice extends Memcached_DataObject
|
||||
}
|
||||
}
|
||||
|
||||
$recipients = $this->saveReplies();
|
||||
|
||||
foreach ($recipients as $recipient) {
|
||||
|
||||
if (!array_key_exists($recipient, $ni)) {
|
||||
@ -880,9 +889,9 @@ class Notice extends Memcached_DataObject
|
||||
return $ni;
|
||||
}
|
||||
|
||||
function addToInboxes()
|
||||
function addToInboxes($groups, $recipients)
|
||||
{
|
||||
$ni = $this->whoGets();
|
||||
$ni = $this->whoGets($groups, $recipients);
|
||||
|
||||
Inbox::bulkInsert($this->id, array_keys($ni));
|
||||
|
||||
@ -1086,6 +1095,52 @@ class Notice extends Memcached_DataObject
|
||||
return $recipientIds;
|
||||
}
|
||||
|
||||
function getReplies()
|
||||
{
|
||||
// XXX: cache me
|
||||
|
||||
$ids = array();
|
||||
|
||||
$reply = new Reply();
|
||||
$reply->selectAdd();
|
||||
$reply->selectAdd('profile_id');
|
||||
$reply->notice_id = $this->id;
|
||||
|
||||
if ($reply->find()) {
|
||||
while($reply->fetch()) {
|
||||
$ids[] = $reply->profile_id;
|
||||
}
|
||||
}
|
||||
|
||||
$reply->free();
|
||||
|
||||
return $ids;
|
||||
}
|
||||
|
||||
function getGroups()
|
||||
{
|
||||
// XXX: cache me
|
||||
|
||||
$ids = array();
|
||||
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
||||
$gi->free();
|
||||
|
||||
return $ids;
|
||||
}
|
||||
|
||||
function asAtomEntry($namespace=false, $source=false)
|
||||
{
|
||||
$profile = $this->getProfile();
|
||||
|
Loading…
Reference in New Issue
Block a user