summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-01-13 16:26:46 -0800
committerEvan Prodromou <evan@status.net>2010-01-13 16:28:42 -0800
commit4d7cdbf1c65f54cd66eb7eab23985d4db0351b63 (patch)
tree6944f3cbefc83f7221825fa826e4ea2fd87fd531
parent935d5eed69250c2ff1654f2d0f3c1a707fd5d5aa (diff)
don't write Inbox if on a read-only page, but encache
-rw-r--r--classes/Inbox.php30
-rw-r--r--index.php2
2 files changed, 22 insertions, 10 deletions
diff --git a/classes/Inbox.php b/classes/Inbox.php
index e14d4f4e7..83cfe8ef8 100644
--- a/classes/Inbox.php
+++ b/classes/Inbox.php
@@ -57,6 +57,22 @@ class Inbox extends Memcached_DataObject
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();
$ni = new Notice_inbox();
@@ -80,13 +96,7 @@ class Inbox extends Memcached_DataObject
$inbox->user_id = $user_id;
$inbox->notice_ids = call_user_func_array('pack', array_merge(array('N*'), $ids));
-
- $result = $inbox->insert();
-
- if (!$result) {
- common_log_db_error($inbox, 'INSERT', __FILE__);
- return null;
- }
+ $inbox->fake = true;
return $inbox;
}
@@ -95,7 +105,7 @@ class Inbox extends Memcached_DataObject
{
$inbox = Inbox::staticGet('user_id', $user_id);
- if (empty($inbox)) {
+ if (empty($inbox) || $inbox->fake) {
$inbox = Inbox::initialize($user_id);
}
@@ -133,9 +143,11 @@ class Inbox extends Memcached_DataObject
$inbox = Inbox::staticGet('user_id', $user_id);
if (empty($inbox)) {
- $inbox = Inbox::initialize($user_id);
+ $inbox = Inbox::fromNoticeInbox($user_id);
if (empty($inbox)) {
return array();
+ } else {
+ $inbox->encache();
}
}
diff --git a/index.php b/index.php
index 59805f600..b5edc0f94 100644
--- a/index.php
+++ b/index.php
@@ -150,7 +150,7 @@ function checkMirror($action_obj, $args)
{
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 (is_array(common_config('db', 'mirror'))) {