Merge pull request #109 from undido/banlistpatch

Banlistpatch
This commit is contained in:
Michael 2013-06-17 09:54:29 -07:00
commit 2df2b8ba4d
2 changed files with 20 additions and 1 deletions

View File

@ -686,6 +686,7 @@
$config['error']['captcha'] = _('You seem to have mistyped the verification.'); $config['error']['captcha'] = _('You seem to have mistyped the verification.');
// Moderator errors // Moderator errors
$config['error']['toomanyunban'] = _('You are only allowed to unban %s users at a time. You tried to unban %u users.');
$config['error']['invalid'] = _('Invalid username and/or password.'); $config['error']['invalid'] = _('Invalid username and/or password.');
$config['error']['notamod'] = _('You are not a mod…'); $config['error']['notamod'] = _('You are not a mod…');
$config['error']['invalidafter'] = _('Invalid username and/or password. Your user may have been deleted or changed.'); $config['error']['invalidafter'] = _('Invalid username and/or password. Your user may have been deleted or changed.');
@ -769,6 +770,9 @@
* ==================== * ====================
*/ */
// Limit how many bans can be removed via the ban list. (Set too -1 to remove limit.)
$config['mod']['unban_limit'] = 5;
// Whether or not to lock moderator sessions to the IP address that was logged in with. // Whether or not to lock moderator sessions to the IP address that was logged in with.
$config['mod']['lock_ip'] = true; $config['mod']['lock_ip'] = true;

View File

@ -651,7 +651,8 @@ function mod_bans($page_no = 1) {
if (preg_match('/^ban_(\d+)$/', $name, $match)) if (preg_match('/^ban_(\d+)$/', $name, $match))
$unban[] = $match[1]; $unban[] = $match[1];
} }
if (isset($config['mod']['unban_limit'])){
if (count($unban) <= $config['mod']['unban_limit'] || $config['mod']['unban_limit'] == -1){
if (!empty($unban)) { if (!empty($unban)) {
query('DELETE FROM `bans` WHERE `id` = ' . implode(' OR `id` = ', $unban)) or error(db_error()); query('DELETE FROM `bans` WHERE `id` = ' . implode(' OR `id` = ', $unban)) or error(db_error());
@ -659,7 +660,21 @@ function mod_bans($page_no = 1) {
modLog("Removed ban #{$id}"); modLog("Removed ban #{$id}");
} }
} }
} else {
error(sprintf($config['error']['toomanyunban'], $config['mod']['unban_limit'], count($unban) ));
}
} else {
if (!empty($unban)) {
query('DELETE FROM `bans` WHERE `id` = ' . implode(' OR `id` = ', $unban)) or error(db_error());
foreach ($unban as $id) {
modLog("Removed ban #{$id}");
}
}
}
header('Location: ?/bans', true, $config['redirect_http']); header('Location: ?/bans', true, $config['redirect_http']);
} }