X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Ftagnoticestream.php;h=5a99a1aa68a0b30faf7cc6b2ae0f0f371941ce40;hb=f134a423f6a9e7bb61d069c4d6281c05417bbd45;hp=567f04b7e45c56ba8866da522e11a9e4656b1f78;hpb=0dbdcf2936a00282114f1368ead2f5edebc6ae61;p=quix0rs-gnu-social.git diff --git a/lib/tagnoticestream.php b/lib/tagnoticestream.php index 567f04b7e4..5a99a1aa68 100644 --- a/lib/tagnoticestream.php +++ b/lib/tagnoticestream.php @@ -28,11 +28,7 @@ * @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')) { exit(1); } /** * Stream of notices with a given tag @@ -47,13 +43,11 @@ if (!defined('STATUSNET')) { class TagNoticeStream extends ScopingNoticeStream { - function __construct($tag, $profile = -1) + function __construct($tag, Profile $scoped=null) { - if (is_int($profile) && $profile == -1) { - $profile = Profile::current(); - } parent::__construct(new CachingNoticeStream(new RawTagNoticeStream($tag), - 'notice_tag:notice_ids:' . Cache::keyize($tag))); + 'notice_tag:notice_ids:' . Cache::keyize($tag)), + $scoped); } } @@ -89,7 +83,23 @@ class RawTagNoticeStream extends NoticeStream Notice::addWhereSinceId($nt, $since_id, 'notice_id'); Notice::addWhereMaxId($nt, $max_id, 'notice_id'); - $nt->orderBy('created DESC, notice_id DESC'); + if (!empty($this->selectVerbs)) { + $nt->joinAdd(array('notice_id', 'notice:id')); + + $filter = array_keys(array_filter($this->selectVerbs)); + if (!empty($filter)) { + // include verbs in selectVerbs with values that equate to true + $nt->whereAddIn('notice.verb', $filter, 'string'); + } + + $filter = array_keys(array_filter($this->selectVerbs, function ($v) { return !$v; })); + if (!empty($filter)) { + // exclude verbs in selectVerbs with values that equate to false + $nt->whereAddIn('!notice.verb', $filter, 'string'); + } + } + + $nt->orderBy('notice.created DESC, notice_id DESC'); if (!is_null($offset)) { $nt->limit($offset, $limit);