Made deleting posts by IP more efficient.

No longer rebuilds same thread multiple times.
This commit is contained in:
Macil Tech 2012-09-04 00:21:04 -06:00
parent 0092fc62ab
commit 5628f78970

View File

@ -1052,7 +1052,7 @@ function mod_deletebyip($boardName, $post, $global = false) {
$query = ''; $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 .= sprintf("SELECT `thread`, `id`, '%s' AS `board` FROM `posts_%s` WHERE `ip` = :ip UNION ALL ", $_board['uri'], $_board['uri']);
} }
$query = preg_replace('/UNION ALL $/', '', $query); $query = preg_replace('/UNION ALL $/', '', $query);
@ -1063,18 +1063,27 @@ function mod_deletebyip($boardName, $post, $global = false) {
if ($query->rowCount() < 1) if ($query->rowCount() < 1)
error($config['error']['invalidpost']); error($config['error']['invalidpost']);
$boards = array(); set_time_limit($config['mod']['rebuild_timelimit']);
$threads_to_rebuild = array();
$threads_deleted = array();
while ($post = $query->fetch()) { while ($post = $query->fetch()) {
openBoard($post['board']); openBoard($post['board']);
$boards[] = $post['board'];
deletePost($post['id'], false); deletePost($post['id'], false, false);
if ($post['thread'])
$threads_to_rebuild[$post['board']][$post['thread']] = true;
else
$threads_deleted[$post['board']][$post['id']] = true;
} }
$boards = array_unique($boards); foreach ($threads_to_rebuild as $_board => $_threads) {
foreach ($boards as $_board) {
openBoard($_board); openBoard($_board);
foreach ($_threads as $_thread => $_dummy) {
if ($_dummy && !isset($threads_deleted[$_board][$_thread]))
buildThread($_thread);
}
buildIndex(); buildIndex();
} }