Public ban messages

This commit is contained in:
Savetheinternet 2011-04-03 18:20:55 +10:00
parent e5d9aa67a1
commit 1a378ee6b2
4 changed files with 42 additions and 8 deletions

View File

@ -256,6 +256,12 @@
$config['mod']['noticeboard_display'] = 50;
// Number of entries to summarize and display on the dashboard
$config['mod']['noticeboard_dashboard'] = 5;
// Default public ban message
$config['mod']['default_ban_message'] = 'USER WAS BANNED FOR THIS POST';
// What to append to the post for public bans ("%s" is the message)
$config['mod']['ban_message'] = '<span class="public_ban">(%s)</span>';
// Wait indefinitely when rebuilding everything
$config['mod']['rebuild_timelimit'] = 0;
// Probably best not to change these:
if(!defined('JANITOR')) {
@ -347,9 +353,8 @@
$config['mod']['noticeboard_post'] = MOD;
// Delete entries from the noticeboard
$config['mod']['noticeboard_delete'] = ADMIN;
// Wait indefinitely when rebuilding everything
$config['mod']['rebuild_timelimit'] = 0;
// Public ban messages; attached to posts
$config['mod']['public_ban'] = MOD;
// Mod links (full HTML)
// Correspond to above permission directives

View File

@ -146,11 +146,12 @@
return $body;
}
function form_newBan($ip=null, $reason='', $continue=false, $delete=false, $board=false) {
function form_newBan($ip=null, $reason='', $continue=false, $delete=false, $board=false, $allow_public = false) {
global $config, $mod;
return '<fieldset><legend>New ban</legend>' .
'<form action="?/ban" method="post">' .
($continue ? '<input type="hidden" name="continue" value="' . htmlentities($continue) . '" />' : '') .
($delete ? '<input type="hidden" name="delete" value="' . htmlentities($delete) . '" />' : '') .
($delete || $allow_public ? '<input type="hidden" name="' . (!$allow_public ? 'delete' : 'post') . '" value="' . htmlentities($delete) . '" />' : '') .
($board ? '<input type="hidden" name="board" value="' . htmlentities($board) . '" />' : '') .
'<table>' .
'<tr>' .
@ -167,6 +168,21 @@
htmlentities($reason) .
'</textarea></td>' .
'</tr>' .
($mod['type'] >= $config['mod']['public_ban'] && $allow_public ?
'<tr>' .
'<th><label for="message">Message</label></th>' .
'<td><input type="checkbox" id="public_message" name="public_message"/>' .
' <input type="text" name="message" id="message" size="35" maxlength="200" value="' . htmlentities($config['mod']['default_ban_message']) . '" />' .
' <span class="unimportant">(public; attached to post)</span></td>' .
'<script type="text/javascript">' .
'document.getElementById(\'message\').disabled = true;' .
'document.getElementById(\'public_message\').onchange = function() {' .
'document.getElementById(\'message\').disabled = !this.checked;' .
'}' .
'</script>' .
'</tr>'
: '') .
'<tr>' .
'<th><label for="length">Length</label></th>' .
'<td><input type="text" name="length" id="length" size="20" maxlength="40" />' .

18
mod.php
View File

@ -1445,7 +1445,7 @@
// Record the action
modLog('Created a ' . ($expire ? $expire . ' second' : 'permanent') . " ban for {$_POST['ip']} with " . (!empty($_POST['reason']) ? "reason \"{$_POST['reason']}\"" : 'no reason'));
$query->execute() or error(db_error($query));
//$query->execute() or error(db_error($query));
// Delete too
if($mod['type'] >= $config['mod']['delete'] && isset($_POST['delete']) && isset($_POST['board'])) {
@ -1462,6 +1462,20 @@
buildIndex();
}
if($mod['type'] >= $config['mod']['public_ban'] && isset($_POST['post']) && isset($_POST['board']) && isset($_POST['public_message']) && isset($_POST['message'])) {
openBoard($_POST['board']);
$post = round($_POST['post']);
$query = prepare(sprintf("UPDATE `posts_%s` SET `body` = CONCAT(`body`, :body) WHERE `id` = :id", $board['uri']));
$query->bindValue(':id', $post, PDO::PARAM_INT);
$query->bindValue(':body', sprintf($config['mod']['ban_message'], htmlentities($_POST['message'])));
$query->execute() or error(db_error($query));
// Record the action
modLog("Attached a public ban message for post #{$post}: " . $_POST['message']);
}
// Redirect
if(isset($_POST['continue']))
header('Location: ' . $_POST['continue'], true, $config['redirect_http']);
@ -1493,7 +1507,7 @@
$post = $query->fetch();
$body = form_newBan($post['ip'], null, isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false, $delete ? $post['id'] : false, $delete ? $boardName : false);
$body = form_newBan($post['ip'], null, isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false, $post['id'], $boardName, !$delete);
echo Element('page.html', Array(
'config'=>$config,

View File

@ -493,4 +493,3 @@
}
}
?>