. /** * Stream of notices that are repeats of mine * * @category Stream * @package GNUsocial * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ defined('GNUSOCIAL') || die(); /** * Stream of notices that are repeats of mine * * @category Stream * @package GNUsocial * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ class RepeatsOfMeNoticeStream extends ScopingNoticeStream { public function __construct(Profile $target, Profile $scoped=null) { parent::__construct(new CachingNoticeStream( new RawRepeatsOfMeNoticeStream($target), 'user:repeats_of_me:' . $target->getID() ), $scoped); } } /** * Raw stream of notices that are repeats of mine * * @category Stream * @package GNUsocial * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ class RawRepeatsOfMeNoticeStream extends NoticeStream { protected $target; public function __construct(Profile $target) { $this->target = $target; } public function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); $notice->selectAdd('notice.id'); $notice->joinAdd(['id', 'notice:repeat_of'], 'LEFT', 'repeat'); $notice->whereAdd('repeat.repeat_of IS NOT NULL'); $notice->whereAdd('notice.profile_id = ' . $this->target->getID()); Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); $notice->orderBy('notice.created DESC, notice.id DESC'); $notice->limit($offset, $limit); if (!$notice->find()) { return []; } return $notice->fetchAll('id'); } }