$scoped = Profile::current();
}
// FIXME: we don't use CachingNoticeStream - but maybe we should?
- parent::__construct(new RawInboxNoticeStream($target), $scoped);
+ parent::__construct(new CachingNoticeStream(new RawInboxNoticeStream($target), 'profileall'), $scoped);
}
}
// Subscription:: is a table of subscriptions (every user is subscribed to themselves)
$notice->whereAdd(
sprintf('notice.id IN (SELECT notice_id FROM reply WHERE profile_id=%1$d) ' .
- 'OR notice.profile_id IN (SELECT subscribed FROM subscription WHERE subscriber=%d)', $this->target->id)
+ 'OR notice.profile_id IN (SELECT subscribed FROM subscription WHERE subscriber=%1$d) ' .
+ 'OR notice.id IN (SELECT notice_id FROM group_inbox WHERE group_id IN (SELECT group_id FROM group_member WHERE profile_id=%1$d))' .
+ 'OR notice.id IN (SELECT notice_id FROM attention WHERE profile_id=%1$d)',
+ $this->target->id)
);
+ if (!empty($since_id)) {
+ $notice->whereAdd(sprintf('notice.id > %d', $since_id));
+ }
+ if (!empty($max_id)) {
+ $notice->whereAdd(sprintf('notice.id <= %d', $max_id));
+ }
+ if (!empty($this->selectVerbs)) {
+ $notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb'));
+ }
$notice->limit($offset, $limit);
- $notice->orderBy('notice.created DESC');
+ // notice.id will give us even really old posts, which were
+ // recently imported. For example if a remote instance had
+ // problems and just managed to post here. Another solution
+ // would be to have a 'notice.imported' field and order by it.
+ $notice->orderBy('notice.id DESC');
if (!$notice->find()) {
return array();