aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/mcp/mcp_main.php
diff options
context:
space:
mode:
authorGeolim4 <contact@geolim4.com>2014-08-08 12:35:31 +0200
committerGeolim4 <contact@geolim4.com>2014-08-08 17:05:40 +0200
commitfc1e420a7c1b094b4a84aecef7fdbc8652af3027 (patch)
tree8fa1b43caebf8f3115b79620dff5174cd8c0af1e /phpBB/includes/mcp/mcp_main.php
parentf6da2661091a9f068956a23df7e70450cec9ee74 (diff)
downloadforums-fc1e420a7c1b094b4a84aecef7fdbc8652af3027.tar
forums-fc1e420a7c1b094b4a84aecef7fdbc8652af3027.tar.gz
forums-fc1e420a7c1b094b4a84aecef7fdbc8652af3027.tar.bz2
forums-fc1e420a7c1b094b4a84aecef7fdbc8652af3027.tar.xz
forums-fc1e420a7c1b094b4a84aecef7fdbc8652af3027.zip
[ticket/11520] Re-adjust userpost count on topic fork
PHPBB3-11520
Diffstat (limited to 'phpBB/includes/mcp/mcp_main.php')
-rw-r--r--phpBB/includes/mcp/mcp_main.php30
1 files changed, 28 insertions, 2 deletions
diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php
index 9f6125f256..bb466ec976 100644
--- a/phpBB/includes/mcp/mcp_main.php
+++ b/phpBB/includes/mcp/mcp_main.php
@@ -1114,6 +1114,7 @@ function mcp_fork_topic($topic_ids)
$forum_id = request_var('f', 0);
$redirect = request_var('redirect', build_url(array('action', 'quickmod')));
$additional_msg = $success_msg = '';
+ $counter = array();
$s_hidden_fields = build_hidden_fields(array(
'topic_id_list' => $topic_ids,
@@ -1306,9 +1307,22 @@ function mcp_fork_topic($topic_ids)
'post_edit_time' => (int) $row['post_edit_time'],
'post_edit_count' => (int) $row['post_edit_count'],
'post_edit_locked' => (int) $row['post_edit_locked'],
- 'post_postcount' => 0,
+ 'post_postcount' => $row['post_postcount'],
);
-
+ // Adjust post counts... only if the post can be incremented to the user counter (else, it was not added the users post count anyway)
+ //Fixed an error of phpBB: http://tracker.phpbb.com/browse/PHPBB3-11520
+ //Do not do the query here but later, we just increment the count of posts until the loop is finished, then do new posts counters.
+ if ($row['post_postcount'])
+ {
+ if (isset($counter[$row['poster_id']]))
+ {
+ $counter[$row['poster_id']]++;
+ }
+ else
+ {
+ $counter[$row['poster_id']] = 1;
+ }
+ }
$db->sql_query('INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
$new_post_id = $db->sql_nextid();
@@ -1428,6 +1442,18 @@ function mcp_fork_topic($topic_ids)
WHERE forum_id = ' . $to_forum_id;
$db->sql_query($sql);
+ if (sizeof($counter))
+ {
+ //Do only one query per user and not a query PER post!!
+ foreach ($counter AS $uid => $count)
+ {
+ $sql = 'UPDATE ' . USERS_TABLE . '
+ SET user_posts = user_posts + ' . (int) $count . '
+ WHERE user_id = ' . (int) $uid;
+ $db->sql_query($sql);
+ }
+ }
+
sync('topic', 'topic_id', $new_topic_id_list);
sync('forum', 'forum_id', $to_forum_id);