summaryrefslogtreecommitdiff
path: root/classes/Inbox.php
diff options
context:
space:
mode:
Diffstat (limited to 'classes/Inbox.php')
-rw-r--r--classes/Inbox.php53
1 files changed, 53 insertions, 0 deletions
diff --git a/classes/Inbox.php b/classes/Inbox.php
index 35f532c06..de48d7381 100644
--- a/classes/Inbox.php
+++ b/classes/Inbox.php
@@ -31,6 +31,8 @@ require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
class Inbox extends Memcached_DataObject
{
+ const BOXCAR = 128;
+
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
@@ -48,4 +50,55 @@ class Inbox extends Memcached_DataObject
{
return array(false, false, false);
}
+
+ static function insertNotice($user_id, $notice_id)
+ {
+ $inbox = new Inbox();
+
+ $inbox->query(sprintf('UPDATE inbox '.
+ 'set notice_ids = concat(cast(%08x as binary(4)), '.
+ 'substr(notice_ids, 1, 4092)) '.
+ 'WHERE user_id = %d',
+ $notice_id, $user_id));
+ }
+
+ static function bulkInsert($notice_id, $user_ids)
+ {
+ $cnt = count($user_ids);
+
+ for ($off = 0; $off < $cnt; $off += self::BOXCAR) {
+
+ $boxcar = array_slice($user_ids, $off, self::BOXCAR);
+
+ if (empty($boxcar)) { // jump in, hobo!
+ break;
+ }
+
+ $inbox = new Inbox();
+
+ $inbox->query(sprintf('UPDATE inbox '.
+ 'set notice_ids = concat(cast(%08x as binary(4)), '.
+ 'substr(notice_ids, 1, 4092)) '.
+ 'WHERE user_id in (%s)',
+ $notice_id, implode(',', $boxcar)));
+
+ $inbox->free();
+ }
+ }
+
+ function stream($user_id, $offset, $limit, $since_id, $max_id, $since, $own=false)
+ {
+ $inbox = Inbox::staticGet('user_id', $user_id);
+
+ if (empty($inbox)) {
+ return array();
+ }
+
+ $ids = unpack('L*', $inbox->notice_ids);
+
+ // XXX: handle since_id
+ // XXX: handle max_id
+
+ $ids = array_slice($ids, $offset, $limit);
+ }
}