From: Evan Prodromou Date: Wed, 21 Mar 2012 18:22:45 +0000 (-0400) Subject: Sanity check on profile streams X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=07f70b43b503af7f3178d87077de255e4cdf86ee;p=quix0rs-gnu-social.git Sanity check on profile streams --- diff --git a/lib/profilenoticestream.php b/lib/profilenoticestream.php index 64cd31abc4..d2948e60c8 100644 --- a/lib/profilenoticestream.php +++ b/lib/profilenoticestream.php @@ -47,15 +47,44 @@ if (!defined('STATUSNET')) { class ProfileNoticeStream extends ScopingNoticeStream { + var $streamProfile; + function __construct($profile, $userProfile = -1) { if (is_int($userProfile) && $userProfile == -1) { $userProfile = Profile::current(); } + $this->streamProfile = $profile; parent::__construct(new CachingNoticeStream(new RawProfileNoticeStream($profile), 'profile:notice_ids:' . $profile->id), $userProfile); } + + function getNoticeIds($offset, $limit, $since_id, $max_id) + { + // Sanity check + if (common_config('notice', 'hidespam')) { + if ($this->streamProfile->hasRole(Profile_role::SILENCED) && + (empty($this->profile) || !$this->profile->hasRole(Profile_role::MODERATOR))) { + throw new ClientException(_("This account silenced by moderators."), 403); + } + } + + return parent::getNoticeIds($offset, $limit, $since_id, $max_id); + } + + function getNotices($offset, $limit, $sinceId = null, $maxId = null) + { + // Sanity check + if (common_config('notice', 'hidespam')) { + if ($this->streamProfile->hasRole(Profile_role::SILENCED) && + (empty($this->profile) || !$this->profile->hasRole(Profile_role::MODERATOR))) { + throw new ClientException(_("This account silenced by moderators."), 403); + } + } + + return parent::getNotices($offset, $limit, $sinceId, $maxId); + } } /**