]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Sanity check on profile streams
authorEvan Prodromou <evan@status.net>
Wed, 21 Mar 2012 18:22:45 +0000 (14:22 -0400)
committerEvan Prodromou <evan@status.net>
Wed, 21 Mar 2012 18:22:45 +0000 (14:22 -0400)
lib/profilenoticestream.php

index 64cd31abc48d64f5d83276c5b2ea8db95b8d7d9b..d2948e60c859041c754bf6a634a89b221323003b 100644 (file)
@@ -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);
+    }
 }
 
 /**