aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2013-07-14 10:35:19 -0400
committerJoas Schilling <nickvergessen@gmx.de>2013-09-26 01:09:17 +0200
commita7af736b9776d724fd2ca77b84b6623eba3edaef (patch)
tree518b64d69017f3ef4248115ce8102c0d9ea646d4
parent8da31332381b572f8d03c63d4c32a4f32ed8775f (diff)
downloadforums-a7af736b9776d724fd2ca77b84b6623eba3edaef.tar
forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.tar.gz
forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.tar.bz2
forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.tar.xz
forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.zip
[ticket/11691] Stagger the convertion of soft delete updates
PHPBB3-11691
-rw-r--r--phpBB/phpbb/db/migration/data/v310/softdelete_p1.php26
1 files changed, 23 insertions, 3 deletions
diff --git a/phpBB/phpbb/db/migration/data/v310/softdelete_p1.php b/phpBB/phpbb/db/migration/data/v310/softdelete_p1.php
index 0418d5cc2b..27bf5b6a57 100644
--- a/phpBB/phpbb/db/migration/data/v310/softdelete_p1.php
+++ b/phpBB/phpbb/db/migration/data/v310/softdelete_p1.php
@@ -101,7 +101,8 @@ class softdelete_p1 extends \phpbb\db\migration\migration
return array(
array('custom', array(array($this, 'update_post_visibility'))),
array('custom', array(array($this, 'update_topic_visibility'))),
- array('custom', array(array($this, 'update_topic_forum_counts'))),
+ array('custom', array(array($this, 'update_topics_post_counts'))),
+ array('custom', array(array($this, 'update_forums_topic_and_post_counts'))),
array('permission.add', array('f_softdelete', false)),
array('permission.add', array('m_softdelete', false)),
@@ -122,7 +123,7 @@ class softdelete_p1 extends \phpbb\db\migration\migration
$this->sql_query($sql);
}
- public function update_topic_forum_counts()
+ public function update_topics_post_counts()
{
$sql = 'UPDATE ' . $this->table_prefix . 'topics
SET topic_posts_approved = topic_replies + 1,
@@ -135,15 +136,24 @@ class softdelete_p1 extends \phpbb\db\migration\migration
topic_posts_unapproved = (topic_replies_real - topic_replies) + 1
WHERE topic_visibility = ' . ITEM_UNAPPROVED;
$this->sql_query($sql);
+ }
+
+ public function update_forums_topic_and_post_counts($start)
+ {
+ $start = (int) $start;
+ $limit = 2;
+ $i = 0;
$sql = 'SELECT forum_id, topic_visibility, COUNT(topic_id) AS sum_topics, SUM(topic_posts_approved) AS sum_posts_approved, SUM(topic_posts_unapproved) AS sum_posts_unapproved
FROM ' . $this->table_prefix . 'topics
GROUP BY forum_id, topic_visibility';
- $result = $this->db->sql_query($sql);
+ $result = $this->db->sql_query_limit($sql, $start, $limit);
$update_forums = array();
while ($row = $this->db->sql_fetchrow($result))
{
+ $i++;
+
$forum_id = (int) $row['forum_id'];
if (!isset($update_forums[$forum_id]))
{
@@ -169,5 +179,15 @@ class softdelete_p1 extends \phpbb\db\migration\migration
WHERE forum_id = ' . $forum_id;
$this->sql_query($sql);
}
+
+
+ if ($i < $limit)
+ {
+ // There are no more topics, we are done
+ return;
+ }
+
+ // There are still more topics to query, return the next start value
+ return $start + $limit;
}
}