diff --git a/phpBB/includes/acp/acp_groups.php b/phpBB/includes/acp/acp_groups.php index 93ab4eedaa..236758b277 100644 --- a/phpBB/includes/acp/acp_groups.php +++ b/phpBB/includes/acp/acp_groups.php @@ -703,11 +703,13 @@ class acp_groups while ($row = $db->sql_fetchrow($result)) { $type = ($row['group_type'] == GROUP_SPECIAL) ? 'special' : 'normal'; + // used to determine what type a group is $lookup[$row['group_id']] = $type; + // used for easy access to the data within a group $cached_group_data[$type][$row['group_id']] = $row; - $cached_group_data[$type][$row['group_id']]['total_members'] = '0'; + $cached_group_data[$type][$row['group_id']]['total_members'] = 0; } $db->sql_freeresult($result); @@ -725,6 +727,9 @@ class acp_groups } $db->sql_freeresult($result); + // The order is... normal, then special + asort($cached_group_data); + foreach ($cached_group_data as $type => $row_ary) { if ($type == 'special') diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php index a92f89da08..32a4edb6ca 100644 --- a/phpBB/includes/mcp/mcp_main.php +++ b/phpBB/includes/mcp/mcp_main.php @@ -854,6 +854,7 @@ function mcp_fork_topic($topic_ids) $total_posts = 0; $new_topic_id_list = array(); + foreach ($topic_data as $topic_id => $topic_row) { $sql_ary = array( @@ -970,9 +971,10 @@ function mcp_fork_topic($topic_ids) AND in_message = 0"; $result = $db->sql_query($sql); + $sql_ary = array(); while ($attach_row = $db->sql_fetchrow($result)) { - $sql_ary = array( + $sql_ary[] = array( 'post_msg_id' => (int) $new_post_id, 'topic_id' => (int) $new_topic_id, 'in_message' => 0, @@ -988,12 +990,36 @@ function mcp_fork_topic($topic_ids) 'filetime' => (int) $attach_row['filetime'], 'thumbnail' => (int) $attach_row['thumbnail'] ); - - $db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); } $db->sql_freeresult($result); + + if (sizeof($sql_ary)) + { + $db->sql_multi_insert(ATTACHMENTS_TABLE, $sql_ary); + } } } + + $sql = 'SELECT user_id, notify_status + FROM ' . TOPICS_WATCH_TABLE . ' + WHERE topic_id = ' . $topic_id; + $result = $db->sql_query($sql); + + $sql_ary = array(); + while ($row = $db->sql_fetchrow($result)) + { + $sql_ary[] = array( + 'topic_id' => $new_topic_id, + 'user_id' => $row['user_id'], + 'notify_status' => $row['notify_status'], + ); + } + $db->sql_freeresult($result); + + if (sizeof($sql_ary)) + { + $db->sql_multi_insert(TOPICS_WATCH_TABLE, $sql_ary); + } } // Sync new topics, parent forums and board stats diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index 2b793a4d6a..427c7e63d2 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -504,13 +504,23 @@ function merge_posts($topic_id, $to_topic_id) FROM ' . TOPICS_TABLE . ' WHERE topic_id = ' . $topic_id; $result = $db->sql_query_limit($sql, 1); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); - if ($row = $db->sql_fetchrow($result)) + if ($row) { $return_link .= sprintf($user->lang['RETURN_TOPIC'], '', ''); } + else + { + // If the topic no longer exist, we will update the topic watch table. + // To not let it error out on users watching both topics, we just return on an error... + $db->sql_return_on_error(true); + $db->sql_query('UPDATE ' . TOPICS_WATCH_TABLE . ' SET topic_id = ' . $to_topic_id . ' WHERE topic_id = ' . $topic_id); + $db->sql_return_on_error(false); - $db->sql_freeresult($result); + $db->sql_query('DELETE FROM ' . TOPICS_WATCH_TABLE . ' WHERE topic_id = ' . $topic_id); + } // Link to the new topic $return_link .= (($return_link) ? '

' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '', ''); diff --git a/phpBB/language/en/mcp.php b/phpBB/language/en/mcp.php index 9f26b41451..bf1a56610a 100644 --- a/phpBB/language/en/mcp.php +++ b/phpBB/language/en/mcp.php @@ -162,6 +162,8 @@ $lang = array_merge($lang, array( 'MCP_NOTES_FRONT' => 'Front page', 'MCP_NOTES_USER' => 'User details', + 'MCP_POST_REPORTS' => 'Reports issued on this post', + 'MCP_REPORTS' => 'Reported posts', 'MCP_REPORT_DETAILS' => 'Report details', 'MCP_REPORTS_CLOSED' => 'Closed reports',