diff options
Diffstat (limited to 'phpBB/modcp.php')
-rw-r--r-- | phpBB/modcp.php | 199 |
1 files changed, 197 insertions, 2 deletions
diff --git a/phpBB/modcp.php b/phpBB/modcp.php index 1352a07f42..ce5b3bb97a 100644 --- a/phpBB/modcp.php +++ b/phpBB/modcp.php @@ -287,7 +287,202 @@ switch($mode) break; case 'move': - echo 'Move'; + if($confirm) + { + $new_forum = $HTTP_POST_VARS['new_forum']; + $old_forum = $HTTP_POST_VARS[POST_FORUM_URL]; + if($HTTP_POST_VARS['preform_op']) + { + $topics = $HTTP_POST_VARS['preform_op']; + } + else + { + $topics = array($HTTP_POST_VARS[POST_TOPIC_URL]); + } + for($x = 0; $x < count($topics); $x++) + { + if($x != 0) + { + $sql_clause .= ' OR '; + } + $sql_clause .= 'topic_id = '.$topics[$x]; + $sql_select = 'SELECT + topic_title, + topic_poster, + topic_time + FROM '. + TOPICS_TABLE." WHERE + topic_id = $topics[$x]"; + if(!$result = $db->sql_query($sql_select)) + { + message_die(GENERAL_ERROR, "Could not select from topic table!", "Error", __LINE__, __FILE__ +, $sql_select); + } + else + { + $row = $db->sql_fetchrowset($result); + $ttitle = $row[0]['topic_title']; + $tpost = $row[0]['topic_poster']; + $ttime = $row[0]['topic_time']; + $sql_insert = 'INSERT INTO '.TOPICS_TABLE." + (forum_id,topic_title,topic_poster,topic_time,topic_status,topic_type) + VALUES + ($old_forum,'$ttitle','$tpost',$ttime,$topics[$x],".TOPIC_MOVED.')'; + if(!$result = $db->sql_query($sql_insert)) + { + message_die(GENERAL_ERROR, "Could not insert into topics table!", "Error", __LINE__, + __FILE__, $sql_insert); + } + $newtopic_id = $db->sql_nextid(); + $sql_insert = 'INSERT INTO '.POSTS_TABLE." + (topic_id,forum_id,poster_id,post_time) + VALUES + ($newtopic_id,$old_forum,$tpost,$ttime)"; + if(!$result = $db->sql_query($sql_insert)) + { + message_die(GENERAL_ERROR, "Could not insert into posts table!", "Error", __LINE__, +__FILE__, $sql_insert); + } + //Finally, update the last_post_id column to reflect the new post just inserted + $newpost_id = $db->sql_nextid(); + $sql = 'UPDATE '.TOPICS_TABLE." SET topic_last_post_id = $newpost_id WHERE topic_id = $newtopic_id"; + if(!$result = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Could not update the topics table!", "Error", __LINE__, +__FILE__, $sql); + } + } + } + + $sql_replies = 'SELECT SUM(topic_replies) AS total_posts FROM '.TOPICS_TABLE.' WHERE '.$sql_clause; + if(!$result = $db->sql_query($sql_replies)) + { + message_die(GENERAL_ERROR, "Could not sum topic replies in topics table!", "Error", __LINE__, __FILE__, $sql_replies); + } + else + { + $posts_row = $db->sql_fetchrowset($result); + $posts = $posts_row[0]['total_posts'] + count($topics); + } + + $sql_post = 'UPDATE '.POSTS_TABLE." SET forum_id = $new_forum WHERE $sql_clause"; + $sql_topic = 'UPDATE '.TOPICS_TABLE." SET forum_id = $new_forum WHERE $sql_clause"; + if(!$result = $db->sql_query($sql_post)) + { + message_die(GENERAL_ERROR, "Could not update posts table!", "Error", __LINE__, __FILE__, $sql_post); + } + else if(!$result = $db->sql_query($sql_topic)) + { + message_die(GENERAL_ERROR, "Could not update topics table!", "Error", __LINE__, __FILE__, $sql_topic); + } + if(SQL_LAYER != 'mysql') + { + $sql_forums_new = 'UPDATE '.FORUMS_TABLE." SET + forum_posts = forum_posts + $posts, + forum_topics = forum_topics + ".count($topics).", + forum_last_post_id = + (select max(post_id) FROM ".POSTS_TABLE." + WHERE forum_id = $new_forum) + WHERE forum_id = ".$new_forum; + $sql_forums_old = 'UPDATE '.FORUMS_TABLE." SET + forum_posts = forum_posts - $posts + ".count($topics).", + forum_last_post_id = + (select max(post_id) FROM ".POSTS_TABLE." + WHERE forum_id = $old_forum) + WHERE forum_id = ".$old_forum; + } + else + { + $sql_lastpost = "select max(post_id) AS last_post FROM ".POSTS_TABLE." WHERE forum_id = $new_forum"; + if(!$result = $db->sql_query($sql_lastpost)) + { + message_die(GENERAL_ERROR, "Could not get last post id from posts table", "Error", __LINE__,__FILE__, $sql_lastpost); + } + else + { + $last_post_row = $db->sql_fetchrowset($result); + $last_post_new = $last_post_row[0]['last_post']; + if($last_post_new == "") + { + $last_post_new = "''"; + } + } + $sql_lastpost = "select max(post_id) AS last_post FROM ".POSTS_TABLE." WHERE forum_id = $old_forum"; + if(!$result = $db->sql_query($sql_lastpost)) + { + message_die(GENERAL_ERROR, "Could not get last post id from posts table", "Error", __LINE__,__FILE__, $sql_lastpost); + } + else + { + $last_post_row = $db->sql_fetchrowset($result); + $last_post_old = $last_post_row[0]['last_post']; + if($last_post_old == "") + { + $last_post_old = "''"; + } + } + $sql_forums_new = 'UPDATE '.FORUMS_TABLE." SET + forum_posts = forum_posts + $posts, + forum_topics = forum_topics + ".count($topics).", + forum_last_post_id = $last_post_new + WHERE forum_id = $new_forum"; + $sql_forums_old = 'UPDATE '.FORUMS_TABLE." SET + forum_posts = forum_posts - $posts + ".count($topics).", + forum_last_post_id = $last_post_old + WHERE forum_id = $old_forum"; + } + if(!$result = $db->sql_query($sql_forums_new)) + { + message_die(GENERAL_ERROR, "Could not update forums table!", "Error", __LINE__, __FILE__, $sql_forums_new); + } + else if(!$result = $db->sql_query($sql_forums_old)) + { + message_die(GENERAL_ERROR, "Could not update forums table!", "Error", __LINE__, __FILE__, $sql_forums_old); + } + else + { + if($quick_op) + { + $next_page = "viewtopic.$phpEx?".POST_TOPIC_URL."=$topic_id"; + $return_message = $lang['to_return_topic']; + } + else + { + $next_page = "modcp.$phpEx?".POST_FORUM_URL."=$forum_id"; + $return_message = $lang['Return_to_modcp']; + } + $msg = $lang['Topics_Moved'] . "<br />" . "<a href=\"".append_sid($next_page)."\">". $lang['Click']. " " . $lang['Here'] ."</a> " . $return_message; + message_die(GENERAL_MESSAGE, $msg); + } + } + else + { + $hidden_fields = '<input type="hidden" name="mode" value="'.$mode.'"><input type="hidden" name="'.POST_FORUM_URL.'" value="'.$forum_id.'"><input type="hidden" name="quick_op" value="'.$quick_op.'">'; + $hidden_fields .= $lang['New_forum'] . ': ' . make_forum_box('new_forum'). '</select><br><br>'; + if($HTTP_POST_VARS['preform_op']) + { + $topics = $HTTP_POST_VARS['preform_op']; + for($x = 0; $x < count($topics); $x++) + { + $hidden_fields .= '<input type="hidden" name="preform_op[]" value="'.$topics[$x].'">'; + } + } + else + { + $hidden_fields .= '<input type="hidden" name="'.POST_TOPIC_URL.'" value="'.$topic_id.'">'; + } + $template->assign_vars( array ( + "MESSAGE_TITLE" => $lang['Confirm'], + "MESSAGE_TEXT" => $lang['Confirm_move_topic'], + "L_YES" => $lang['Yes'], + "L_NO" => $lang['No'], + "S_CONFIRM_ACTION" => append_sid("modcp.$phpEx"), + "S_HIDDEN_FIELDS" => $hidden_fields + ) + ); + $template->pparse("confirm"); + include($phpbb_root_path . 'includes/page_tail.'.$phpEx); + } break; case 'lock': @@ -720,4 +915,4 @@ switch($mode) include($phpbb_root_path . 'includes/page_tail.'.$phpEx); -?>
\ No newline at end of file +?> |