diff --git a/phpBB/admin/admin_forums.php b/phpBB/admin/admin_forums.php
index 2336bec824..b4448a7185 100644
--- a/phpBB/admin/admin_forums.php
+++ b/phpBB/admin/admin_forums.php
@@ -257,6 +257,91 @@ switch ($mode)
break;
case 'remove':
+ if (empty($HTTP_POST_VARS['submit']))
+ {
+ //
+ // wasn't this form submitted? is anyone trying to remotely delete forums
+ //
+ message_die(ERROR, 'Did not submit');
+ }
+
+ $action_subforums = (!empty($HTTP_POST_VARS['action_subforums'])) ? $HTTP_POST_VARS['action_subforums'] : '';
+ $action_posts = (!empty($HTTP_POST_VARS['action_posts'])) ? $HTTP_POST_VARS['action_posts'] : '';
+
+ $row = get_forum_info($HTTP_GET_VARS['f']);
+ extract($row);
+
+ if ($action_posts == 'delete')
+ {
+ delete_forum_content($forum_id);
+ }
+ elseif ($action_posts == 'move')
+ {
+ if (empty($HTTP_POST_VARS['posts_to_id']))
+ {
+ $message = $lang['No_destination_forum'] . '
' . sprintf($lang['Click_return_forumadmin'], '', '');
+
+ message_die(ERROR, $message);
+ }
+
+ move_forum_content($forum_id, $HTTP_POST_VARS['posts_to_id']);
+ }
+
+ if ($action_subforums == 'delete')
+ {
+ $forum_ids = array($forum_id);
+ $rows = get_forum_branch($forum_id, 'children', 'descending', FALSE);
+ foreach ($rows as $row)
+ {
+ $forum_ids[] = $row['forum_id'];
+ delete_forum_content($row['forum_id']);
+ }
+
+ $diff = count($forum_ids) * 2;
+ $db->sql_query('DELETE FROM ' . FORUMS_TABLE . ' WHERE forum_id IN (' . implode(', ', $forum_ids) . ')');
+ }
+ elseif ($action_subforums == 'move')
+ {
+ if (empty($HTTP_POST_VARS['subforums_to_id']))
+ {
+ $message = $lang['No_destination_forum'] . '
' . sprintf($lang['Click_return_forumadmin'], '', '');
+
+ message_die(ERROR, $message);
+ }
+
+ $result = $db->sql_query('SELECT forum_id FROM ' . FORUMS_TABLE . " WHERE parent_id = $forum_id");
+ while ($row = $db->sql_fetchrow($result))
+ {
+ move_forum($row['forum_id'], $HTTP_POST_VARS['subforums_to_id']);
+ }
+ $db->sql_query('UPDATE ' . FORUMS_TABLE . ' SET parent_id = ' . $HTTP_POST_VARS['subforums_to_id'] . " WHERE parent_id = $forum_id");
+
+ $diff = 2;
+ $db->sql_query('DELETE FROM ' . FORUMS_TABLE . " WHERE forum_id = $forum_id");
+ }
+ else
+ {
+ $diff = 2;
+ $db->sql_query('DELETE FROM ' . FORUMS_TABLE . " WHERE forum_id = $forum_id");
+ }
+
+ //
+ // Resync tree
+ //
+ $sql = 'UPDATE ' . FORUMS_TABLE . "
+ SET right_id = right_id - $diff
+ WHERE left_id < $right_id AND right_id > $right_id";
+ $db->sql_query($sql);
+
+ $sql = 'UPDATE ' . FORUMS_TABLE . "
+ SET left_id = left_id - $diff, right_id = right_id - $diff
+ WHERE left_id > $right_id";
+ $db->sql_query($sql);
+
+ $return_id = (!empty($HTTP_POST_VARS['subforums_to_id'])) ? $HTTP_POST_VARS['subforums_to_id'] : $parent_id;
+ $message = $lang['Forum_deleted'] . '
' . sprintf($lang['Click_return_forumadmin'], '', '');
+
+ message_die(MESSAGE, $message);
break;
case 'forum_sync':
@@ -437,6 +522,7 @@ switch ($mode)
break;
case 'delete':
+ page_header($lang['Forum_delete']);
extract(get_forum_info($HTTP_GET_VARS['f']));
$subforums_id = array();
@@ -482,11 +568,11 @@ switch ($mode)
?>
{L_EDIT_CATEGORY_EXPLAIN}
- - - -{L_FORUM_EXPLAIN}
- - diff --git a/phpBB/templates/subSilver/admin/forum_delete_body.tpl b/phpBB/templates/subSilver/admin/forum_delete_body.tpl deleted file mode 100644 index 4a267107fa..0000000000 --- a/phpBB/templates/subSilver/admin/forum_delete_body.tpl +++ /dev/null @@ -1,23 +0,0 @@ - -{L_FORUM_DELETE_EXPLAIN}
- - diff --git a/phpBB/templates/subSilver/admin/forum_edit_body.tpl b/phpBB/templates/subSilver/admin/forum_edit_body.tpl deleted file mode 100644 index 7f56bbe9d8..0000000000 --- a/phpBB/templates/subSilver/admin/forum_edit_body.tpl +++ /dev/null @@ -1,50 +0,0 @@ - -{L_FORUM_EXPLAIN}
- - - -