aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/admin
diff options
context:
space:
mode:
authorLudovic Arnaud <ludovic_arnaud@users.sourceforge.net>2002-09-16 15:22:52 +0000
committerLudovic Arnaud <ludovic_arnaud@users.sourceforge.net>2002-09-16 15:22:52 +0000
commit66e0b322202c62644c29a198307d62f9eac12e53 (patch)
tree77a8e0a20d02ede555e8289e8536ff63e01ff7c9 /phpBB/admin
parenteef332eea5d299784dc31891e84c11017548681d (diff)
downloadforums-66e0b322202c62644c29a198307d62f9eac12e53.tar
forums-66e0b322202c62644c29a198307d62f9eac12e53.tar.gz
forums-66e0b322202c62644c29a198307d62f9eac12e53.tar.bz2
forums-66e0b322202c62644c29a198307d62f9eac12e53.tar.xz
forums-66e0b322202c62644c29a198307d62f9eac12e53.zip
Forums management updated, now able to delete forums
git-svn-id: file:///svn/phpbb/trunk@2890 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/admin')
-rw-r--r--phpBB/admin/admin_forums.php91
1 files changed, 89 insertions, 2 deletions
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'] . '<br /><br />' . sprintf($lang['Click_return_forumadmin'], '<a href="admin_forums.' . $phpEx . $SID . '&mode=delete&f=' . $forum_id. '">', '</a>');
+
+ 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'] . '<br /><br />' . sprintf($lang['Click_return_forumadmin'], '<a href="admin_forums.' . $phpEx . $SID . '&mode=delete&f=' . $forum_id. '">', '</a>');
+
+ 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'] . '<br /><br />' . sprintf($lang['Click_return_forumadmin'], '<a href="admin_forums.' . $phpEx . $SID . '&parent_id=' . $return_id. '">', '</a>');
+
+ 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)
?>
<tr>
<td class="row1"><?php echo $lang['Action'] ?></td>
- <td class="row1"><input type="radio" name="action_forums" value="delete" checked="checked" /> <?php echo $lang['Delete_subforums'] ?></td>
+ <td class="row1"><input type="radio" name="action_subforums" value="delete" checked="checked" /> <?php echo $lang['Delete_subforums'] ?></td>
</tr>
<tr>
<td class="row1"></td>
- <td class="row1"><input type="radio" name="action_forums" value="move" /> <?php echo $lang['Move_subforums_to'] ?> <select name="subforums_to_id" ?><option value="0"></option><?php echo $forums_list ?></select></td>
+ <td class="row1"><input type="radio" name="action_subforums" value="move" /> <?php echo $lang['Move_subforums_to'] ?> <select name="subforums_to_id" ?><option value="0"></option><?php echo $forums_list ?></select></td>
</tr>
<?php
}
@@ -881,6 +967,7 @@ function delete_forum_content($forum_id)
$db->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");