* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2011, StatusNet, Inc.
*
- * Stream of notices for the user's inbox
+ * Stream of notices for a profile's "all" feed
*
* PHP version 5
*
* @category NoticeStream
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
+ * @author Mikael Nordfeldth <mmn@hethane.se>
* @copyright 2011 StatusNet, Inc.
+ * @copyright 2014 Free Software Foundation, 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);
-}
+if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); }
/**
- * Stream of notices for the user's inbox
+ * Stream of notices for a profile's "all" feed
*
* @category General
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
+ * @author Mikael Nordfeldth <mmn@hethane.se>
* @copyright 2011 StatusNet, Inc.
+ * @copyright 2014 Free Software Foundation, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
/**
* Constructor
*
- * @param User $user User to get a stream for
+ * @param Profile $target Profile to get a stream for
+ * @param Profile $scoped Currently scoped profile (if null, it is fetched)
*/
- function __construct($user, $profile = -1)
+ function __construct(Profile $target, Profile $scoped=null)
{
- if (is_int($profile) && $profile == -1) {
- $profile = Profile::current();
+ if ($scoped === null) {
+ $scoped = Profile::current();
}
// Note: we don't use CachingNoticeStream since RawInboxNoticeStream
// uses Inbox::getKV(), which is cached.
- parent::__construct(new RawInboxNoticeStream($user), $profile);
+ parent::__construct(new RawInboxNoticeStream($target), $scoped);
}
}
/**
- * Raw stream of notices for the user's inbox
+ * Raw stream of notices for the target's inbox
*
* @category General
* @package StatusNet
*/
class RawInboxNoticeStream extends NoticeStream
{
- protected $user = null;
+ protected $target = null;
protected $inbox = null;
/**
* Constructor
*
- * @param User $user User to get a stream for
+ * @param Profile $target Profile to get a stream for
*/
- function __construct($user)
+ function __construct(Profile $target)
{
- $this->user = $user;
- $this->inbox = Inbox::getKV('user_id', $user->id);
+ $this->target = $target;
}
/**
*/
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;
+ $notice = new Notice();
+ $notice->selectAdd();
+ $notice->selectAdd('notice_id');
+ // Reply is a class for mentions
+ $notice->joinAdd(array('id', 'reply:notice_id'));
+
+ $notice->profile_id = $this->target->id;
+ $notice->limit($offset, $limit);
+ $notice->orderBy('created DESC');
+
+ if (!$notice->find()) {
+ return array();
}
- $ids = array_slice($ids, $offset, $limit);
+ $ids = $notice->fetchAll('notice_id');
return $ids;
}