Don't auto-silence other users by IP by default

This commit is contained in:
Mikael Nordfeldth 2016-02-26 16:10:03 +01:00
parent ba51a696d2
commit b4dc060d75

View File

@ -60,6 +60,14 @@ class RegisterThrottlePlugin extends Plugin
*/ */
public $silenced = true; 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. * Whether we're enabled; prevents recursion.
*/ */
@ -300,15 +308,15 @@ class RegisterThrottlePlugin extends Plugin
return true; return true;
} }
if ($role != Profile_role::SILENCED) { if ($role !== Profile_role::SILENCED) {
return true; return true;
} }
if (!$this->silenced) { if (!$this->auto_silence_by_ip) {
return true; return true;
} }
$ri = Registration_ip::getKV('user_id', $profile->id); $ri = Registration_ip::getKV('user_id', $profile->getID());
if (empty($ri)) { if (empty($ri)) {
return true; return true;
@ -317,13 +325,13 @@ class RegisterThrottlePlugin extends Plugin
$ids = Registration_ip::usersByIP($ri->ipaddress); $ids = Registration_ip::usersByIP($ri->ipaddress);
foreach ($ids as $id) { foreach ($ids as $id) {
if ($id == $profile->id) { if ($id == $profile->getID()) {
continue; continue;
} }
$other = Profile::getKV('id', $id); try {
$other = Profile::getByID($id);
if (empty($other)) { } catch (NoResultException $e) {
continue; continue;
} }
@ -331,6 +339,11 @@ class RegisterThrottlePlugin extends Plugin
continue; 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; $old = self::$enabled;
self::$enabled = false; self::$enabled = false;
$other->silence(); $other->silence();