1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-06 08:47:45 +02:00

Forums management updated, now able to delete forums

git-svn-id: file:///svn/phpbb/trunk@2890 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Ludovic Arnaud
2002-09-16 15:22:52 +00:00
parent eef332eea5
commit 66e0b32220
8 changed files with 95 additions and 138 deletions

View File

@@ -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");