diff --git a/inc/config.php b/inc/config.php index 720795f2..bf227b08 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1613,6 +1613,8 @@ $config['mod']['report_dismiss'] = JANITOR; // Dismiss all abuse reports by an IP $config['mod']['report_dismiss_ip'] = JANITOR; + // Dismiss all abuse reports for a post + $config['mod']['report_dismiss_post'] = JANITOR; // View list of bans $config['mod']['view_banlist'] = MOD; // View the username of the mod who made a ban diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 2a11918d..d4054f3e 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -2377,7 +2377,8 @@ function mod_reports() { 'config' => $config, 'mod' => $mod, 'token' => make_secure_link_token('reports/' . $report['id'] . '/dismiss'), - 'token_all' => make_secure_link_token('reports/' . $report['id'] . '/dismissall') + 'token_all' => make_secure_link_token('reports/' . $report['id'] . '/dismiss&all'), + 'token_post' => make_secure_link_token('reports/'. $report['id'] . '/dismiss&post'), )); // Bug fix for https://github.com/savetheinternet/Tinyboard/issues/21 @@ -2402,7 +2403,7 @@ function mod_reports() { mod_page(sprintf('%s (%d)', _('Report queue'), $count), $config['file_mod_reports'], array('reports' => $body, 'count' => $count)); } -function mod_report_dismiss($id, $all = false) { +function mod_report_dismiss($id, $action) { global $config; $query = prepare("SELECT `post`, `board`, `ip` FROM ``reports`` WHERE `id` = :id"); @@ -2415,27 +2416,35 @@ function mod_report_dismiss($id, $all = false) { } else error($config['error']['404']); - if (!$all && !hasPermission($config['mod']['report_dismiss'], $board)) - error($config['error']['noaccess']); - - if ($all && !hasPermission($config['mod']['report_dismiss_ip'], $board)) - error($config['error']['noaccess']); - - if ($all) { - $query = prepare("DELETE FROM ``reports`` WHERE `ip` = :ip"); - $query->bindValue(':ip', $ip); - } else { - $query = prepare("DELETE FROM ``reports`` WHERE `id` = :id"); - $query->bindValue(':id', $id); + switch($action){ + case '&post': + if (!hasPermission($config['mod']['report_dismiss_post'], $board)) + error($config['error']['noaccess']); + + $query = prepare("DELETE FROM ``reports`` WHERE `post` = :post"); + $query->bindValue(':post', $post); + modLog("Dismissed all reports for post #{$id}", $board); + case '&all': + if (!hasPermission($config['mod']['report_dismiss_ip'], $board)) + error($config['error']['noaccess']); + + $query = prepare("DELETE FROM ``reports`` WHERE `ip` = :ip"); + $query->bindValue(':ip', $ip); + $cip = cloak_ip($ip); + modLog("Dismissed all reports by $cip"); + break; + case '': + default: + if (!hasPermission($config['mod']['report_dismiss'], $board)) + error($config['error']['noaccess']); + + $query = prepare("DELETE FROM ``reports`` WHERE `id` = :id"); + $query->bindValue(':id', $id); + modLog("Dismissed a report for post #{$id}", $board); + break; } $query->execute() or error(db_error($query)); - $cip = cloak_ip($ip); - if ($all) - modLog("Dismissed all reports by $cip"); - else - modLog("Dismissed a report for post #{$post} (#{$id})", $board); - header('Location: ?/reports', true, $config['redirect_http']); } diff --git a/mod.php b/mod.php index 282fc666..94e419ef 100644 --- a/mod.php +++ b/mod.php @@ -55,7 +55,7 @@ $pages = array( '/rebuild' => 'secure_POST rebuild', // rebuild static files '/reports' => 'reports', // report queue - '/reports/(\d+)/dismiss(all)?' => 'secure report_dismiss', // dismiss a report + '/reports/(\d+)/dismiss(&all|&post)?' => 'secure report_dismiss', // dismiss a report '/IP/([\w.:]+)' => 'secure_POST ip', // view ip address '/IP/([\w.:]+)/remove_note/(\d+)' => 'secure ip_remove_note', // remove note from ip address diff --git a/templates/mod/report.html b/templates/mod/report.html index 1229596a..d5d691d9 100644 --- a/templates/mod/report.html +++ b/templates/mod/report.html @@ -17,9 +17,15 @@ {% endif %} {% if mod|hasPermission(config.mod.report_dismiss_ip, report.board) %} {% if mod|hasPermission(config.mod.report_dismiss, report.board) %} - | + |  {% endif %} - Dismiss+ + Dismiss+ + {% endif %} + {% if mod|hasPermission(config.mod.report_dismiss_post, report.board) %} + {% if mod|hasPermission(config.mod.report_dismiss, report.board) %} + |  + {% endif %} + Dismiss Post {% endif %} {% endif %}