Browse Source
Merge pull request #348 from discomrade/ban-appeal-limit
Enforce maximum length of ban appeal
pull/40/head
nonmakina
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
17 additions and
5 deletions
-
inc/config.php
-
post.php
-
templates/banned.html
|
|
@ -664,6 +664,9 @@ |
|
|
|
// How many ban appeals can be made for a single ban? |
|
|
|
$config['ban_appeals_max'] = 1; |
|
|
|
|
|
|
|
// Maximum character length of appeal. |
|
|
|
$config['ban_appeal_max_chars'] = 120; |
|
|
|
|
|
|
|
// Show moderator name on ban page. |
|
|
|
$config['show_modname'] = false; |
|
|
|
|
|
|
@ -1156,6 +1159,11 @@ |
|
|
|
$config['error']['noreport'] = _('You didn\'t select anything to report.'); |
|
|
|
$config['error']['toolongreport'] = _('The reason was too long.'); |
|
|
|
$config['error']['toomanyreports'] = _('You can\'t report that many posts at once.'); |
|
|
|
$config['error']['noban'] = _('That ban doesn\'t exist or is not for you.'); |
|
|
|
$config['error']['tooshortban'] = _('You cannot appeal a ban of this length.'); |
|
|
|
$config['error']['toolongappeal'] = _('The appeal was too long.'); |
|
|
|
$config['error']['toomanyappeals'] = _('You cannot appeal this ban again.'); |
|
|
|
$config['error']['pendingappeal'] = _('There is already a pending appeal for this ban.'); |
|
|
|
$config['error']['invalidpassword'] = _('Wrong password…'); |
|
|
|
$config['error']['invalidimg'] = _('Invalid image.'); |
|
|
|
$config['error']['unknownext'] = _('Unknown file extension.'); |
|
|
|
|
|
@ -1487,23 +1487,27 @@ function handle_appeal(){ |
|
|
|
} |
|
|
|
|
|
|
|
if (!isset($ban)) { |
|
|
|
error(_("That ban doesn't exist or is not for you.")); |
|
|
|
error($config['error']['noban']); |
|
|
|
} |
|
|
|
|
|
|
|
if ($ban['expires'] && $ban['expires'] - $ban['created'] <= $config['ban_appeals_min_length']) { |
|
|
|
error(_("You cannot appeal a ban of this length.")); |
|
|
|
error($config['error']['tooshortban']); |
|
|
|
} |
|
|
|
|
|
|
|
$query = query("SELECT `denied` FROM ``ban_appeals`` WHERE `ban_id` = $ban_id") or error(db_error()); |
|
|
|
$ban_appeals = $query->fetchAll(PDO::FETCH_COLUMN); |
|
|
|
|
|
|
|
if (count($ban_appeals) >= $config['ban_appeals_max']) { |
|
|
|
error(_("You cannot appeal this ban again.")); |
|
|
|
error($config['error']['toomanyappeals']); |
|
|
|
} |
|
|
|
|
|
|
|
foreach ($ban_appeals as $is_denied) { |
|
|
|
if (!$is_denied) |
|
|
|
error(_("There is already a pending appeal for this ban.")); |
|
|
|
error($config['error']['pendingappeal']); |
|
|
|
} |
|
|
|
|
|
|
|
if (strlen($_POST['appeal']) > $config['ban_appeal_max_chars']) { |
|
|
|
error($config['error']['toolongappeal']); |
|
|
|
} |
|
|
|
|
|
|
|
$query = prepare("INSERT INTO ``ban_appeals`` VALUES (NULL, :ban_id, :time, :message, 0)"); |
|
|
|
|
|
@ -136,7 +136,7 @@ |
|
|
|
{% endif %} |
|
|
|
<form class="ban-appeal" action="" method="post"> |
|
|
|
<input type="hidden" name="ban_id" value="{{ ban.id }}"> |
|
|
|
<textarea name="appeal" rows="4" cols="40"></textarea> |
|
|
|
<textarea name="appeal" rows="4" cols="40" maxlength="{{ config.ban_appeal_max_chars }}"></textarea> |
|
|
|
<input type="submit" value="Submit"> |
|
|
|
</form> |
|
|
|
{% endif %} |
|
|
|