aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorMax Krivanek <thekigen@gmail.com>2016-06-27 04:20:12 -0500
committerMax Krivanek <thekigen@gmail.com>2016-06-27 04:20:12 -0500
commitf75a01182f04ed4c5a80fbb2edfa3e648605a694 (patch)
treede9748c7d935a447e6b5d00d2eb0fb4bee665df1 /phpBB/includes
parent9595946508c198be3aaae6deb88dee2bba354aef (diff)
downloadforums-f75a01182f04ed4c5a80fbb2edfa3e648605a694.tar
forums-f75a01182f04ed4c5a80fbb2edfa3e648605a694.tar.gz
forums-f75a01182f04ed4c5a80fbb2edfa3e648605a694.tar.bz2
forums-f75a01182f04ed4c5a80fbb2edfa3e648605a694.tar.xz
forums-f75a01182f04ed4c5a80fbb2edfa3e648605a694.zip
[ticket/14616] Fixed auto-prune failing on large forums
PHPBB3-14616
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/functions_admin.php20
1 files changed, 14 insertions, 6 deletions
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index 4ecb7b9354..adc96c6dd4 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -2531,7 +2531,7 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
/**
* Prune function
*/
-function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync = true)
+function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync = true, $prune_limit = 0)
{
global $db, $phpbb_dispatcher;
@@ -2572,6 +2572,11 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync
{
$sql_and .= ' AND topic_status = ' . ITEM_MOVED . " AND topic_last_post_time < $prune_date";
}
+
+ if ($prune_limit > 0)
+ {
+ $sql_and .= " LIMIT $prune_limit";
+ }
/**
* Use this event to modify the SQL that selects topics to be pruned
@@ -2643,12 +2648,15 @@ function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_fr
$prune_date = time() - ($prune_days * 86400);
$next_prune = time() + ($prune_freq * 86400);
- prune($forum_id, $prune_mode, $prune_date, $prune_flags, true);
+ $result = prune($forum_id, $prune_mode, $prune_date, $prune_flags, true, 300);
- $sql = 'UPDATE ' . FORUMS_TABLE . "
- SET prune_next = $next_prune
- WHERE forum_id = $forum_id";
- $db->sql_query($sql);
+ if ($result['topics'] == 0 && $result['posts'] == 0)
+ {
+ $sql = 'UPDATE ' . FORUMS_TABLE . "
+ SET prune_next = $next_prune
+ WHERE forum_id = $forum_id";
+ $db->sql_query($sql);
+ }
add_log('admin', 'LOG_AUTO_PRUNE', $row['forum_name']);
}