diff options
author | Meik Sievertsen <acydburn@phpbb.com> | 2007-03-31 12:35:44 +0000 |
---|---|---|
committer | Meik Sievertsen <acydburn@phpbb.com> | 2007-03-31 12:35:44 +0000 |
commit | 3abc3dd3310e5c26eb58312c7f6f505f9de63644 (patch) | |
tree | 3344bd74b234983da4f5c789f9c91a4665825d86 /phpBB/includes/mcp | |
parent | f6d1fa57b269370583dca8bf0f2f3347d00d5e4a (diff) | |
download | forums-3abc3dd3310e5c26eb58312c7f6f505f9de63644.tar forums-3abc3dd3310e5c26eb58312c7f6f505f9de63644.tar.gz forums-3abc3dd3310e5c26eb58312c7f6f505f9de63644.tar.bz2 forums-3abc3dd3310e5c26eb58312c7f6f505f9de63644.tar.xz forums-3abc3dd3310e5c26eb58312c7f6f505f9de63644.zip |
#5396, #5266, #5147
git-svn-id: file:///svn/phpbb/trunk@7246 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/mcp')
-rw-r--r-- | phpBB/includes/mcp/mcp_main.php | 32 | ||||
-rw-r--r-- | phpBB/includes/mcp/mcp_topic.php | 14 |
2 files changed, 41 insertions, 5 deletions
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'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $topic_id) . '">', '</a>'); } + 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) ? '<br /><br />' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&t=' . $to_topic_id) . '">', '</a>'); |