summaryrefslogtreecommitdiff
path: root/post.php
diff options
context:
space:
mode:
Diffstat (limited to 'post.php')
-rw-r--r--post.php44
1 files changed, 43 insertions, 1 deletions
diff --git a/post.php b/post.php
index 556de639..72b692cb 100644
--- a/post.php
+++ b/post.php
@@ -181,7 +181,8 @@ if (isset($_POST['delete'])) {
error($config['error']['bot']);
// Check the referrer
- if (!isset($_SERVER['HTTP_REFERER']) || !preg_match($config['referer_match'], rawurldecode($_SERVER['HTTP_REFERER'])))
+ if ($config['referer_match'] !== false &&
+ (!isset($_SERVER['HTTP_REFERER']) || !preg_match($config['referer_match'], rawurldecode($_SERVER['HTTP_REFERER']))))
error($config['error']['referer']);
checkDNSBL();
@@ -779,6 +780,47 @@ if (isset($_POST['delete'])) {
'id' => $id
));
}
+} elseif (isset($_POST['appeal'])) {
+ if (!isset($_POST['ban_id']))
+ error($config['error']['bot']);
+
+ $ban_id = (int)$_POST['ban_id'];
+
+ $bans = Bans::find($_SERVER['REMOTE_ADDR']);
+ foreach ($bans as $_ban) {
+ if ($_ban['id'] == $ban_id) {
+ $ban = $_ban;
+ break;
+ }
+ }
+
+ if (!isset($ban)) {
+ error(_("That ban doesn't exist or is not for you."));
+ }
+
+ if ($ban['expires'] && $ban['expires'] - $ban['created'] <= $config['ban_appeals_min_length']) {
+ error(_("You cannot appeal a ban of this length."));
+ }
+
+ $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."));
+ }
+
+ foreach ($ban_appeals as $is_denied) {
+ if (!$is_denied)
+ error(_("There is already a pending appeal for this ban."));
+ }
+
+ $query = prepare("INSERT INTO ``ban_appeals`` VALUES (NULL, :ban_id, :time, :message, 0)");
+ $query->bindValue(':ban_id', $ban_id, PDO::PARAM_INT);
+ $query->bindValue(':time', time(), PDO::PARAM_INT);
+ $query->bindValue(':message', $_POST['appeal']);
+ $query->execute() or error(db_error($query));
+
+ displayBan($ban);
} else {
if (!file_exists($config['has_installed'])) {
header('Location: install.php', true, $config['redirect_http']);