diff --git a/lib/conversationnoticestream.php b/lib/conversationnoticestream.php index 21b942c018..27489a42df 100644 --- a/lib/conversationnoticestream.php +++ b/lib/conversationnoticestream.php @@ -95,10 +95,8 @@ class RawConversationNoticeStream extends NoticeStream $notice->limit($offset, $limit); } - if (!$this->allVerbs) { - $notice->whereAdd(sprintf('verb="%s" OR verb="%s"', - ActivityVerb::POST, - ActivityUtils::resolveUri(ActivityVerb::POST, true))); + if (!empty($this->selectVerbs)) { + $notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb')); } // ORDER BY diff --git a/lib/inboxnoticestream.php b/lib/inboxnoticestream.php index eacbb77127..87868b1d79 100644 --- a/lib/inboxnoticestream.php +++ b/lib/inboxnoticestream.php @@ -118,6 +118,9 @@ class RawInboxNoticeStream extends NoticeStream 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.id will give us even really old posts, which were // recently imported. For example if a remote instance had diff --git a/lib/noticestream.php b/lib/noticestream.php index c072941a69..0f53daf83f 100644 --- a/lib/noticestream.php +++ b/lib/noticestream.php @@ -46,7 +46,13 @@ if (!defined('STATUSNET')) { */ abstract class NoticeStream { - protected $allVerbs = false; // Will only get 'post' activityverbs by default. + // Will only get notices with the 'post' activityverb by default. + protected $selectVerbs = array(); + + public function __construct() + { + $this->selectVerbs = array(ActivityVerb::POST, ActivityUtils::resolveUri(ActivityVerb::POST, true)); + } abstract function getNoticeIds($offset, $limit, $since_id, $max_id); diff --git a/lib/profilenoticestream.php b/lib/profilenoticestream.php index a59a5d848b..1fa795d320 100644 --- a/lib/profilenoticestream.php +++ b/lib/profilenoticestream.php @@ -121,6 +121,7 @@ class RawProfileNoticeStream extends NoticeStream function __construct($profile) { + parent::__construct(); $this->profile = $profile; } @@ -136,12 +137,6 @@ class RawProfileNoticeStream extends NoticeStream Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); - if (!$this->allVerbs) { - $notice->whereAdd(sprintf('verb="%s" OR verb="%s"', - ActivityVerb::POST, - ActivityUtils::resolveUri(ActivityVerb::POST, true))); - } - $notice->orderBy('created DESC, id DESC'); if (!is_null($offset)) { diff --git a/lib/publicnoticestream.php b/lib/publicnoticestream.php index 222eead0ef..34f7b4a1de 100644 --- a/lib/publicnoticestream.php +++ b/lib/publicnoticestream.php @@ -92,10 +92,8 @@ class RawPublicNoticeStream extends NoticeStream Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); - if (!$this->allVerbs) { - $notice->whereAdd(sprintf('verb="%s" OR verb="%s"', - ActivityVerb::POST, - ActivityUtils::resolveUri(ActivityVerb::POST, true))); + if (!empty($this->selectVerbs)) { + $notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb')); } $ids = array(); diff --git a/plugins/Favorite/lib/favenoticestream.php b/plugins/Favorite/lib/favenoticestream.php index 6527e5441e..6294c8cdda 100644 --- a/plugins/Favorite/lib/favenoticestream.php +++ b/plugins/Favorite/lib/favenoticestream.php @@ -79,8 +79,12 @@ class RawFaveNoticeStream extends NoticeStream function __construct($user_id, $own) { + parent::__construct(); + $this->user_id = $user_id; $this->own = $own; + + $this->selectVerbs = array(); } /**