]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Profile->isPrivileged() to check if users have more rights than to post etc.
authorMikael Nordfeldth <mmn@hethane.se>
Fri, 12 Feb 2016 13:47:49 +0000 (14:47 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Fri, 12 Feb 2016 13:47:49 +0000 (14:47 +0100)
classes/Profile.php

index 0eaa06120a95b03633c7b326e42319d655eeef88..7aae98fb5f171e698ac73cb0dba13c8eab51e99d 100644 (file)
@@ -1179,9 +1179,9 @@ class Profile extends Managed_DataObject
         if (!$actor->hasRight(Right::SILENCEUSER)) {
             throw new AuthorizationException(_('You cannot silence users on this site.'));
         }
-        // Only administrators can silence other priviliged users (those who have the right to silence as well).
-        if ($this->hasRight(Right::SILENCEUSER) && !$actor->hasRole(Profile_role::ADMINISTRATOR)) {
-            throw new AuthorizationException(_('You cannot silence other priviliged users.'));
+        // Only administrators can silence other privileged users (such as others who have the right to silence).
+        if ($this->isPrivileged() && !$actor->hasRole(Profile_role::ADMINISTRATOR)) {
+            throw new AuthorizationException(_('You cannot silence other privileged users.'));
         }
         if ($this->isSilenced()) {
             // TRANS: Client error displayed trying to silence an already silenced user.
@@ -1221,6 +1221,22 @@ class Profile extends Managed_DataObject
         }
     }
 
+    public function isPrivileged()
+    {
+        // TODO: An Event::handle so plugins can report if users are privileged.
+        // The ModHelper is the only one I care about when coding this, and that
+        // can be tested with Right::SILENCEUSER which I do below:
+        switch (true) {
+        case $this->hasRight(Right::SILENCEUSER):
+        case $this->hasRole(Profile_role::MODERATOR):
+        case $this->hasRole(Profile_role::ADMINISTRATOR):
+        case $this->hasRole(Profile_role::OWNER):
+            return true;
+        }
+
+        return false;
+    }
+
     /**
      * Does this user have the right to do X?
      *