X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fgroupnoticestream.php;h=723f064cb3523dab13b8de075fbd66b0e140ff1a;hb=e6a342b2a2edfcc9f276e172170fc0b3eb07b61d;hp=26784458e0ea1c7a7590cd068593098bcc13dab5;hpb=19b965d99188fde59cdd39b668df8951bc0f180c;p=quix0rs-gnu-social.git diff --git a/lib/groupnoticestream.php b/lib/groupnoticestream.php index 26784458e0..723f064cb3 100644 --- a/lib/groupnoticestream.php +++ b/lib/groupnoticestream.php @@ -46,15 +46,49 @@ if (!defined('STATUSNET')) { */ class GroupNoticeStream extends ScopingNoticeStream { + var $group; + var $userProfile; + function __construct($group, $profile = -1) { if (is_int($profile) && $profile == -1) { $profile = Profile::current(); } + $this->group = $group; + $this->userProfile = $profile; + parent::__construct(new CachingNoticeStream(new RawGroupNoticeStream($group), 'user_group:notice_ids:' . $group->id), $profile); } + + function getNoticeIds($offset, $limit, $since_id, $max_id) + { + if ($this->impossibleStream()) { + return array(); + } else { + return parent::getNoticeIds($offset, $limit, $since_id, $max_id); + } + } + + function getNotices($offset, $limit, $sinceId = null, $maxId = null) + { + if ($this->impossibleStream()) { + return new ArrayWrapper(array()); + } else { + return parent::getNotices($offset, $limit, $sinceId, $maxId); + } + } + + function impossibleStream() + { + if ($this->group->force_scope && + (empty($this->userProfile) || !$this->userProfile->isMember($this->group))) { + return true; + } + + return false; + } } /**