X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Finboxnoticestream.php;h=87868b1d79aab4f2e6b852dac3a7106ac229c293;hb=refs%2Fheads%2Fsazius-nightly;hp=a8633314d55a2834ab2ea425d7157bec14aca672;hpb=2272cc244d04ff974cb3ef23538a6fc7a1cee277;p=quix0rs-gnu-social.git diff --git a/lib/inboxnoticestream.php b/lib/inboxnoticestream.php index a8633314d5..87868b1d79 100644 --- a/lib/inboxnoticestream.php +++ b/lib/inboxnoticestream.php @@ -58,7 +58,7 @@ class InboxNoticeStream extends ScopingNoticeStream $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); } } @@ -107,10 +107,26 @@ class RawInboxNoticeStream extends NoticeStream // 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();