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) ?> - + - + sql_query('DELETE FROM ' . ACL_GROUPS_TABLE . " WHERE forum_id = $forum_id"); $db->sql_query('DELETE FROM ' . ACL_PREFETCH_TABLE . " WHERE forum_id = $forum_id"); $db->sql_query('DELETE FROM ' . LOG_MOD_TABLE . " WHERE forum_id = $forum_id"); + $db->sql_query('DELETE FROM ' . FORUMS_WATCH_TABLE . " WHERE forum_id = $forum_id"); $ids = array(); $result = $db->sql_query('SELECT post_id FROM ' . POSTS_TABLE . " WHERE forum_id = $forum_id"); diff --git a/phpBB/db/mysql.php b/phpBB/db/mysql.php index cfdd39818c..f9be4b839a 100644 --- a/phpBB/db/mysql.php +++ b/phpBB/db/mysql.php @@ -201,7 +201,7 @@ class sql_db $values = array(); foreach ($assoc_ary as $key => $var) { - if ($var == NULL) + if (is_null($var) { $values[] = "$key = NULL"; } diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index f5b965a160..e17a4138a8 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -81,7 +81,7 @@ function sync($type, $id) FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t WHERE p.forum_id = $id AND t.topic_id = p.topic_id - AND t.topic_status <> " . TOPIC_MOVED; + AND t.topic_status <> " . ITEM_MOVED; $result = $db->sql_query($sql); if ( $row = $db->sql_fetchrow($result) ) @@ -98,7 +98,7 @@ function sync($type, $id) $sql = "SELECT COUNT(topic_id) AS total FROM " . TOPICS_TABLE . " WHERE forum_id = $id - AND topic_status <> " . TOPIC_MOVED; + AND topic_status <> " . ITEM_MOVED; $result = $db->sql_query($sql); $total_topics = ( $row = $db->sql_fetchrow($result) ) ? ( ( $row['total'] ) ? $row['total'] : 0 ) : 0; diff --git a/phpBB/language/lang_english/lang_admin.php b/phpBB/language/lang_english/lang_admin.php index a7e4582cc1..a5a742101d 100644 --- a/phpBB/language/lang_english/lang_admin.php +++ b/phpBB/language/lang_english/lang_admin.php @@ -566,7 +566,10 @@ $lang['Move_subforums_to'] = 'Move subforums to'; $lang['Delete_all_posts'] = 'Delete all posts'; $lang['Delete_subforums'] = 'Delete subforums and associated posts'; +$lang['No_destination_forum'] = 'You have not specified a forum to move content to'; + $lang['Forums_updated'] = 'Forum and Category information updated successfully'; +$lang['Forum_deleted'] = 'Forum successfully deleted'; $lang['Click_return_forumadmin'] = 'Click %sHere%s to return to Forum Administration'; diff --git a/phpBB/templates/subSilver/admin/category_edit_body.tpl b/phpBB/templates/subSilver/admin/category_edit_body.tpl deleted file mode 100644 index eb99540e01..0000000000 --- a/phpBB/templates/subSilver/admin/category_edit_body.tpl +++ /dev/null @@ -1,21 +0,0 @@ - -

{L_EDIT_CATEGORY}

- -

{L_EDIT_CATEGORY_EXPLAIN}

- -
- - - - - - - - - - - -
{L_EDIT_CATEGORY}
{L_CATEGORY}
{S_HIDDEN_FIELDS}
-
- -
diff --git a/phpBB/templates/subSilver/admin/forum_admin_body.tpl b/phpBB/templates/subSilver/admin/forum_admin_body.tpl deleted file mode 100644 index d863b03f43..0000000000 --- a/phpBB/templates/subSilver/admin/forum_admin_body.tpl +++ /dev/null @@ -1,39 +0,0 @@ - -

{L_FORUM_TITLE}

- -

{L_FORUM_EXPLAIN}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{L_FORUM_TITLE}
{catrow.CAT_DESC}{L_EDIT}{L_DELETE}{L_MOVE_UP} {L_MOVE_DOWN} 
{catrow.forumrow.FORUM_NAME}
{catrow.forumrow.FORUM_DESC}
{catrow.forumrow.NUM_TOPICS}{catrow.forumrow.NUM_POSTS}{L_EDIT}{L_DELETE}{L_MOVE_UP}
{L_MOVE_DOWN}
{L_RESYNC}
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}

- -

{L_FORUM_DELETE_EXPLAIN}

- -
- - - - - - - - - - - - - - - -
{L_FORUM_DELETE}
{L_FORUM_NAME}{NAME}
{L_MOVE_CONTENTS}{S_SELECT_TO}
{S_HIDDEN_FIELDS}
-
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_TITLE}

- -

{L_FORUM_EXPLAIN}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
{L_FORUM_SETTINGS}
{L_FORUM_NAME}
{L_FORUM_DESCRIPTION}
{L_CATEGORY}
{L_FORUM_STATUS}
{L_AUTO_PRUNE} - - - - - - - - - - - - -
{L_ENABLED}
{L_PRUNE_DAYS}  {L_DAYS}
{L_PRUNE_FREQ}  {L_DAYS}
{S_HIDDEN_FIELDS}
-
- -