. * * @category Cache * @package StatusNet * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ if (!defined('STATUSNET')) { // This check helps protect against security problems; // your code file can't be executed directly from the web. exit(1); } /** * Stream of notices for the user's inbox * * @category General * @package StatusNet * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ class InboxNoticeStream extends ScopingNoticeStream { /** * Constructor * * @param User $user User to get a stream for */ function __construct($user, $profile = null) { // Note: we don't use CachingNoticeStream since RawInboxNoticeStream // uses Inbox::staticGet(), which is cached. parent::__construct(new RawInboxNoticeStream($user), $profile); } } /** * Raw stream of notices for the user's inbox * * @category General * @package StatusNet * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ class RawInboxNoticeStream extends NoticeStream { protected $user = null; protected $inbox = null; /** * Constructor * * @param User $user User to get a stream for */ function __construct($user) { $this->user = $user; $this->inbox = Inbox::staticGet('user_id', $user->id); } /** * Get IDs in a range * * @param int $offset Offset from start * @param int $limit Limit of number to get * @param int $since_id Since this notice * @param int $max_id Before this notice * * @return Array IDs found */ function getNoticeIds($offset, $limit, $since_id, $max_id) { if (empty($this->inbox)) { $this->inbox = Inbox::fromNoticeInbox($user_id); if (empty($this->inbox)) { return array(); } else { $this->inbox->encache(); } } $ids = $this->inbox->unpack(); if (!empty($since_id)) { $newids = array(); foreach ($ids as $id) { if ($id > $since_id) { $newids[] = $id; } } $ids = $newids; } if (!empty($max_id)) { $newids = array(); foreach ($ids as $id) { if ($id <= $max_id) { $newids[] = $id; } } $ids = $newids; } $ids = array_slice($ids, $offset, $limit); return $ids; } }