summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
authorMichael Save <savethenternet@tinyboard.org>2013-03-16 18:27:24 +1100
committerMichael Save <savethenternet@tinyboard.org>2013-03-16 18:27:24 +1100
commit64ae123739c39567447bfc16fc95deb556786671 (patch)
treecc0abc28878bb0382c547c338c5f10eee7fc0a22 /inc
parent1816218c64da5881c681808893ce8a9dc7eb54db (diff)
Mod log in ?/IP (ie. ban history)
Diffstat (limited to 'inc')
-rw-r--r--inc/config.php3
-rw-r--r--inc/mod/ban.php15
-rw-r--r--inc/mod/pages.php9
3 files changed, 24 insertions, 3 deletions
diff --git a/inc/config.php b/inc/config.php
index cedf3e06..8d37e601 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -986,6 +986,9 @@
$config['mod']['createusers'] = ADMIN;
// View the moderation log
$config['mod']['modlog'] = ADMIN;
+ // View relevant moderation log entries on IP address pages (ie. ban history, etc.)
+ // Warning: Can be pretty resource exhaustive if your mod logs are huge.
+ $config['mod']['modlog_ip'] = MOD;
// Create a PM (viewing mod usernames)
$config['mod']['create_pm'] = JANITOR;
// Read any PM, sent to or from anybody
diff --git a/inc/mod/ban.php b/inc/mod/ban.php
index 9c93d70e..30234157 100644
--- a/inc/mod/ban.php
+++ b/inc/mod/ban.php
@@ -80,16 +80,25 @@ function ban($mask, $reason, $length, $board) {
modLog('Created a new ' .
($length > 0 ? preg_replace('/^(\d+) (\w+?)s?$/', '$1-$2', until($length)) : 'permanent') .
- ' ban (<small>#' . $pdo->lastInsertId() . '</small>) for ' .
+ ' ban on ' .
+ ($board ? '/' . $board . '/' : 'all boards') .
+ ' for ' .
(filter_var($mask, FILTER_VALIDATE_IP) !== false ? "<a href=\"?/IP/$mask\">$mask</a>" : utf8tohtml($mask)) .
+ ' (<small>#' . $pdo->lastInsertId() . '</small>)' .
' with ' . ($reason ? 'reason: ' . utf8tohtml($reason) . '' : 'no reason'));
}
-function unban($id) {
+function unban($id) {
+ $query = prepare("SELECT `ip` FROM `bans` WHERE `id` = :id");
+ $query->bindValue(':id', $id);
+ $query->execute() or error(db_error($query));
+ $mask = $query->fetchColumn();
+
$query = prepare("DELETE FROM `bans` WHERE `id` = :id");
$query->bindValue(':id', $id);
$query->execute() or error(db_error($query));
- modLog("Removed ban #{$id}");
+ if ($mask)
+ modLog("Removed ban #{$id} for " . (filter_var($mask, FILTER_VALIDATE_IP) !== false ? "<a href=\"?/IP/$mask\">$mask</a>" : utf8tohtml($mask)));
}
diff --git a/inc/mod/pages.php b/inc/mod/pages.php
index 4d588030..db51324a 100644
--- a/inc/mod/pages.php
+++ b/inc/mod/pages.php
@@ -600,6 +600,15 @@ function mod_page_ip($ip) {
$args['notes'] = $query->fetchAll(PDO::FETCH_ASSOC);
}
+ if (hasPermission($config['mod']['modlog_ip'])) {
+ $query = prepare("SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `text` LIKE :search ORDER BY `time` DESC LIMIT 20");
+ $query->bindValue(':search', '%' . $ip . '%');
+ $query->execute() or error(db_error($query));
+ $args['logs'] = $query->fetchAll(PDO::FETCH_ASSOC);
+ } else {
+ $args['logs'] = array();
+ }
+
mod_page(sprintf('%s: %s', _('IP'), $ip), 'mod/view_ip.html', $args, $args['hostname']);
}