summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-04-16 08:44:48 -0400
committerEvan Prodromou <evan@controlyourself.ca>2009-04-16 08:44:48 -0400
commit3081b2e31708520e6ed83041ce3ba04329d3ec90 (patch)
tree803da62300e5bb0e9f1a5a3d39dc8f2d463db850 /classes
parent573d4cf0fbc8f4ef5fb07e291f4a2b3dc0636ef5 (diff)
start of querybyid
Diffstat (limited to 'classes')
-rw-r--r--classes/User.php43
1 files changed, 32 insertions, 11 deletions
diff --git a/classes/User.php b/classes/User.php
index 3b9b5cd83..098381f73 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -444,21 +444,42 @@ class User extends Memcached_DataObject
'SELECT notice.* ' .
'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' .
'WHERE subscription.subscriber = %d ';
- $order = null;
+ return Notice::getStream(sprintf($qry, $this->id),
+ 'user:notices_with_friends:' . $this->id,
+ $offset, $limit, $since_id, $before_id,
+ $order, $since);
} else if ($enabled === true ||
($enabled == 'transitional' && $this->inboxed == 1)) {
- $qry =
- 'SELECT notice.* ' .
- 'FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id ' .
- 'WHERE notice_inbox.user_id = %d ';
- // NOTE: we override ORDER
- $order = null;
+ $cache = common_memcache();
+
+ if (!empty($cache)) {
+
+ # Get the notices out of the cache
+
+ $notices = $cache->get(common_cache_key($cachekey));
+
+ # On a cache hit, return a DB-object-like wrapper
+
+ if ($notices !== false) {
+ $wrapper = new ArrayWrapper(array_slice($notices, $offset, $limit));
+ return $wrapper;
+ }
+ }
+
+ $inbox = Notice_inbox::stream($this->id, $offset, $limit, $since_id, $before_id, $since);
+
+ $ids = array();
+
+ while ($inbox->fetch()) {
+ $ids[] = $inbox->notice_id;
+ }
+
+ $inbox->free();
+ unset($inbox);
+
+ return Notice::getStreamByIds($ids, 'user:notices_with_friends:' . $this->id);
}
- return Notice::getStream(sprintf($qry, $this->id),
- 'user:notices_with_friends:' . $this->id,
- $offset, $limit, $since_id, $before_id,
- $order, $since);
}
function blowFavesCache()