]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Don't auto-silence other users by IP by default
authorMikael Nordfeldth <mmn@hethane.se>
Fri, 26 Feb 2016 15:10:03 +0000 (16:10 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Fri, 26 Feb 2016 15:10:03 +0000 (16:10 +0100)
plugins/RegisterThrottle/RegisterThrottlePlugin.php

index d51932ba35beeedd567aba71008e5cfa11ca8795..5b999a4370cccd95bc9a752707f7323b1d2e21f4 100644 (file)
@@ -60,6 +60,14 @@ class RegisterThrottlePlugin extends Plugin
      */
     public $silenced = true;
 
+    /**
+     * Auto-silence all other users from the same registration_ip
+     * as the one being silenced. Caution: Many users may come from
+     * the same IP (even entire countries) without having any sort
+     * of relevant connection for moderation.
+     */
+    public $auto_silence_by_ip = false;
+
     /**
      * Whether we're enabled; prevents recursion.
      */
@@ -300,15 +308,15 @@ class RegisterThrottlePlugin extends Plugin
             return true;
         }
 
-        if ($role != Profile_role::SILENCED) {
+        if ($role !== Profile_role::SILENCED) {
             return true;
         }
 
-        if (!$this->silenced) {
+        if (!$this->auto_silence_by_ip) {
             return true;
         }
 
-        $ri = Registration_ip::getKV('user_id', $profile->id);
+        $ri = Registration_ip::getKV('user_id', $profile->getID());
 
         if (empty($ri)) {
             return true;
@@ -317,13 +325,13 @@ class RegisterThrottlePlugin extends Plugin
         $ids = Registration_ip::usersByIP($ri->ipaddress);
 
         foreach ($ids as $id) {
-            if ($id == $profile->id) {
+            if ($id == $profile->getID()) {
                 continue;
             }
 
-            $other = Profile::getKV('id', $id);
-
-            if (empty($other)) {
+            try {
+                $other = Profile::getByID($id);
+            } catch (NoResultException $e) {
                 continue;
             }
 
@@ -331,6 +339,11 @@ class RegisterThrottlePlugin extends Plugin
                 continue;
             }
 
+            // 'enabled' here is used to prevent recursion, since
+            // we'll end up in this function again on ->silence()
+            // though I actually think it doesn't matter since we
+            // do this in onEndGrantRole and that means the above
+            // $other->isSilenced() test should've 'continue'd...
             $old = self::$enabled;
             self::$enabled = false;
             $other->silence();