diff --git a/inc/config.php b/inc/config.php
index 6984d70a..c65b3bac 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -739,6 +739,7 @@
$config['mod']['link_bandelete'] = '[B&D]';
$config['mod']['link_deletefile'] = '[F]';
$config['mod']['link_deletebyip'] = '[D+]';
+ $config['mod']['link_deletebyip_global'] = '[D++]';
$config['mod']['link_sticky'] = '[Sticky]';
$config['mod']['link_desticky'] = '[-Sticky]';
$config['mod']['link_lock'] = '[Lock]';
@@ -851,6 +852,8 @@
$config['mod']['deletefile'] = JANITOR;
// Delete all posts by IP
$config['mod']['deletebyip'] = MOD;
+ // Delete all posts by IP across all boards
+ $config['mod']['deletebyip_global'] = ADMIN;
// Sticky a thread
$config['mod']['sticky'] = MOD;
// Lock a thread
diff --git a/inc/display.php b/inc/display.php
index f307bb91..8be431aa 100644
--- a/inc/display.php
+++ b/inc/display.php
@@ -275,6 +275,10 @@
if(hasPermission($config['mod']['deletebyip'], $board['uri'], $this->mod))
$built .= ' ' . confirmLink($config['mod']['link_deletebyip'], 'Delete all posts by IP', 'Are you sure you want to delete all posts by this IP address?', $board['uri'] . '/deletebyip/' . $this->id);
+ // Delete all posts by IP (global)
+ if(hasPermission($config['mod']['deletebyip_global'], $board['uri'], $this->mod))
+ $built .= ' ' . confirmLink($config['mod']['link_deletebyip_global'], 'Delete all posts by IP across all boards', 'Are you sure you want to delete all posts by this IP address, across all boards?', $board['uri'] . '/deletebyip/' . $this->id . '/global');
+
// Ban
if(hasPermission($config['mod']['ban'], $board['uri'], $this->mod))
$built .= ' ' . $config['mod']['link_ban'] . '';
@@ -368,6 +372,10 @@
if(hasPermission($config['mod']['deletebyip'], $board['uri'], $this->mod))
$built .= ' ' . confirmLink($config['mod']['link_deletebyip'], 'Delete all posts by IP', 'Are you sure you want to delete all posts by this IP address?', $board['uri'] . '/deletebyip/' . $this->id);
+ // Delete all posts by IP (global)
+ if(hasPermission($config['mod']['deletebyip_global'], $board['uri'], $this->mod))
+ $built .= ' ' . confirmLink($config['mod']['link_deletebyip_global'], 'Delete all posts by IP across all boards', 'Are you sure you want to delete all posts by this IP address, across all boards?', $board['uri'] . '/deletebyip/' . $this->id . '/global');
+
// Ban
if(hasPermission($config['mod']['ban'], $board['uri'], $this->mod))
$built .= ' ' . $config['mod']['link_ban'] . '';
diff --git a/mod.php b/mod.php
index a7d57ffa..64c3e8fb 100644
--- a/mod.php
+++ b/mod.php
@@ -2481,11 +2481,13 @@
// Redirect
header('Location: ?/' . sprintf($config['board_path'], $boardName) . $config['file_index'], true, $config['redirect_http']);
- } elseif(preg_match('/^\/' . $regex['board'] . 'deletebyip\/(\d+)$/', $query, $matches)) {
+ } elseif(preg_match('/^\/' . $regex['board'] . 'deletebyip\/(\d+)(\/global)?$/', $query, $matches)) {
// Delete all posts by an IP
$boardName = &$matches[1];
$post = &$matches[2];
+ $global = isset($matches[3]) && $matches[3] == '/global';
+
// Open board
if(!openBoard($boardName))
error($config['error']['noboard']);
@@ -2499,9 +2501,13 @@
$ip = $post['ip'];
- $boards = listBoards();
+ if($global)
+ $boards = listBoards();
+ else
+ $boards = Array(Array('uri' => $board['uri']));
+
$query = '';
- foreach($boards as &$_board) {
+ foreach($boards as $_board) {
$query .= sprintf("SELECT `id`, '%s' AS `board` FROM `posts_%s` WHERE `ip` = :ip UNION ALL ", $_board['uri'], $_board['uri']);
}
$query = preg_replace('/UNION ALL $/', '', $query);