don't write Inbox if on a read-only page, but encache

This commit is contained in:
Evan Prodromou 2010-01-13 16:26:46 -08:00
parent 935d5eed69
commit 4d7cdbf1c6
2 changed files with 22 additions and 10 deletions

View File

@ -56,6 +56,22 @@ class Inbox extends Memcached_DataObject
*/ */
static function initialize($user_id) static function initialize($user_id)
{
$inbox = Inbox::fromNoticeInbox($user_id);
unset($inbox->fake);
$result = $inbox->insert();
if (!$result) {
common_log_db_error($inbox, 'INSERT', __FILE__);
return null;
}
return $inbox;
}
static function fromNoticeInbox($user_id)
{ {
$ids = array(); $ids = array();
@ -80,13 +96,7 @@ class Inbox extends Memcached_DataObject
$inbox->user_id = $user_id; $inbox->user_id = $user_id;
$inbox->notice_ids = call_user_func_array('pack', array_merge(array('N*'), $ids)); $inbox->notice_ids = call_user_func_array('pack', array_merge(array('N*'), $ids));
$inbox->fake = true;
$result = $inbox->insert();
if (!$result) {
common_log_db_error($inbox, 'INSERT', __FILE__);
return null;
}
return $inbox; return $inbox;
} }
@ -95,7 +105,7 @@ class Inbox extends Memcached_DataObject
{ {
$inbox = Inbox::staticGet('user_id', $user_id); $inbox = Inbox::staticGet('user_id', $user_id);
if (empty($inbox)) { if (empty($inbox) || $inbox->fake) {
$inbox = Inbox::initialize($user_id); $inbox = Inbox::initialize($user_id);
} }
@ -133,9 +143,11 @@ class Inbox extends Memcached_DataObject
$inbox = Inbox::staticGet('user_id', $user_id); $inbox = Inbox::staticGet('user_id', $user_id);
if (empty($inbox)) { if (empty($inbox)) {
$inbox = Inbox::initialize($user_id); $inbox = Inbox::fromNoticeInbox($user_id);
if (empty($inbox)) { if (empty($inbox)) {
return array(); return array();
} else {
$inbox->encache();
} }
} }

View File

@ -150,7 +150,7 @@ function checkMirror($action_obj, $args)
{ {
global $config; global $config;
static $alwaysRW = array('session', 'remember_me', 'inbox'); static $alwaysRW = array('session', 'remember_me');
if (common_config('db', 'mirror') && $action_obj->isReadOnly($args)) { if (common_config('db', 'mirror') && $action_obj->isReadOnly($args)) {
if (is_array(common_config('db', 'mirror'))) { if (is_array(common_config('db', 'mirror'))) {