Use inbox instead of notice_inbox

This commit is contained in:
Evan Prodromou
2009-12-30 09:06:07 -10:00
parent 7640d3f07b
commit ed5e91d60d
3 changed files with 72 additions and 82 deletions

View File

@@ -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);
}
}