]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Don't try to find profilenoticestream if impossible
authorEvan Prodromou <evan@status.net>
Wed, 21 Mar 2012 20:18:27 +0000 (16:18 -0400)
committerEvan Prodromou <evan@status.net>
Wed, 21 Mar 2012 20:18:27 +0000 (16:18 -0400)
lib/profilenoticestream.php

index d2948e60c859041c754bf6a634a89b221323003b..ba3387cf5ca7865036e667aa7d0e5db7971718fa 100644 (file)
@@ -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;
     }
 }