summaryrefslogtreecommitdiff
path: root/classes
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 /classes
parent935d5eed69250c2ff1654f2d0f3c1a707fd5d5aa (diff)
don't write Inbox if on a read-only page, but encache
Diffstat (limited to 'classes')
-rw-r--r--classes/Inbox.php30
1 files changed, 21 insertions, 9 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();
}
}