From 710eb8e86e03bdb62a3518abad753e6c9b4abce8 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 21 Mar 2012 16:18:27 -0400 Subject: [PATCH] Don't try to find profilenoticestream if impossible --- lib/profilenoticestream.php | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/lib/profilenoticestream.php b/lib/profilenoticestream.php index d2948e60c8..ba3387cf5c 100644 --- a/lib/profilenoticestream.php +++ b/lib/profilenoticestream.php @@ -62,28 +62,43 @@ class ProfileNoticeStream extends ScopingNoticeStream 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); - } + if ($this->impossibleStream()) { + return array(); + } else { + return parent::getNoticeIds($offset, $limit, $since_id, $max_id); } - - return parent::getNoticeIds($offset, $limit, $since_id, $max_id); } function getNotices($offset, $limit, $sinceId = null, $maxId = null) { - // Sanity check + if ($this->impossibleStream()) { + return array(); + } else { + return parent::getNotices($offset, $limit, $sinceId, $maxId); + } + } + + function impossibleStream() + { + $user = User::staticGet('id', $this->streamProfile->id); + + // If it's a private stream, and no user or not a subscriber + + if (!empty($user) && $user->private_stream && + empty($this->profile) || !$this->profile->isSubscribed($this->streamProfile)) { + return true; + } + + // If it's a spammy stream, and no user or not a moderator + 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 true; } } - return parent::getNotices($offset, $limit, $sinceId, $maxId); + return false; } }