aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/admin/admin_forums.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/admin/admin_forums.php')
-rw-r--r--phpBB/admin/admin_forums.php452
1 files changed, 203 insertions, 249 deletions
diff --git a/phpBB/admin/admin_forums.php b/phpBB/admin/admin_forums.php
index 17fea8fac4..2eed753a0c 100644
--- a/phpBB/admin/admin_forums.php
+++ b/phpBB/admin/admin_forums.php
@@ -67,7 +67,7 @@ switch ($mode)
case 'move_up':
case 'move_down':
$show_index = TRUE;
- $forum_id = intval($_GET['f']);
+ $forum_id = intval($_GET['this_f']);
$result = $db->sql_query('SELECT parent_id, left_id, right_id FROM ' . FORUMS_TABLE . " WHERE forum_id = $forum_id");
if (!$row = $db->sql_fetchrow($result))
@@ -83,16 +83,16 @@ switch ($mode)
if ($mode == 'move_up')
{
$sql = 'SELECT forum_id, left_id, right_id
- FROM ' . FORUMS_TABLE . "
- WHERE parent_id = $parent_id AND right_id < $right_id
- ORDER BY right_id DESC";
+ FROM ' . FORUMS_TABLE . "
+ WHERE parent_id = $parent_id AND right_id < $right_id
+ ORDER BY right_id DESC";
}
else
{
$sql = 'SELECT forum_id, left_id, right_id
- FROM ' . FORUMS_TABLE . "
- WHERE parent_id = $parent_id AND left_id > $left_id
- ORDER BY left_id ASC";
+ FROM ' . FORUMS_TABLE . "
+ WHERE parent_id = $parent_id AND left_id > $left_id
+ ORDER BY left_id ASC";
}
$result = $db->sql_query_limit($sql, 1);
@@ -124,8 +124,8 @@ switch ($mode)
//
$forum_ids = array();
$sql = 'SELECT forum_id
- FROM ' . FORUMS_TABLE . '
- WHERE left_id > ' . $forum_info[$up_id]['left_id'] . ' AND right_id < ' . $forum_info[$up_id]['right_id'];
+ FROM ' . FORUMS_TABLE . '
+ WHERE left_id > ' . $forum_info[$up_id]['left_id'] . ' AND right_id < ' . $forum_info[$up_id]['right_id'];
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
@@ -134,57 +134,43 @@ switch ($mode)
}
$sql = 'UPDATE ' . FORUMS_TABLE . '
- SET left_id = left_id + ' . ($diff_up + 1) . ', right_id = right_id + ' . ($diff_up + 1) . '
- WHERE left_id > ' . $forum_info[$down_id]['left_id'] . ' AND right_id < ' . $forum_info[$down_id]['right_id'];
+ SET left_id = left_id + ' . ($diff_up + 1) . ', right_id = right_id + ' . ($diff_up + 1) . '
+ WHERE left_id > ' . $forum_info[$down_id]['left_id'] . ' AND right_id < ' . $forum_info[$down_id]['right_id'];
$db->sql_query($sql);
if (count($forum_ids))
{
$sql = 'UPDATE ' . FORUMS_TABLE . '
- SET left_id = left_id - ' . ($diff_down + 1) . ', right_id = right_id - ' . ($diff_down + 1) . '
- WHERE forum_id IN (' . implode(', ', $forum_ids) . ')';
+ SET left_id = left_id - ' . ($diff_down + 1) . ', right_id = right_id - ' . ($diff_down + 1) . '
+ WHERE forum_id IN (' . implode(', ', $forum_ids) . ')';
$db->sql_query($sql);
}
$sql = 'UPDATE ' . FORUMS_TABLE . '
- SET left_id = ' . $forum_info[$down_id]['left_id'] . ', right_id = ' . ($forum_info[$down_id]['left_id'] + $diff_up) . '
- WHERE forum_id = ' . $up_id;
+ SET left_id = ' . $forum_info[$down_id]['left_id'] . ', right_id = ' . ($forum_info[$down_id]['left_id'] + $diff_up) . '
+ WHERE forum_id = ' . $up_id;
$db->sql_query($sql);
$sql = 'UPDATE ' . FORUMS_TABLE . '
- SET left_id = ' . ($forum_info[$up_id]['right_id'] - $diff_down) . ', right_id = ' . $forum_info[$up_id]['right_id'] . '
- WHERE forum_id = ' . $down_id;
+ SET left_id = ' . ($forum_info[$up_id]['right_id'] - $diff_down) . ', right_id = ' . $forum_info[$up_id]['right_id'] . '
+ WHERE forum_id = ' . $down_id;
$db->sql_query($sql);
break;
case 'create':
if (!trim($_POST['forum_name']))
{
- message_die(ERROR, 'Cannot create a forum without a name');
+ trigger_error('Cannot create a forum without a name');
}
- $parent_id = (!empty($_POST['parent_id'])) ? $_POST['parent_id'] : 0;
- $forum_status = (!empty($_POST['is_category'])) ? ITEM_CATEGORY : $_POST['forum_status'];
- $forum_name = str_replace("\'", "''", $_POST['forum_name']);
- $forum_desc = str_replace("\'", "''", $_POST['forum_desc']);
-
- $forum_style = (!empty($_POST['forum_style'])) ? intval($_POST['forum_style']) : 'NULL';
- $post_count_inc = (!empty($_POST['disable_post_count'])) ? 0 : 1;
- $moderated = (!empty($_POST['moderated'])) ? 1 : 0;
-
- $prune_enable = (!empty($_POST['prune_enable'])) ? 1 : 0;
- $prune_days = intval($_POST['prune_days']);
- $prune_freq = intval($_POST['prune_freq']);
-
- $result = $db->sql_query('SELECT MAX(forum_id) AS max_id FROM ' . FORUMS_TABLE);
- $forum_id = $db->sql_fetchfield('max_id', 0, $result) + 1;
+ $parent_id = (!empty($_POST['parent_id'])) ? intval($_POST['parent_id']) : 0;
if ($parent_id)
{
$result = $db->sql_query('SELECT left_id, right_id FROM ' . FORUMS_TABLE . " WHERE forum_id = $parent_id");
if (!$row = $db->sql_fetchrow($result))
{
- message_die(ERROR, 'Parent does not exist');
+ trigger_error('Parent does not exist', E_USER_ERROR);
}
extract($row);
@@ -197,21 +183,39 @@ switch ($mode)
else
{
$result = $db->sql_query('SELECT MAX(right_id) AS right_id FROM ' . FORUMS_TABLE);
+
$left_id = $db->sql_fetchfield('right_id', 0, $result) + 1;
$right_id = $left_id + 1;
}
- $sql = 'INSERT INTO ' . FORUMS_TABLE . " (forum_id, forum_name, forum_desc, parent_id, left_id, right_id, forum_status, forum_style, post_count_inc, moderated, prune_enable, prune_days, prune_freq)
- VALUES ($forum_id, '$forum_name', '$forum_desc', $parent_id, $left_id, $right_id, $forum_status, $forum_style, $post_count_inc, $moderated, $prune_enable, $prune_days, $prune_freq)";
- $db->sql_query($sql);
+ $sql = array(
+ 'parent_id' => $parent_id,
+ 'left_id' => $left_id,
+ 'right_id' => $right_id,
+ 'forum_status' => (!empty($_POST['is_category'])) ? ITEM_CATEGORY : intval($_POST['forum_status']),
+ 'forum_postable' => (!empty($_POST['is_category'])) ? 0 : 1,
+ 'forum_name' => sql_quote($_POST['forum_name']),
+ 'forum_desc' => sql_quote($_POST['forum_desc']),
+ 'forum_style' => (!empty($_POST['forum_style'])) ? intval($_POST['forum_style']) : 'NULL',
+ 'enable_post_count' => (!empty($_POST['disable_post_count'])) ? 0 : 1,
+ 'enable_icons' => (!empty($_POST['enable_icons'])) ? 1 : 0,
+ 'enable_moderate' => (!empty($_POST['moderated'])) ? 1 : 0,
+ 'enable_prune' => (!empty($_POST['prune_enable'])) ? 1 : 0,
+ 'prune_days' => intval($_POST['prune_days']),
+ 'prune_freq' => intval($_POST['prune_freq'])
+ );
- $message = $user->lang['Forums_updated'] . "<br /><br />" . sprintf($user->lang['Click_return_forumadmin'], '<a href="admin_forums.' . $phpEx . $SID . '&parent_id=' . $parent_id . '">', '</a>') . '<br /><br />' . sprintf($user->lang['Click_return_admin_index'], '<a href="index.' . $phpEx . $SID . '?pane=right' . '">', '</a>');
- message_die(MESSAGE, $message);
+ $db->sql_query('INSERT INTO ' . FORUMS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql));
+
+ $forum_id = $db->sql_nextid();
+
+ // Redirect to permissions
+ redirect('admin_permissions.' . $phpEx . $SID . '&mode=forums&f=' . $forum_id);
break;
case 'modify':
- if (!$forum_id = intval($_POST['forum_id']))
+ if (!$forum_id = intval($_POST['f']))
{
message_die(ERROR, 'No forum specified');
}
@@ -233,20 +237,23 @@ switch ($mode)
}
$sql = array(
- 'forum_name' => (!empty($_POST['forum_name'])) ? $_POST['forum_name'] : $row['forum_name'],
- 'forum_desc' => (!empty($_POST['forum_desc'])) ? $_POST['forum_desc'] : $row['forum_desc'],
- 'forum_status' => (!empty($_POST['set_category']) && $action) ? ITEM_CATEGORY : intval($_POST['forum_status']),
- 'forum_style' => (!empty($_POST['forum_style'])) ? $_POST['forum_style'] : NULL,
'parent_id' => $parent_id,
- 'prune_enable' => (!empty($_POST['prune_enable'])) ? 1 : 0,
+ 'forum_name' => (!empty($_POST['forum_name'])) ? $_POST['forum_name'] : $row['forum_name'],
+ 'forum_desc' => (!empty($_POST['forum_desc'])) ? $_POST['forum_desc'] : $row['forum_desc'],
+ 'forum_status' => intval($_POST['forum_status']),
+ 'forum_postable' => (!empty($_POST['is_postable'])) ? 1 : 0,
+ 'forum_style' => (!empty($_POST['forum_style'])) ? $_POST['forum_style'] : NULL,
+ 'forum_image' => (!empty($_POST['forum_image'])) ? $_POST['forum_image'] : '',
+ 'display_on_index' => (!empty($_POST['display_on_index'])) ? 1 : 0,
+ 'enable_post_count' => (!empty($_POST['disable_post_count'])) ? 0 : 1,
+ 'enable_icons' => (!empty($_POST['topic_icons'])) ? 1 : 0,
+ 'enable_moderate' => (!empty($_POST['moderated'])) ? 1 : 0,
+ 'enable_prune' => (!empty($_POST['prune_enable'])) ? 1 : 0,
'prune_days' => intval($_POST['prune_days']),
'prune_freq' => intval($_POST['prune_freq']),
- 'display_on_index' => (!empty($_POST['display_on_index'])) ? 1 : 0,
- 'post_count_inc' => (!empty($_POST['disable_post_count'])) ? 0 : 1,
- 'moderated' => (!empty($_POST['moderated'])) ? 1 : 0,
);
- if (!empty($_POST['set_category']) && $action)
+ if (!empty($_POST['set_nonpostable']) && $action)
{
if ($action == 'move' && $_POST['to_forum_id'])
{
@@ -274,7 +281,7 @@ switch ($mode)
//
// wasn't this form submitted? is anyone trying to remotely delete forums
//
- message_die(ERROR, 'Did not submit');
+ trigger_error('Did not submit', E_USER_ERROR);
}
$action_subforums = (!empty($_POST['action_subforums'])) ? $_POST['action_subforums'] : '';
@@ -356,9 +363,8 @@ switch ($mode)
message_die(MESSAGE, $message);
break;
- case 'forum_sync':
- sync('forum', intval($_GET['f']));
- $show_index = TRUE;
+ case 'sync':
+ sync('forum', intval($_GET['this_f']));
break;
case 'add':
@@ -366,7 +372,7 @@ switch ($mode)
// Show form to create/modify a forum
if ($mode == 'edit')
{
- $forum_id = intval($_GET['f']);
+ $forum_id = intval($_GET['this_f']);
$row = get_forum_info($forum_id);
extract($row);
@@ -403,6 +409,7 @@ switch ($mode)
$newmode = 'create';
$buttonvalue = $user->lang['Create_forum'];
+ $forum_id = $parent_id;
$forum_desc = '';
$forum_style = '';
$forum_status = ITEM_UNLOCKED;
@@ -410,6 +417,7 @@ switch ($mode)
$post_count_inc = TRUE;
$moderated = FALSE;
+ $enable_icons = TRUE;
$prune_enabled = '';
$prune_days = 7;
@@ -419,10 +427,10 @@ switch ($mode)
$styles_list = make_styles_list($forum_style);
$forumlocked = ($forum_status == ITEM_LOCKED) ? ' selected="selected"' : '';
- $forumunlocked = ($forum_status == ITEM_UNLOCKED || $forum_status == ITEM_CATEGORY) ? ' selected="selected"' : '';
+ $forumunlocked = ($forum_status == ITEM_UNLOCKED) ? ' selected="selected"' : '';
- $forum_checked = ($forum_status != ITEM_CATEGORY) ? 'checked="checked" ' : '';
- $category_checked = ($forum_status == ITEM_CATEGORY) ? 'checked="checked" ' : '';
+ $postable_checked = ($forum_postable) ? 'checked="checked" ' : '';
+ $nonpostable_checked = (!$forum_postable) ? 'checked="checked" ' : '';
$statuslist = '<option value="' . ITEM_UNLOCKED . '"' . $forumunlocked . '>' . $user->lang['Unlocked'] . "</option>\n";
$statuslist .= '<option value="' . ITEM_LOCKED . '"' . $forumlocked . '>' . $user->lang['Locked'] . "</option>\n";
@@ -439,57 +447,74 @@ switch ($mode)
<th colspan="2"><?php echo $user->lang['General_settings'] ?></th>
</tr>
<tr>
- <td class="row1"><?php echo ($forum_status != ITEM_CATEGORY) ? $user->lang['Forum_name'] : $user->lang['Category_name'] ?></td>
- <td class="row2"><input type="text" size="25" name="forum_name" value="<?php echo $forum_name ?>" class="post" /></td>
+ <td class="row1"><?php echo $user->lang['Parent'] ?></td>
+ <td class="row2"><select name="parent_id"><option value="0"><?php echo $user->lang['No_parent'] ?></option><?php echo $parents_list ?></select></td>
+ </tr>
+ <tr>
+ <td class="row1"><?php echo $user->lang['Forum_name']; ?></td>
+ <td class="row2"><input class="post" type="text" size="25" name="forum_name" value="<?php echo $forum_name ?>" /></td>
</tr>
<tr>
<td class="row1"><?php echo $user->lang['Forum_desc'] ?></td>
- <td class="row2"><textarea rows="5" cols="45" wrap="virtual" name="forum_desc" class="post"><?php echo $forum_desc ?></textarea></td>
-</tr>
+ <td class="row2"><textarea class="post" rows="5" cols="45" wrap="virtual" name="forum_desc"><?php echo $forum_desc ?></textarea></td>
+ </tr>
+ <tr>
+ <td class="row1"><?php echo $user->lang['FORUM_TYPE'] ?></td>
+ <td class="row2"><input type="radio" name="is_postable" value="1" <?php echo $postable_checked ?>/><?php echo $user->lang['IS_POSTABLE'] ?> &nbsp; <input type="radio" name="is_postable" value="0" <?php echo $nonpostable_checked ?>/><?php echo $user->lang['NOT_POSTABLE'] ?></td>
+ </tr>
+ <tr>
+ <th colspan="2"><?php echo $user->lang['Forum_settings'] ?></th>
+ </tr>
<?php
- if ($mode == 'add' || $forum_status == ITEM_CATEGORY)
+ if ($forum_postable || $mode == 'add')
{
?>
<tr>
- <td class="row1"><?php echo $user->lang['Forum_type'] ?></td>
- <td class="row2"><input type="radio" name="is_category" value="0" <?php echo $forum_checked ?>/><?php echo $user->lang['Forum'] ?> &nbsp; <input type="radio" name="is_category" value="1" <?php echo $category_checked ?>/><?php echo $user->lang['Category'] ?></td>
+ <td class="row1"><?php echo $user->lang['FORUM_STATUS'] ?></td>
+ <td class="row2"><select name="forum_status"><?php echo $statuslist ?></select></td>
</tr>
<?php
- }
+ if ($mode == 'edit')
+ {
?>
<tr>
- <td class="row1"><?php echo $user->lang['Parent'] ?></td>
- <td class="row2"><select name="parent_id"><option value="0"><?php echo $user->lang['No_parent'] ?></option><?php echo $parents_list ?></select></td>
- </tr>
- <tr>
- <td class="row1"><?php echo $user->lang['Style'] ?></td>
- <td class="row2"><select name="forum_style"><option value="0"><?php echo $user->lang['Default_style'] ?></option><?php echo $styles_list ?></select></td>
+ <td class="row1"><?php echo $user->lang['FORUM_TYPE'] ?></td>
+ <td class="row2"><table width="100%" cellspacing="0" cellpadding="0" border="0">
+ <tr>
+ <td><input type="checkbox" name="set_nonpostable" /> <?php echo $user->lang['SET_NON_POSTABLE'] ?></td>
+ </tr>
+ <tr>
+ <td>&nbsp; &nbsp; &nbsp;<input type="radio" name="action" value="delete" checked="checked" /> <?php echo $user->lang['Delete_all_posts'] ?></td>
+ </tr>
+ <tr>
+ <td>&nbsp; &nbsp; &nbsp;<input type="radio" name="action" value="move" /> <?php echo $user->lang['Move_posts_to'] ?> <select name="to_forum_id"><?php echo $forums_list ?></select></td>
+ </tr>
+ </table></td>
</tr>
<?php
- if ($forum_status != ITEM_CATEGORY)
- {
+ }
?>
<tr>
- <th colspan="2"><?php echo $user->lang['Forum_settings'] ?></th>
- </tr>
- <tr>
- <td class="row1"><?php echo $user->lang['Forum_status'] ?></td>
- <td class="row2"><select name="forum_status"><?php echo $statuslist ?></select></td>
+ <td class="row1"><?php echo $user->lang['FORUM_STYLE'] ?></td>
+ <td class="row2"><select name="forum_style"><option value="0"><?php echo $user->lang['Default_style'] ?></option><?php echo $styles_list ?></select></td>
</tr>
<tr>
- <td class="row1"><?php echo $user->lang['Options'] ?></td>
+ <td class="row1"><?php echo $user->lang['OPTIONS'] ?></td>
<td class="row2"><table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
- <td><input type="checkbox" name="disable_post_count"<?php echo ((!empty($post_count_inc)) ? ' ' : 'checked="checked" ') ?>/> <?php echo $user->lang['Disable_post_count'] ?></td>
+ <td><input type="checkbox" name="disable_post_count"<?php echo ((!empty($post_count_inc)) ? ' ' : 'checked="checked" ') ?>/> <?php echo $user->lang['DISABLE_POST_COUNT'] ?></td>
+ </tr>
+ <tr>
+ <td><input type="checkbox" name="topic_icons"<?php echo ((!empty($enable_icons)) ? 'checked="checked" ' : ' ') ?>/> <?php echo $user->lang['ENABLE_TOPIC_ICONS']; ?></td>
</tr>
<tr>
- <td><input type="checkbox" name="moderated"<?php echo ((!empty($moderated)) ? 'checked="checked" ' : ' ') ?>/> <?php echo $user->lang['Forum_is_moderated']; ?></td>
+ <td><input type="checkbox" name="moderated"<?php echo ((!empty($enable_moderate)) ? 'checked="checked" ' : ' ') ?>/> <?php echo $user->lang['FORUM_MODERATED']; ?></td>
</tr>
<?php
@@ -498,7 +523,7 @@ switch ($mode)
// if this forum is a subforum put the "display on index" checkbox
if ($parent_info = get_forum_info($parent_id))
{
- if ($parent_info['parent_id'] > 0 || $parent_info['forum_status'] != ITEM_CATEGORY)
+ if ($parent_info['parent_id'] > 0 || !$parent_info['forum_postable'])
{
?>
@@ -510,34 +535,10 @@ switch ($mode)
}
}
}
-?>
- </td></table>
- </tr>
-<?php
-
- if ($mode == 'edit')
- {
?>
- <tr>
- <td class="row1"><?php echo $user->lang['Forum_type'] ?></td>
- <td class="row2"><table width="100%" cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td><input type="checkbox" name="set_category" /> <?php echo $user->lang['Set_as_category'] ?></td>
- </tr>
- <tr>
- <td>&nbsp; &nbsp; &nbsp;<input type="radio" name="action" value="delete" checked="checked" /> <?php echo $user->lang['Delete_all_posts'] ?></td>
- </tr>
- <tr>
- <td>&nbsp; &nbsp; &nbsp;<input type="radio" name="action" value="move" /> <?php echo $user->lang['Move_posts_to'] ?> <select name="to_forum_id"><?php echo $forums_list ?></select></td>
- </tr>
- </table></td>
+ </td></table>
</tr>
-<?php
-
- }
-
-?>
<tr>
<td class="row1"><?php echo $user->lang['Forum_pruning'] ?></td>
<td class="row2"><table cellspacing="0" cellpadding="1" border="0">
@@ -558,21 +559,34 @@ switch ($mode)
<?php
}
+ else
+ {
+
+?>
+ <tr>
+ <td class="row1"><?php echo $user->lang['FORUM_IMAGE']; ?></td>
+ <td class="row2"><input class="post" type="text" size="25" name="forum_image" value="<?php echo $forum_image ?>" /></td>
+ </tr>
+<?php
+
+ }
?>
<tr>
- <td class="cat" colspan="2" align="center"><input type="hidden" name="mode" value="<?php echo $newmode ?>" /><input type="hidden" name="forum_id" value="<?php echo $forum_id ?>" /><input class="mainoption" type="submit" name="submit" value="<?php echo $buttonvalue ?>" /></td>
+ <td class="cat" colspan="2" align="center"><input type="hidden" name="mode" value="<?php echo $newmode ?>" /><input type="hidden" name="f" value="<?php echo $forum_id ?>" /><input class="mainoption" type="submit" name="submit" value="<?php echo $buttonvalue ?>" /></td>
</tr>
</table></form>
<br clear="all" />
+
<?php
+ page_footer();
break;
case 'delete':
page_header($user->lang['Forum_delete']);
- extract(get_forum_info($_GET['f']));
+ extract(get_forum_info(intval($_GET['this_f'])));
$subforums_id = array();
$subforums = get_forum_branch($forum_id, 'children');
@@ -589,18 +603,19 @@ switch ($mode)
<p><?php echo $user->lang['Forum_delete_explain'] ?></p>
-<form action="admin_forums.<?php echo $phpEx . $SID ?>&mode=remove&f=<?php echo $forum_id ?>" method="post">
- <table cellpadding="4" cellspacing="1" border="0" class="forumline" align="center">
+<form action="admin_forums.<?php echo $phpEx . $SID ?>&mode=remove&amp;f=<?php echo $forum_id ?>" method="post"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
<tr>
- <th colspan="2" class="thHead"><?php echo $user->lang['Forum_delete'] ?></th>
+ <th colspan="2"><?php echo $user->lang['Forum_delete'] ?></th>
</tr>
<tr>
- <td class="row1"><?php echo ($forum_status == ITEM_CATEGORY) ? $user->lang['Category_name'] : $user->lang['Forum_name'] ?></td>
+ <td class="row1"><?php echo $user->lang['Forum_name']; ?></td>
<td class="row1"><span class="row1"><?php echo $forum_name ?></span></td>
</tr>
<?php
- if ($forum_status != ITEM_CATEGORY)
+
+ if ($forum_postable)
{
+
?>
<tr>
<td class="row1"><?php echo $user->lang['Action'] ?></td>
@@ -611,9 +626,12 @@ switch ($mode)
<td class="row1"><input type="radio" name="action_posts" value="move" /> <?php echo $user->lang['Move_posts_to'] ?> <select name="posts_to_id" ?><option value="0"></option><?php echo $move_posts_list ?></select></td>
</tr>
<?php
+
}
+
if ($right_id - $left_id > 1)
{
+
?>
<tr>
<td class="row1"><?php echo $user->lang['Action'] ?></td>
@@ -624,7 +642,9 @@ switch ($mode)
<td class="row1"><input type="radio" name="action_subforums" value="move" /> <?php echo $user->lang['Move_subforums_to'] ?> <select name="subforums_to_id" ?><option value="0"></option><?php echo $forums_list ?></select></td>
</tr>
<?php
+
}
+
?>
<tr>
<td class="cat" colspan="2" align="center"><input type="submit" name="submit" value="<?php echo $user->lang['Move_and_Delete'] ?>" class="mainoption" /></td>
@@ -633,22 +653,17 @@ switch ($mode)
</form>
<?php
- break;
-
- default:
- $show_index = TRUE;
-}
+ page_footer();
-if (empty($show_index))
-{
- page_footer();
+ break;
}
+// Front end
page_header($user->lang['Manage']);
-$parent_id = (!empty($_GET['parent_id'])) ? $_GET['parent_id'] : 0;
+$forum_id = (!empty($_GET['f'])) ? intval($_GET['f']) : 0;
-if (!$parent_id)
+if (!$forum_id)
{
$navigation = 'Forum Index';
}
@@ -656,149 +671,94 @@ else
{
$navigation = '<a href="admin_forums.' . $phpEx . $SID . '">Forum Index</a>';
- $forums_nav = get_forum_branch($parent_id, 'parents', 'descending');
+ $forums_nav = get_forum_branch($forum_id, 'parents', 'descending');
foreach ($forums_nav as $row)
{
- if ($row['forum_id'] == $parent_id)
+ if ($row['forum_id'] == $forum_id)
{
$navigation .= ' -&gt; ' . htmlspecialchars($row['forum_name']);
}
else
{
- $navigation .= ' -&gt; <a href="admin_forums.' . $phpEx . $SID . '&parent_id=' . $row['forum_id'] . '">' . htmlspecialchars($row['forum_name']) . '</a>';
+ $navigation .= ' -&gt; <a href="admin_forums.' . $phpEx . $SID . '&amp;f=' . $row['forum_id'] . '">' . htmlspecialchars($row['forum_name']) . '</a>';
}
}
}
+
?>
-<h1>Manage</h1>
-<p>Here you can add, edit, delete, lock, unlock individual forums as well as set certain additional controls. If your posts and topics have got out of sync you can also resynchronise a forum. In phpBB 2.2 there are no categories, everything is forum based. Each forum can have an unlimited number of sub-forums and you can determine whether each may be posted to or not (i.e. whether it acts like an old category).</p>
+<h1><?php echo $user->lang['Manage']; ?></h1>
+
+<p><?php echo $user->lang['Forum_admin_explain']; ?></p>
-<?php echo $navigation ?><br />
-<form method="post" action="<?php echo "admin_forums.$phpEx$SID&mode=add" ?>"><table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline" align="center">
+<form method="post" action="<?php echo "admin_forums.$phpEx$SID&amp;mode=add" ?>">
+
+<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
+ <tr>
+ <td><?php echo $navigation ?></td>
+ </tr>
+</table>
+
+<table class="bg" width="100%" cellpadding="4" cellspacing="1" border="0" align="center">
<tr>
- <th class="thHead" colspan="9"><?php echo $user->lang['Forum_admin'] ?></th>
+ <th colspan="6"><?php echo $user->lang['Forum_admin'] ?></th>
</tr>
<?php
-$result = $db->sql_query('SELECT * FROM ' . FORUMS_TABLE . " WHERE parent_id = $parent_id ORDER BY left_id");
+$result = $db->sql_query('SELECT * FROM ' . FORUMS_TABLE . " WHERE parent_id = $forum_id ORDER BY left_id");
+
while ($row = $db->sql_fetchrow($result))
{
- //
// DEBUG
- //
+ $forum_id = $row['forum_id'];
+ $parent_id = $row['parent_id'];
$forum_title = htmlspecialchars($row['forum_name']);
$forum_desc = htmlspecialchars($row['forum_desc']);
- $url = $phpEx . $SID . '&f=' . $row['forum_id'];
- $subforums = ($row['right_id'] - $row['left_id'] - 1) / 2;
- if ($row['forum_status'] != ITEM_CATEGORY)
+ if ($forum_status != ITEM_LOCKED)
{
- $colspan = ' colspan="2"';
- $forum_stats = '
- <td class="row1" align="center" valign="middle"><span class="gen">' . $row['forum_topics'] . '</span></td>
- <td class="row2" align="center" valign="middle"><span class="gen">' . $row['forum_posts'] . '</span></td>
- <td class="row3" align="center" valign="middle"><span class="gen">' . $subforums . '</span></td>
- ';
+ if ($row['left_id'] + 1 != $row['right_id'])
+ {
+ $folder_image = '<img src="images/icon_subfolder.gif" width="46" height="25" alt="' . $user->lang['SUBFORUM'] . '" alt="' . $user->lang['SUBFORUM'] . '" />';
+ }
+ else
+ {
+ $folder_image = '<img src="images/icon_folder.gif" width="46" height="25" alt="' . $user->lang['SUBFORUM'] . '" alt="' . $user->lang['FOLDER'] . '" />';
+ }
}
else
{
- $colspan = ' colspan="4"';
- $forum_stats = '
- <td class="row3" align="center" valign="middle"><span class="gen">' . $subforums . '</span></td>
- ';
+ $folder_image = '<img src="images/icon_folder_lock.gif" width=""46 height="25" alt="' . $user->lang['SUBFORUM'] . '" alt="' . $user->lang['LOCKED'] . '" />';
}
- if ($row['left_id'] + 1 != $row['right_id'])
- {
- $forum_title = '<a href="admin_forums.' . $phpEx . $SID . '&parent_id=' . $row['forum_id'] . '">' . $forum_title . '</a>';
- }
+ $url = $phpEx . $SID . '&amp;this_f=' . $row['forum_id'];
+
+ $forum_title = '<a href="admin_forums.' . $phpEx . $SID . '&amp;f=' . $row['forum_id'] . '">' . $forum_title . '</a>';
- if ($row['forum_status'] == ITEM_CATEGORY)
- {
?>
<tr>
- <td class="cat" colspan="5"><span class="cattitle"><b><?php echo $forum_title ?></b></span></td>
- <td class="cat" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=edit"><?php echo $user->lang['Edit'] ?></a></span></td>
- <td class="cat" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=delete"><?php echo $user->lang['Delete'] ?></a></span></td>
- <td class="cat" align="center" valign="middle" nowrap="nowrap"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=move_up&parent_id=<?php echo $parent_id ?>"><?php echo $user->lang['Move_up'] ?></a> <a href="admin_forums.<?php echo $url ?>&mode=move_down&parent_id=<?php echo $parent_id ?>"><?php echo $user->lang['Move_down'] ?></a></span></td>
- <td class="cat" align="center" valign="middle"><span class="gen">&nbsp</span></td>
- </tr>
-
-<?php
+ <td class="row1" width="5%"><?php echo $folder_image; ?></td>
+ <td class="row2" width="50%"><span class="gen"><?php echo $forum_title ?></span><br /><span class="gensmall"><?php echo $forum_desc ?></span></td>
- $sub_result = $db->sql_query('SELECT * FROM ' . FORUMS_TABLE . ' WHERE parent_id = ' . $row['forum_id'] . ' ORDER BY left_id');
- while ($sub_row = $db->sql_fetchrow($sub_result))
- {
- $url = $phpEx . $SID . '&f=' . $sub_row['forum_id'];
- $forum_title = htmlspecialchars($sub_row['forum_name']);
- $forum_desc = htmlspecialchars($sub_row['forum_desc']);
- $subforums = ($sub_row['right_id'] - $sub_row['left_id'] - 1) / 2;
+ <td class="row1" width="5%" align="center" valign="middle" title="<?php echo $user->lang['TOPICS']; ?>"><span class="gen"><?php echo $row['forum_topics'] ?></span></td>
+ <td class="row2" width="5%" align="center" valign="middle" title="<?php echo $user->lang['POSTS']; ?>"><span class="gen"><?php echo $row['forum_posts'] ?></span></td>
- if ($sub_row['forum_status'] != ITEM_CATEGORY)
- {
- $colspan = '';
- $forum_stats = '
- <td class="row1" align="center" valign="middle"><span class="gen">' . $sub_row['forum_topics'] . '</span></td>
- <td class="row2" align="center" valign="middle"><span class="gen">' . $sub_row['forum_posts'] . '</span></td>
- <td class="row3" align="center" valign="middle"><span class="gen">' . $subforums . '</span></td>
- ';
- }
- else
- {
- $colspan = ' colspan="3"';
- $forum_stats = '
- <td class="row3" align="center" valign="middle"><span class="gen">' . $subforums . '</span></td>
- ';
- }
+ <td class="row2" width="15%" align="center" valign="middle" nowrap="nowrap"><span class="gen"><a href="admin_forums.<?php echo $url ?>&amp;mode=move_up"><?php echo $user->lang['Move_up'] ?></a> <br /> <a href="admin_forums.<?php echo $url ?>&amp;mode=move_down"><?php echo $user->lang['Move_down'] ?></a></span></td>
- if ($sub_row['left_id'] + 1 != $sub_row['right_id'])
- {
- $forum_title = '<a href="admin_forums.' . $phpEx . $SID . '&parent_id=' . $sub_row['forum_id'] . '">' . $forum_title . '</a>';
- }
-?>
- <tr>
- <td width="1" class="row3"></td>
- <td width="40%" class="row2"<?php echo $colspan ?>><span class="gen"><?php echo $forum_title ?></span><br /><span class="gensmall"><?php echo $forum_desc ?></span></td>
- <?php echo $forum_stats ?>
- <td class="row2" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=edit"><?php echo $user->lang['Edit'] ?></a></span></td>
- <td class="row1" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=delete"><?php echo $user->lang['Delete'] ?></a></span></td>
- <td class="row2" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=move_up&parent_id=<?php echo $parent_id ?>"><?php echo $user->lang['Move_up'] ?></a> <br /> <a href="admin_forums.<?php echo $url ?>&mode=move_down&parent_id=<?php echo $parent_id ?>"><?php echo $user->lang['Move_down'] ?></a></span></td>
- <td class="row1" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=resync&parent_id=<?php echo $parent_id ?>"><?php echo ($sub_row['forum_status'] != ITEM_CATEGORY) ? $user->lang['Resync'] : '&nbsp;' ?></a></span></td>
- </tr>
-<?php
- }
-?>
- <tr>
- <td width="1" class="row3"></td>
- <td width="100%" colspan="8" class="row2"><input type="text" name="forum_name[<? echo $row['forum_id'] ?>]" /> <input type="submit" class="liteoption" name="parent_id[<? echo $row['forum_id'] ?>]" value="<?php echo $user->lang['Create_forum'] ?>" /></td>
- </tr>
-<?php
- }
- else
- {
-?>
- <tr>
- <td width="40%" class="row2"<?php echo $colspan ?>><span class="gen"><?php echo $forum_title ?></span><br /><span class="gensmall"><?php echo $forum_desc ?></span></td>
- <?php echo $forum_stats ?>
- <td class="row2" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=edit"><?php echo $user->lang['Edit'] ?></a></span></td>
- <td class="row1" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=delete"><?php echo $user->lang['Delete'] ?></a></span></td>
- <td class="row2" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=move_up&parent_id=<?php echo $parent_id ?>"><?php echo $user->lang['Move_up'] ?></a> <br /> <a href="admin_forums.<?php echo $url ?>&mode=move_down&parent_id=<?php echo $parent_id ?>"><?php echo $user->lang['Move_down'] ?></a></span></td>
- <td class="row1" align="center" valign="middle"><span class="gen"><a href="admin_forums.<?php echo $url ?>&mode=resync&parent_id=<?php echo $parent_id ?>"><?php echo $user->lang['Resync'] ?></a></span></td>
+ <td class="row2" width="20%" align="center" valign="middle" nowrap="nowrap">&nbsp;<span class="gen"><a href="admin_forums.<?php echo $url ?>&amp;mode=edit"><?php echo $user->lang['Edit'] ?></a> | <a href="admin_forums.<?php echo $url ?>&amp;mode=delete"><?php echo $user->lang['Delete'] ?></a> | <a href="admin_forums.<?php echo $url ?>&amp;mode=sync"><?php echo $user->lang['Resync'] ?></a></span>&nbsp;</td>
</tr>
<?php
- }
+
}
?>
<tr>
- <td width="100%" colspan="9" class="cat"><input type="text" name="forum_name[<? echo $parent_id ?>]" /> <input type="submit" class="liteoption" name="parent_id[<? echo $parent_id ?>]" value="<?php echo $user->lang['Create_forum'] ?>" /></td>
+ <td width="100%" colspan="6" class="cat"><input type="text" name="forum_name[<? echo $forum_id ?>]" /> <input type="submit" class="liteoption" name="parent_id[<? echo $forum_id ?>]" value="<?php echo $user->lang['Create_forum'] ?>" /></td>
</tr>
</table></form>
<?php
-
page_footer();
//
@@ -812,31 +772,34 @@ page_footer();
function get_forum_info($forum_id)
{
global $db;
+
$sql = 'SELECT *
- FROM ' . FORUMS_TABLE . "
- WHERE forum_id = $forum_id";
+ FROM ' . FORUMS_TABLE . "
+ WHERE forum_id = $forum_id";
$result = $db->sql_query($sql);
+
if (!$row = $db->sql_fetchrow($result))
{
- message_die(ERROR, "Forum #$forum_id does not exist");
+ trigger_error("Forum #$forum_id does not exist", E_USER_ERROR);
}
return $row;
}
-function make_forums_list($mode='all', $selected_id=0, $exclude_id=array())
+function make_forums_list($mode = 'all', $selected_id = 0, $exclude_id = array())
{
global $db;
+
if (!is_array($exclude_id))
{
$exclude_id = array($exclude_id);
}
$sql = 'SELECT f2.*
- FROM ' . FORUMS_TABLE . ' f1, ' . FORUMS_TABLE . ' f2
- WHERE f1.parent_id = 0
- AND f2.left_id BETWEEN f1.left_id AND f1.right_id
- ORDER BY f2.left_id';
+ FROM ' . FORUMS_TABLE . ' f1, ' . FORUMS_TABLE . ' f2
+ WHERE f1.parent_id = 0
+ AND f2.left_id BETWEEN f1.left_id AND f1.right_id
+ ORDER BY f2.left_id';
$result = $db->sql_query($sql);
$list = '';
@@ -859,9 +822,9 @@ function make_forums_list($mode='all', $selected_id=0, $exclude_id=array())
$current_indent = $indent[$row['parent_id']];
}
- if (($mode == 'forums' && $row['forum_status'] == ITEM_CATEGORY)
- || ($mode == 'categories' && $row['forum_status'] != ITEM_CATEGORY)
- || (in_array($row['forum_id'], $exclude_id)))
+ if (($mode == 'forums' && !$row['forum_postable'])
+ || ($mode == 'categories' && $row['forum_postable'])
+ || (in_array($row['forum_id'], $exclude_id)))
{
continue;
}
@@ -879,7 +842,7 @@ function make_forums_list($mode='all', $selected_id=0, $exclude_id=array())
return $list;
}
-function make_styles_list($selected_id=0)
+function make_styles_list($selected_id = 0)
{
global $db;
@@ -907,17 +870,13 @@ function move_forum($from_id, $to_id)
$moved_ids[] = $moved_forums[$i]['forum_id'];
}
- //
// Resync parents
- //
$sql = 'UPDATE ' . FORUMS_TABLE . "
SET right_id = right_id - $diff, forum_parents = ''
WHERE left_id < " . $from_data['right_id'] . " AND right_id > " . $from_data['right_id'];
$db->sql_query($sql);
- //
// Resync righthand side of tree
- //
$sql = 'UPDATE ' . FORUMS_TABLE . "
SET left_id = left_id - $diff, right_id = right_id - $diff, forum_parents = ''
WHERE left_id > " . $from_data['right_id'];
@@ -927,27 +886,21 @@ function move_forum($from_id, $to_id)
{
$to_data = get_forum_info($to_id);
- //
// Resync new parents
- //
$sql = 'UPDATE ' . FORUMS_TABLE . "
SET right_id = right_id + $diff, forum_parents = ''
WHERE " . $to_data['right_id'] . ' BETWEEN left_id AND right_id
AND forum_id NOT IN (' . implode(', ', $moved_ids) . ')';
$db->sql_query($sql);
- //
// Resync the righthand side of the tree
- //
$sql = 'UPDATE ' . FORUMS_TABLE . "
SET left_id = left_id + $diff, right_id = right_id + $diff, forum_parents = ''
WHERE left_id > " . $to_data['right_id'] . '
AND forum_id NOT IN (' . implode(', ', $moved_ids) . ')';
$db->sql_query($sql);
- //
// Resync moved branch
- //
$to_data['right_id'] += $diff;
if ($to_data['right_id'] > $from_data['right_id'])
{
@@ -977,7 +930,7 @@ function move_forum_content($from_id, $to_id)
global $db;
$db->sql_query('UPDATE ' . ACL_GROUPS_TABLE . " SET forum_id = $to_id WHERE forum_id = $from_id");
- $db->sql_query('UPDATE ' . ACL_PREFETCH_TABLE . " SET forum_id = $to_id WHERE forum_id = $from_id");
+ $db->sql_query('UPDATE ' . MODERATOR_TABLE . " SET forum_id = $to_id WHERE forum_id = $from_id");
$db->sql_query('UPDATE ' . LOG_MOD_TABLE . " SET forum_id = $to_id WHERE forum_id = $from_id");
$db->sql_query('UPDATE ' . POSTS_TABLE . " SET forum_id = $to_id WHERE forum_id = $from_id");
$db->sql_query('UPDATE ' . TOPICS_TABLE . " SET forum_id = $to_id WHERE forum_id = $from_id");
@@ -986,9 +939,9 @@ function move_forum_content($from_id, $to_id)
// TODO: untested yet
//
$sql = 'SELECT t1.topic_id
- FROM ' .TOPICS_TABLE . ' t1
- LEFT JOIN ' . TOPICS_TABLE . " t2 ON t1.topic_moved_id = t2.topic_id AND t1.forum_id = t2.forum_id
- WHERE t1.forum_id = $to_id";
+ FROM ' .TOPICS_TABLE . ' t1
+ LEFT JOIN ' . TOPICS_TABLE . " t2 ON t1.topic_moved_id = t2.topic_id AND t1.forum_id = t2.forum_id
+ WHERE t1.forum_id = $to_id";
$result = $db->sql_query($result);
$topic_ids = array();
@@ -1013,12 +966,13 @@ function delete_forum_content($forum_id)
global $db;
$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 ' . MODERATOR_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");
+
while ($row = $db->sql_fetchrow($result))
{
$ids[] = $row['post_id'];
@@ -1035,6 +989,7 @@ function delete_forum_content($forum_id)
$ids = array();
$result = $db->sql_query('SELECT topic_id FROM ' . TOPICS_TABLE . " WHERE forum_id = $forum_id");
+
while ($row = $db->sql_fetchrow($result))
{
$ids[] = $row['topic_id'];
@@ -1044,7 +999,6 @@ function delete_forum_content($forum_id)
if ($ids)
{
- $db->sql_query('DELETE FROM ' . TOPICS_RATING_TABLE . " WHERE topic_id IN ($ids)");
$db->sql_query('DELETE FROM ' . TOPICS_WATCH_TABLE . " WHERE topic_id IN ($ids)");
$db->sql_query('DELETE FROM ' . TOPICS_TABLE . " WHERE forum_id = $forum_id");
$db->sql_query('DELETE FROM ' . TOPICS_TABLE . " WHERE topic_moved_id IN ($ids)");