insert into user's inbox at Web time
This commit is contained in:
parent
1c0d82de3b
commit
a9df5eab10
|
@ -197,7 +197,9 @@ class Notice extends Memcached_DataObject
|
||||||
$notice->saveTags();
|
$notice->saveTags();
|
||||||
$notice->saveGroups();
|
$notice->saveGroups();
|
||||||
|
|
||||||
if (!common_config('queue', 'enabled')) {
|
if (common_config('queue', 'enabled')) {
|
||||||
|
$notice->addToAuthorInbox();
|
||||||
|
} else {
|
||||||
$notice->addToInboxes();
|
$notice->addToInboxes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,16 +284,8 @@ class Notice extends Memcached_DataObject
|
||||||
{
|
{
|
||||||
// Clear the user's cache
|
// Clear the user's cache
|
||||||
$cache = common_memcache();
|
$cache = common_memcache();
|
||||||
if ($cache) {
|
if (!empty($cache)) {
|
||||||
$user = User::staticGet($this->profile_id);
|
$cache->delete(common_cache_key('user:notices_with_friends:' . $this->profile_id));
|
||||||
if (!empty($user)) {
|
|
||||||
$cache->delete(common_cache_key('user:notices_with_friends:' . $user->id));
|
|
||||||
if ($blowLast) {
|
|
||||||
$cache->delete(common_cache_key('user:notices_with_friends:' . $user->id . ';last'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$user->free();
|
|
||||||
unset($user);
|
|
||||||
}
|
}
|
||||||
$this->blowNoticeCache($blowLast);
|
$this->blowNoticeCache($blowLast);
|
||||||
$this->blowPublicCache($blowLast);
|
$this->blowPublicCache($blowLast);
|
||||||
|
@ -665,6 +659,33 @@ class Notice extends Memcached_DataObject
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addToAuthorInbox()
|
||||||
|
{
|
||||||
|
$enabled = common_config('inboxes', 'enabled');
|
||||||
|
|
||||||
|
if ($enabled === true || $enabled === 'transitional') {
|
||||||
|
$user = User::staticGet('id', $this->profile_id);
|
||||||
|
if (empty($user)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$inbox = new Notice_inbox();
|
||||||
|
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
||||||
|
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' .
|
||||||
|
"SELECT $UT.id, " . $this->id . ", '" . $this->created . "' " .
|
||||||
|
"FROM $UT " .
|
||||||
|
"WHERE $UT.id = " . $this->profile_id . ' ' .
|
||||||
|
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
||||||
|
'FROM notice_inbox ' .
|
||||||
|
"WHERE user_id = " . $this->profile_id . ' '.
|
||||||
|
'AND notice_id = ' . $this->id . ' )';
|
||||||
|
if ($enabled === 'transitional') {
|
||||||
|
$qry .= " AND $UT.inboxed = 1";
|
||||||
|
}
|
||||||
|
$inbox->query($qry);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
function saveGroups()
|
function saveGroups()
|
||||||
{
|
{
|
||||||
$enabled = common_config('inboxes', 'enabled');
|
$enabled = common_config('inboxes', 'enabled');
|
||||||
|
@ -717,24 +738,29 @@ class Notice extends Memcached_DataObject
|
||||||
|
|
||||||
// FIXME: do this in an offline daemon
|
// FIXME: do this in an offline daemon
|
||||||
|
|
||||||
$inbox = new Notice_inbox();
|
$this->addToGroupInboxes($group);
|
||||||
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
|
||||||
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created, source) ' .
|
|
||||||
"SELECT $UT.id, " . $this->id . ", '" . $this->created . "', 2 " .
|
|
||||||
"FROM $UT JOIN group_member ON $UT.id = group_member.profile_id " .
|
|
||||||
'WHERE group_member.group_id = ' . $group->id . ' ' .
|
|
||||||
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
|
||||||
'FROM notice_inbox ' .
|
|
||||||
"WHERE user_id = $UT.id " .
|
|
||||||
'AND notice_id = ' . $this->id . ' )';
|
|
||||||
if ($enabled === 'transitional') {
|
|
||||||
$qry .= " AND $UT.inboxed = 1";
|
|
||||||
}
|
|
||||||
$result = $inbox->query($qry);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addToGroupInboxes($group)
|
||||||
|
{
|
||||||
|
$inbox = new Notice_inbox();
|
||||||
|
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
|
||||||
|
$qry = 'INSERT INTO notice_inbox (user_id, notice_id, created, source) ' .
|
||||||
|
"SELECT $UT.id, " . $this->id . ", '" . $this->created . "', 2 " .
|
||||||
|
"FROM $UT JOIN group_member ON $UT.id = group_member.profile_id " .
|
||||||
|
'WHERE group_member.group_id = ' . $group->id . ' ' .
|
||||||
|
'AND NOT EXISTS (SELECT user_id, notice_id ' .
|
||||||
|
'FROM notice_inbox ' .
|
||||||
|
"WHERE user_id = $UT.id " .
|
||||||
|
'AND notice_id = ' . $this->id . ' )';
|
||||||
|
if ($enabled === 'transitional') {
|
||||||
|
$qry .= " AND $UT.inboxed = 1";
|
||||||
|
}
|
||||||
|
$result = $inbox->query($qry);
|
||||||
|
}
|
||||||
|
|
||||||
function saveReplies()
|
function saveReplies()
|
||||||
{
|
{
|
||||||
// Alternative reply format
|
// Alternative reply format
|
||||||
|
|
Loading…
Reference in New Issue
Block a user