don't write Inbox if on a read-only page, but encache
This commit is contained in:
parent
935d5eed69
commit
4d7cdbf1c6
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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'))) {
|
||||||
|
Loading…
Reference in New Issue
Block a user