X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fpeopletagnoticestream.php;h=4422261ae9a6950881d7823ea1c1190b1123a894;hb=22f6cec9b7b9a04e61ba355730ffab9db9bc8005;hp=34e7443da5e0e45d16abb86668770832d2f5619a;hpb=5304373b0b5c9905b30c85b565c23246d377467b;p=quix0rs-gnu-social.git diff --git a/lib/peopletagnoticestream.php b/lib/peopletagnoticestream.php index 34e7443da5..4422261ae9 100644 --- a/lib/peopletagnoticestream.php +++ b/lib/peopletagnoticestream.php @@ -3,7 +3,7 @@ * StatusNet - the distributed open-source microblogging tool * Copyright (C) 2011, StatusNet, Inc. * - * Stream of notices for a people tag + * Stream of notices for a list * * PHP version 5 * @@ -35,7 +35,7 @@ if (!defined('STATUSNET')) { } /** - * Stream of notices for a people tag + * Stream of notices for a list * * @category Stream * @package StatusNet @@ -47,15 +47,19 @@ if (!defined('STATUSNET')) { */ class PeopletagNoticeStream extends ScopingNoticeStream { - function __construct($plist) + function __construct($plist, $profile = -1) { + if (is_int($profile) && $profile == -1) { + $profile = Profile::current(); + } parent::__construct(new CachingNoticeStream(new RawPeopletagNoticeStream($plist), - 'profile_tag:notice_ids:' . $plist->id)); + 'profile_list:notice_ids:' . $plist->id), + $profile); } } /** - * Stream of notices for a people tag + * Stream of notices for a list * * @category Stream * @package StatusNet @@ -67,36 +71,56 @@ class PeopletagNoticeStream extends ScopingNoticeStream */ class RawPeopletagNoticeStream extends NoticeStream { - protected $profile_tag; + protected $profile_list; - function __construct($profile_tag) + function __construct($profile_list) { - $this->profile_tag = $profile_tag; + $this->profile_list = $profile_list; } + /** + * Query notices by users associated with this tag from the database. + * + * @param integer $offset offset + * @param integer $limit maximum no of results + * @param integer $since_id=null since this id + * @param integer $max_id=null maximum id in result + * + * @return array array of notice ids. + */ + function getNoticeIds($offset, $limit, $since_id, $max_id) { - $inbox = new Profile_tag_inbox(); + $notice = new Notice(); + + $notice->selectAdd(); + $notice->selectAdd('notice.id'); - $inbox->profile_tag_id = $this->profile_tag->id; + $ptag = new Profile_tag(); + $ptag->tag = $this->profile_list->tag; + $ptag->tagger = $this->profile_list->tagger; + $notice->joinAdd(array('profile_id', 'profile_tag:tagged')); + $notice->whereAdd('profile_tag.tagger = ' . $this->profile_list->tagger); + $notice->whereAdd(sprintf('profile_tag.tag = "%s"', $this->profile_list->tag)); - $inbox->selectAdd(); - $inbox->selectAdd('notice_id'); + if ($since_id != 0) { + $notice->whereAdd('notice.id > ' . $since_id); + } - Notice::addWhereSinceId($inbox, $since_id, 'notice_id'); - Notice::addWhereMaxId($inbox, $max_id, 'notice_id'); + if ($max_id != 0) { + $notice->whereAdd('notice.id <= ' . $max_id); + } - $inbox->orderBy('created DESC, notice_id DESC'); + $notice->orderBy('notice.id DESC'); if (!is_null($offset)) { - $inbox->limit($offset, $limit); + $notice->limit($offset, $limit); } $ids = array(); - - if ($inbox->find()) { - while ($inbox->fetch()) { - $ids[] = $inbox->notice_id; + if ($notice->find()) { + while ($notice->fetch()) { + $ids[] = $notice->id; } }