mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-06 06:25:04 +02:00
964 lines
28 KiB
PHP
964 lines
28 KiB
PHP
<?php
|
|
/***************************************************************************
|
|
* admin_forums.php
|
|
* -------------------
|
|
* begin : Thursday, Jul 12, 2001
|
|
* copyright : (C) 2001 The phpBB Group
|
|
* email : support@phpbb.com
|
|
*
|
|
* $Id$
|
|
*
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
***************************************************************************/
|
|
|
|
if ( !empty($setmodules) )
|
|
{
|
|
if ( !$acl->get_acl_admin('forum') )
|
|
{
|
|
return;
|
|
}
|
|
|
|
$file = basename(__FILE__);
|
|
$module['Forums']['Manage'] = $file . $SID;
|
|
return;
|
|
}
|
|
|
|
define('IN_PHPBB', 1);
|
|
//
|
|
// Include files
|
|
//
|
|
$phpbb_root_path = '../';
|
|
require($phpbb_root_path . 'extension.inc');
|
|
require('pagestart.' . $phpEx);
|
|
include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
|
|
|
|
//
|
|
// Do we have forum admin permissions?
|
|
//
|
|
if ( !$acl->get_acl_admin('forum') )
|
|
{
|
|
message_die(MESSAGE, $lang['No_admin']);
|
|
}
|
|
|
|
//
|
|
// Mode setting
|
|
//
|
|
if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
|
|
{
|
|
$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
|
|
}
|
|
else
|
|
{
|
|
$mode = '';
|
|
}
|
|
|
|
//
|
|
// Begin program proper
|
|
//
|
|
if ( isset($HTTP_POST_VARS['addforum']) || isset($HTTP_POST_VARS['addcategory']) )
|
|
{
|
|
$mode = ( isset($HTTP_POST_VARS['addforum']) ) ? "addforum" : "addcat";
|
|
|
|
if( $mode == "addforum" )
|
|
{
|
|
list($cat_id) = each($HTTP_POST_VARS['addforum']);
|
|
//
|
|
// stripslashes needs to be run on this because slashes are added when the forum name is posted
|
|
//
|
|
$forumname = stripslashes($HTTP_POST_VARS['forumname'][$cat_id]);
|
|
}
|
|
}
|
|
|
|
if ( !empty($mode) )
|
|
{
|
|
switch($mode)
|
|
{
|
|
case 'addforum':
|
|
case 'editforum':
|
|
//
|
|
// Show form to create/modify a forum
|
|
//
|
|
if ($mode == 'editforum')
|
|
{
|
|
// $newmode determines if we are going to INSERT or UPDATE after posting?
|
|
|
|
$l_title = $lang['Edit_forum'];
|
|
$newmode = 'modforum';
|
|
$buttonvalue = $lang['Update'];
|
|
|
|
$forum_id = intval($HTTP_GET_VARS[POST_FORUM_URL]);
|
|
|
|
$row = get_info('forum', $forum_id);
|
|
|
|
$cat_id = $row['cat_id'];
|
|
$forumname = $row['forum_name'];
|
|
$forumdesc = $row['forum_desc'];
|
|
$forumstatus = $row['forum_status'];
|
|
|
|
//
|
|
// start forum prune stuff.
|
|
//
|
|
if( $row['prune_enable'] )
|
|
{
|
|
$prune_enabled = "checked=\"checked\"";
|
|
$sql = "SELECT *
|
|
FROM " . PRUNE_TABLE . "
|
|
WHERE forum_id = $forum_id";
|
|
if(!$pr_result = $db->sql_query($sql))
|
|
{
|
|
message_die(GENERAL_ERROR, "Auto-Prune: Couldn't read auto_prune table.", __LINE__, __FILE__);
|
|
}
|
|
|
|
$pr_row = $db->sql_fetchrow($pr_result);
|
|
}
|
|
else
|
|
{
|
|
$prune_enabled = '';
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$l_title = $lang['Create_forum'];
|
|
$newmode = 'createforum';
|
|
$buttonvalue = $lang['Create_forum'];
|
|
|
|
$forumdesc = '';
|
|
$forumstatus = FORUM_UNLOCKED;
|
|
$forum_id = '';
|
|
$prune_enabled = '';
|
|
}
|
|
|
|
$catlist = get_list('category', $cat_id, TRUE);
|
|
|
|
$forumstatus == ( FORUM_LOCKED ) ? $forumlocked = "selected=\"selected\"" : $forumunlocked = "selected=\"selected\"";
|
|
$statuslist = "<option value=\"" . FORUM_UNLOCKED . "\" $forumunlocked>Unlocked</option>\n";
|
|
$statuslist .= "<option value=\"" . FORUM_LOCKED . "\" $forumlocked>Locked</option>\n";
|
|
|
|
$template->set_filenames(array(
|
|
"body" => "admin/forum_edit_body.tpl")
|
|
);
|
|
|
|
$s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode .'" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />';
|
|
|
|
$template->assign_vars(array(
|
|
'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"),
|
|
'S_HIDDEN_FIELDS' => $s_hidden_fields,
|
|
'S_SUBMIT_VALUE' => $buttonvalue,
|
|
'S_CAT_LIST' => $catlist,
|
|
'S_STATUS_LIST' => $statuslist,
|
|
'S_PRUNE_ENABLED' => $prune_enabled,
|
|
|
|
'L_FORUM_TITLE' => $l_title,
|
|
'L_FORUM_EXPLAIN' => $lang['Forum_edit_delete_explain'],
|
|
'L_FORUM_SETTINGS' => $lang['Forum_settings'],
|
|
'L_FORUM_NAME' => $lang['Forum_name'],
|
|
'L_CATEGORY' => $lang['Category'],
|
|
'L_FORUM_DESCRIPTION' => $lang['Forum_desc'],
|
|
'L_FORUM_STATUS' => $lang['Forum_status'],
|
|
'L_AUTO_PRUNE' => $lang['Forum_pruning'],
|
|
'L_ENABLED' => $lang['Enabled'],
|
|
'L_PRUNE_DAYS' => $lang['prune_days'],
|
|
'L_PRUNE_FREQ' => $lang['prune_freq'],
|
|
'L_DAYS' => $lang['Days'],
|
|
|
|
'PRUNE_DAYS' => ( isset($pr_row['prune_days']) ) ? $pr_row['prune_days'] : 7,
|
|
'PRUNE_FREQ' => ( isset($pr_row['prune_freq']) ) ? $pr_row['prune_freq'] : 1,
|
|
'FORUM_NAME' => $forumname,
|
|
'DESCRIPTION' => $forumdesc)
|
|
);
|
|
$template->pparse("body");
|
|
break;
|
|
|
|
case 'createforum':
|
|
//
|
|
// Create a forum in the DB
|
|
//
|
|
if( trim($HTTP_POST_VARS['forumname']) == "" )
|
|
{
|
|
message_die(GENERAL_ERROR, "Can't create a forum without a name");
|
|
}
|
|
|
|
$sql = "SELECT MAX(forum_order) AS max_order
|
|
FROM " . FORUMS_TABLE . "
|
|
WHERE cat_id = " . intval($HTTP_POST_VARS[POST_CAT_URL]);
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get order number from forums table", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
$row = $db->sql_fetchrow($result);
|
|
|
|
$max_order = $row['max_order'];
|
|
$next_order = $max_order + 10;
|
|
|
|
$sql = "SELECT MAX(forum_id) AS max_id
|
|
FROM " . FORUMS_TABLE;
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get order number from forums table", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
$row = $db->sql_fetchrow($result);
|
|
|
|
$max_id = $row['max_id'];
|
|
$next_id = $max_id + 1;
|
|
|
|
//
|
|
// Default permissions of public ::
|
|
//
|
|
$field_sql = "";
|
|
$value_sql = "";
|
|
while( list($field, $value) = each($forum_auth_ary) )
|
|
{
|
|
$field_sql .= ", $field";
|
|
$value_sql .= ", $value";
|
|
|
|
}
|
|
|
|
// There is no problem having duplicate forum names so we won't check for it.
|
|
$sql = "INSERT INTO " . FORUMS_TABLE . " (forum_id, forum_name, cat_id, forum_desc, forum_order, forum_status, prune_enable" . $field_sql . ")
|
|
VALUES ('" . $next_id . "', '" . str_replace("\'", "''", $HTTP_POST_VARS['forumname']) . "', " . intval($HTTP_POST_VARS[POST_CAT_URL]) . ", '" . str_replace("\'", "''", $HTTP_POST_VARS['forumdesc']) . "', $next_order, " . intval($HTTP_POST_VARS['forumstatus']) . ", " . intval($HTTP_POST_VARS['prune_enable']) . $value_sql . ")";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't insert row in forums table", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
if( $HTTP_POST_VARS['prune_enable'] )
|
|
{
|
|
|
|
if( $HTTP_POST_VARS['prune_days'] == "" || $HTTP_POST_VARS['prune_freq'] == "")
|
|
{
|
|
message_die(GENERAL_MESSAGE, $lang['Set_prune_data']);
|
|
}
|
|
|
|
$sql = "INSERT INTO " . PRUNE_TABLE . " (forum_id, prune_days, prune_freq)
|
|
VALUES('" . $next_id . "', " . intval($HTTP_POST_VARS['prune_days']) . ", " . intval($HTTP_POST_VARS['prune_freq']) . ")";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't insert row in prune table", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
}
|
|
|
|
$message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
|
|
|
|
message_die(GENERAL_MESSAGE, $message);
|
|
|
|
break;
|
|
|
|
case 'modforum':
|
|
// Modify a forum in the DB
|
|
if( isset($HTTP_POST_VARS['prune_enable']))
|
|
{
|
|
if( $HTTP_POST_VARS['prune_enable'] != 1 )
|
|
{
|
|
$HTTP_POST_VARS['prune_enable'] = 0;
|
|
}
|
|
}
|
|
|
|
$sql = "UPDATE " . FORUMS_TABLE . "
|
|
SET forum_name = '" . str_replace("\'", "''", $HTTP_POST_VARS['forumname']) . "', cat_id = " . intval($HTTP_POST_VARS[POST_CAT_URL]) . ", forum_desc = '" . str_replace("\'", "''", $HTTP_POST_VARS['forumdesc']) . "', forum_status = " . intval($HTTP_POST_VARS['forumstatus']) . ", prune_enable = " . intval($HTTP_POST_VARS['prune_enable']) . "
|
|
WHERE forum_id = " . intval($HTTP_POST_VARS[POST_FORUM_URL]);
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't update forum information", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
if( $HTTP_POST_VARS['prune_enable'] == 1 )
|
|
{
|
|
if( $HTTP_POST_VARS['prune_days'] == "" || $HTTP_POST_VARS['prune_freq'] == "" )
|
|
{
|
|
message_die(GENERAL_MESSAGE, $lang['Set_prune_data']);
|
|
}
|
|
|
|
$sql = "SELECT *
|
|
FROM " . PRUNE_TABLE . "
|
|
WHERE forum_id = " . intval($HTTP_POST_VARS[POST_FORUM_URL]);
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get forum Prune Information","",__LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
if( $db->sql_numrows($result) > 0 )
|
|
{
|
|
$sql = "UPDATE " . PRUNE_TABLE . "
|
|
SET prune_days = " . intval($HTTP_POST_VARS['prune_days']) . ", prune_freq = " . intval($HTTP_POST_VARS['prune_freq']) . "
|
|
WHERE forum_id = " . intval($HTTP_POST_VARS[POST_FORUM_URL]);
|
|
}
|
|
else
|
|
{
|
|
$sql = "INSERT INTO " . PRUNE_TABLE . " (forum_id, prune_days, prune_freq)
|
|
VALUES(" . intval($HTTP_POST_VARS[POST_FORUM_URL]) . ", " . intval($HTTP_POST_VARS['prune_days']) . ", " . intval($HTTP_POST_VARS['prune_freq']) . ")";
|
|
}
|
|
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't Update Forum Prune Information","",__LINE__, __FILE__, $sql);
|
|
}
|
|
}
|
|
|
|
$message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
|
|
|
|
message_die(GENERAL_MESSAGE, $message);
|
|
|
|
break;
|
|
|
|
case 'addcat':
|
|
// Create a category in the DB
|
|
if( trim($HTTP_POST_VARS['categoryname']) == '')
|
|
{
|
|
message_die(GENERAL_ERROR, "Can't create a category without a name");
|
|
}
|
|
|
|
$sql = "SELECT MAX(cat_order) AS max_order
|
|
FROM " . CATEGORIES_TABLE;
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get order number from categories table", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
$row = $db->sql_fetchrow($result);
|
|
|
|
$max_order = $row['max_order'];
|
|
$next_order = $max_order + 10;
|
|
|
|
//
|
|
// There is no problem having duplicate forum names so we won't check for it.
|
|
//
|
|
$sql = "INSERT INTO " . CATEGORIES_TABLE . " (cat_title, cat_order)
|
|
VALUES ('" . $HTTP_POST_VARS['categoryname'] . "', $next_order)";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't insert row in categories table", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
$message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
|
|
|
|
message_die(GENERAL_MESSAGE, $message);
|
|
|
|
break;
|
|
|
|
case 'editcat':
|
|
//
|
|
// Show form to edit a category
|
|
//
|
|
$newmode = 'modcat';
|
|
$buttonvalue = $lang['Update'];
|
|
|
|
$cat_id = intval($HTTP_GET_VARS[POST_CAT_URL]);
|
|
|
|
$row = get_info('category', $cat_id);
|
|
$cat_title = $row['cat_title'];
|
|
|
|
$template->set_filenames(array(
|
|
"body" => "admin/category_edit_body.tpl")
|
|
);
|
|
|
|
$s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode . '" /><input type="hidden" name="' . POST_CAT_URL . '" value="' . $cat_id . '" />';
|
|
|
|
$template->assign_vars(array(
|
|
'CAT_TITLE' => $cat_title,
|
|
|
|
'L_EDIT_CATEGORY' => $lang['Edit_Category'],
|
|
'L_EDIT_CATEGORY_EXPLAIN' => $lang['Edit_Category_explain'],
|
|
'L_CATEGORY' => $lang['Category'],
|
|
|
|
'S_HIDDEN_FIELDS' => $s_hidden_fields,
|
|
'S_SUBMIT_VALUE' => $buttonvalue,
|
|
'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"))
|
|
);
|
|
|
|
$template->pparse("body");
|
|
break;
|
|
|
|
case 'modcat':
|
|
// Modify a category in the DB
|
|
$sql = "UPDATE " . CATEGORIES_TABLE . "
|
|
SET cat_title = '" . str_replace("\'", "''", $HTTP_POST_VARS['cat_title']) . "'
|
|
WHERE cat_id = " . intval($HTTP_POST_VARS[POST_CAT_URL]);
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't update forum information", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
$message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
|
|
|
|
message_die(GENERAL_MESSAGE, $message);
|
|
|
|
break;
|
|
|
|
case 'deleteforum':
|
|
// Show form to delete a forum
|
|
$forum_id = intval($HTTP_GET_VARS[POST_FORUM_URL]);
|
|
|
|
$select_to = '<select name="to_id">';
|
|
$select_to .= "<option value=\"-1\"$s>" . $lang['Delete_all_posts'] . "</option>\n";
|
|
$select_to .= get_list('forum', $forum_id, 0);
|
|
$select_to .= '</select>';
|
|
|
|
$buttonvalue = $lang['Move_and_Delete'];
|
|
|
|
$newmode = 'movedelforum';
|
|
|
|
$foruminfo = get_info('forum', $forum_id);
|
|
$name = $foruminfo['forum_name'];
|
|
|
|
$template->set_filenames(array(
|
|
"body" => "admin/forum_delete_body.tpl")
|
|
);
|
|
|
|
$s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode . '" /><input type="hidden" name="from_id" value="' . $forum_id . '" />';
|
|
|
|
$template->assign_vars(array(
|
|
'NAME' => $name,
|
|
|
|
'L_FORUM_DELETE' => $lang['Forum_delete'],
|
|
'L_FORUM_DELETE_EXPLAIN' => $lang['Forum_delete_explain'],
|
|
'L_MOVE_CONTENTS' => $lang['Move_contents'],
|
|
'L_FORUM_NAME' => $lang['Forum_name'],
|
|
|
|
"S_HIDDEN_FIELDS" => $s_hidden_fields,
|
|
'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"),
|
|
'S_SELECT_TO' => $select_to,
|
|
'S_SUBMIT_VALUE' => $buttonvalue)
|
|
);
|
|
|
|
$template->pparse("body");
|
|
break;
|
|
|
|
case 'movedelforum':
|
|
//
|
|
// Move or delete a forum in the DB
|
|
//
|
|
$from_id = intval($HTTP_POST_VARS['from_id']);
|
|
$to_id = intval($HTTP_POST_VARS['to_id']);
|
|
$delete_old = intval($HTTP_POST_VARS['delete_old']);
|
|
|
|
// Either delete or move all posts in a forum
|
|
if($to_id == -1)
|
|
{
|
|
include($phpbb_root_path . "includes/prune.$phpEx");
|
|
prune($from_id, 0); // Delete everything from forum
|
|
}
|
|
else
|
|
{
|
|
$sql = "SELECT *
|
|
FROM " . FORUMS_TABLE . "
|
|
WHERE forum_id IN ($from_id, $to_id)";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't verify existence of forums", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
if($db->sql_numrows($result) != 2)
|
|
{
|
|
message_die(GENERAL_ERROR, "Ambiguous forum ID's", "", __LINE__, __FILE__);
|
|
}
|
|
$sql = "UPDATE " . TOPICS_TABLE . "
|
|
SET forum_id = $to_id
|
|
WHERE forum_id = $from_id";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't move topics to other forum", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
$sql = "UPDATE " . POSTS_TABLE . "
|
|
SET forum_id = $to_id
|
|
WHERE forum_id = $from_id";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't move posts to other forum", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
sync('forum', $to_id);
|
|
}
|
|
|
|
$sql = "DELETE FROM " . FORUMS_TABLE . "
|
|
WHERE forum_id = $from_id";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't delete forum", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
$sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
|
|
WHERE forum_id = $from_id";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't delete forum", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
$sql = "DELETE FROM " . PRUNE_TABLE . "
|
|
WHERE forum_id = $from_id";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't delete forum prune information!", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
$message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
|
|
|
|
message_die(GENERAL_MESSAGE, $message);
|
|
|
|
break;
|
|
|
|
case 'deletecat':
|
|
//
|
|
// Show form to delete a category
|
|
//
|
|
$cat_id = intval($HTTP_GET_VARS[POST_CAT_URL]);
|
|
|
|
$buttonvalue = $lang['Move_and_Delete'];
|
|
$newmode = 'movedelcat';
|
|
$catinfo = get_info('category', $cat_id);
|
|
$name = $catinfo['cat_title'];
|
|
|
|
if ($catinfo['number'] == 1)
|
|
{
|
|
$sql = "SELECT count(*) as total
|
|
FROM ". FORUMS_TABLE;
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get Forum count", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
$count = $db->sql_fetchrow($result);
|
|
$count = $count['total'];
|
|
|
|
if ($count > 0)
|
|
{
|
|
message_die(GENERAL_ERROR, $lang['Must_delete_forums']);
|
|
}
|
|
else
|
|
{
|
|
$select_to = $lang['Nowhere_to_move'];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$select_to = '<select name="to_id">';
|
|
$select_to .= get_list('category', $cat_id, 0);
|
|
$select_to .= '</select>';
|
|
}
|
|
|
|
$template->set_filenames(array(
|
|
"body" => "admin/forum_delete_body.tpl")
|
|
);
|
|
|
|
$s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode . '" /><input type="hidden" name="from_id" value="' . $cat_id . '" />';
|
|
|
|
$template->assign_vars(array(
|
|
'NAME' => $name,
|
|
|
|
'L_FORUM_DELETE' => $lang['Forum_delete'],
|
|
'L_FORUM_DELETE_EXPLAIN' => $lang['Forum_delete_explain'],
|
|
'L_MOVE_CONTENTS' => $lang['Move_contents'],
|
|
'L_FORUM_NAME' => $lang['Forum_name'],
|
|
|
|
'S_HIDDEN_FIELDS' => $s_hidden_fields,
|
|
'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"),
|
|
'S_SELECT_TO' => $select_to,
|
|
'S_SUBMIT_VALUE' => $buttonvalue)
|
|
);
|
|
|
|
$template->pparse("body");
|
|
break;
|
|
|
|
case 'movedelcat':
|
|
//
|
|
// Move or delete a category in the DB
|
|
//
|
|
$from_id = intval($HTTP_POST_VARS['from_id']);
|
|
$to_id = intval($HTTP_POST_VARS['to_id']);
|
|
|
|
if (!empty($to_id))
|
|
{
|
|
$sql = "SELECT *
|
|
FROM " . CATEGORIES_TABLE . "
|
|
WHERE cat_id IN ($from_id, $to_id)";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't verify existence of categories", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
if($db->sql_numrows($result) != 2)
|
|
{
|
|
message_die(GENERAL_ERROR, "Ambiguous category ID's", "", __LINE__, __FILE__);
|
|
}
|
|
|
|
$sql = "UPDATE " . FORUMS_TABLE . "
|
|
SET cat_id = $to_id
|
|
WHERE cat_id = $from_id";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't move forums to other category", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
}
|
|
|
|
$sql = "DELETE FROM " . CATEGORIES_TABLE ."
|
|
WHERE cat_id = $from_id";
|
|
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't delete category", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
$message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
|
|
|
|
message_die(GENERAL_MESSAGE, $message);
|
|
|
|
break;
|
|
|
|
case 'forum_order':
|
|
//
|
|
// Change order of forums in the DB
|
|
//
|
|
$move = intval($HTTP_GET_VARS['move']);
|
|
$forum_id = intval($HTTP_GET_VARS[POST_FORUM_URL]);
|
|
|
|
$forum_info = get_info('forum', $forum_id);
|
|
|
|
$cat_id = $forum_info['cat_id'];
|
|
|
|
$sql = "UPDATE " . FORUMS_TABLE . "
|
|
SET forum_order = forum_order + $move
|
|
WHERE forum_id = $forum_id";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't change category order", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
renumber_order('forum', $forum_info['cat_id']);
|
|
$show_index = TRUE;
|
|
|
|
break;
|
|
|
|
case 'cat_order':
|
|
//
|
|
// Change order of categories in the DB
|
|
//
|
|
$move = intval($HTTP_GET_VARS['move']);
|
|
$cat_id = intval($HTTP_GET_VARS[POST_CAT_URL]);
|
|
|
|
$sql = "UPDATE " . CATEGORIES_TABLE . "
|
|
SET cat_order = cat_order + $move
|
|
WHERE cat_id = $cat_id";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't change category order", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
renumber_order('category');
|
|
$show_index = TRUE;
|
|
|
|
break;
|
|
|
|
case 'forum_sync':
|
|
sync('forum', intval($HTTP_GET_VARS[POST_FORUM_URL]));
|
|
$show_index = TRUE;
|
|
|
|
break;
|
|
|
|
default:
|
|
message_die(GENERAL_MESSAGE, $lang['No_mode']);
|
|
break;
|
|
}
|
|
|
|
if ($show_index != TRUE)
|
|
{
|
|
include('page_footer_admin.'.$phpEx);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
page_header($lang['Manage']);
|
|
|
|
|
|
?>
|
|
|
|
<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>
|
|
|
|
<form method="post" action=""><table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
|
<tr>
|
|
<th colspan="2">Forum Name</th>
|
|
<th> </th>
|
|
<th> </th>
|
|
<th> </th>
|
|
</tr>
|
|
<tr>
|
|
<td class="row1" width="20"><img src="images/forum.gif" /></td>
|
|
<td class="row2" width="100%"> </td>
|
|
<td class="row1"> </td>
|
|
<td class="row2"> </td>
|
|
<td class="row1" width="20"><img src="images/delete.gif" width="19" height="18" alt="" title="" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="row2" width="20"><img src="images/forum_locked.gif" /></td>
|
|
<td class="row1"></td>
|
|
<td class="row2"> </td>
|
|
<td class="row1"> </td>
|
|
<td class="row2" width="20" align="center"><img src="images/delete.gif" width="19" height="18" alt="" title="" /></td>
|
|
</tr>
|
|
</table></form>
|
|
|
|
<?php
|
|
|
|
|
|
//
|
|
// Start page proper
|
|
//
|
|
$template->set_filenames(array(
|
|
"body" => "admin/forum_admin_body.tpl")
|
|
);
|
|
|
|
$template->assign_vars(array(
|
|
'S_FORUM_ACTION' => "admin_forums.$phpEx$SID",
|
|
'L_FORUM_TITLE' => $lang['Forum_admin'],
|
|
'L_FORUM_EXPLAIN' => $lang['Forum_admin_explain'],
|
|
'L_CREATE_FORUM' => $lang['Create_forum'],
|
|
'L_CREATE_CATEGORY' => $lang['Create_category'],
|
|
'L_EDIT' => $lang['Edit'],
|
|
'L_DELETE' => $lang['Delete'],
|
|
'L_MOVE_UP' => $lang['Move_up'],
|
|
'L_MOVE_DOWN' => $lang['Move_down'],
|
|
'L_RESYNC' => $lang['Resync'])
|
|
);
|
|
|
|
$sql = "SELECT cat_id, cat_title, cat_order
|
|
FROM " . CATEGORIES_TABLE . "
|
|
ORDER BY cat_order";
|
|
$q_categories = $db->sql_query($sql);
|
|
|
|
if ( $category_rows = $db->sql_fetchrowset($q_categories) )
|
|
{
|
|
|
|
$sql = "SELECT *
|
|
FROM " . FORUMS_TABLE . "
|
|
ORDER BY cat_id, forum_order";
|
|
$q_forums = $db->sql_query($sql);
|
|
|
|
if( $total_forums = $db->sql_numrows($q_forums) )
|
|
{
|
|
$forum_rows = $db->sql_fetchrowset($q_forums);
|
|
}
|
|
|
|
//
|
|
// Okay, let's build the index
|
|
//
|
|
$gen_cat = array();
|
|
|
|
for($i = 0; $i < $total_categories; $i++)
|
|
{
|
|
$cat_id = $category_rows[$i]['cat_id'];
|
|
|
|
$template->assign_block_vars("catrow", array(
|
|
'S_ADD_FORUM_SUBMIT' => "addforum[$cat_id]",
|
|
'S_ADD_FORUM_NAME' => "forumname[$cat_id]",
|
|
|
|
'CAT_ID' => $cat_id,
|
|
'CAT_DESC' => $category_rows[$i]['cat_title'],
|
|
|
|
'U_CAT_EDIT' => "admin_forums.$phpEx$SID&mode=editcat&c=$cat_id",
|
|
'U_CAT_DELETE' => "admin_forums.$phpEx$SID&mode=deletecat&c=$cat_id",
|
|
'U_CAT_MOVE_UP' => "admin_forums.$phpEx$SID&mode=cat_order&move=-15&c=$cat_id",
|
|
'U_CAT_MOVE_DOWN' => "admin_forums.$phpEx$SID&mode=cat_order&move=15&c=$cat_id",
|
|
'U_VIEWCAT' => $phpbb_root_path."index.$phpEx$SID&c=$cat_id")
|
|
);
|
|
|
|
for($j = 0; $j < $total_forums; $j++)
|
|
{
|
|
$forum_id = $forum_rows[$j]['forum_id'];
|
|
|
|
if ( $forum_rows[$j]['cat_id'] == $cat_id )
|
|
{
|
|
|
|
$template->assign_block_vars("catrow.forumrow", array(
|
|
'FORUM_NAME' => $forum_rows[$j]['forum_name'],
|
|
'FORUM_DESC' => $forum_rows[$j]['forum_desc'],
|
|
'ROW_COLOR' => $row_color,
|
|
'NUM_TOPICS' => $forum_rows[$j]['forum_topics'],
|
|
'NUM_POSTS' => $forum_rows[$j]['forum_posts'],
|
|
|
|
'U_VIEWFORUM' => $phpbb_root_path."viewforum.$phpEx$SID&f=$forum_id",
|
|
'U_FORUM_EDIT' => "admin_forums.$$SID&mode=editforum&f=$forum_id",
|
|
'U_FORUM_DELETE' => "admin_forums.$phpEx$SID&mode=deleteforum&f=$forum_id",
|
|
'U_FORUM_MOVE_UP' => "admin_forums.$phpEx$SID&mode=forum_order&move=-15&f=$forum_id",
|
|
'U_FORUM_MOVE_DOWN' => "admin_forums.$phpEx$SID&mode=forum_order&move=15&f=$forum_id",
|
|
'U_FORUM_RESYNC' => "admin_forums.$phpEx$SID&mode=forum_sync&f=$forum_id")
|
|
);
|
|
|
|
}// if ... forumid == catid
|
|
|
|
} // for ... forums
|
|
|
|
} // for ... categories
|
|
|
|
}// if ... total_categories
|
|
|
|
page_footer();
|
|
|
|
//
|
|
// END
|
|
//
|
|
|
|
// ------------------
|
|
// Begin function block
|
|
//
|
|
function get_info($mode, $id)
|
|
{
|
|
global $db;
|
|
|
|
switch($mode)
|
|
{
|
|
case 'category':
|
|
$table = CATEGORIES_TABLE;
|
|
$idfield = 'cat_id';
|
|
$namefield = 'cat_title';
|
|
break;
|
|
|
|
case 'forum':
|
|
$table = FORUMS_TABLE;
|
|
$idfield = 'forum_id';
|
|
$namefield = 'forum_name';
|
|
break;
|
|
|
|
default:
|
|
message_die(GENERAL_ERROR, "Wrong mode for generating select list", "", __LINE__, __FILE__);
|
|
break;
|
|
}
|
|
$sql = "SELECT count(*) as total
|
|
FROM $table";
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get Forum/Category information", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
$count = $db->sql_fetchrow($result);
|
|
$count = $count['total'];
|
|
|
|
$sql = "SELECT *
|
|
FROM $table
|
|
WHERE $idfield = $id";
|
|
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get Forum/Category information", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
if( $db->sql_numrows($result) != 1 )
|
|
{
|
|
message_die(GENERAL_ERROR, "Forum/Category doesn't exist or multiple forums/categories with ID $id", "", __LINE__, __FILE__);
|
|
}
|
|
|
|
$return = $db->sql_fetchrow($result);
|
|
$return['number'] = $count;
|
|
return $return;
|
|
}
|
|
|
|
function get_list($mode, $id, $select)
|
|
{
|
|
global $db;
|
|
|
|
switch($mode)
|
|
{
|
|
case 'category':
|
|
$table = CATEGORIES_TABLE;
|
|
$idfield = 'cat_id';
|
|
$namefield = 'cat_title';
|
|
break;
|
|
|
|
case 'forum':
|
|
$table = FORUMS_TABLE;
|
|
$idfield = 'forum_id';
|
|
$namefield = 'forum_name';
|
|
break;
|
|
|
|
default:
|
|
message_die(GENERAL_ERROR, "Wrong mode for generating select list", "", __LINE__, __FILE__);
|
|
break;
|
|
}
|
|
|
|
$sql = "SELECT *
|
|
FROM $table";
|
|
if( $select == 0 )
|
|
{
|
|
$sql .= " WHERE $idfield <> $id";
|
|
}
|
|
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get list of Categories/Forums", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
$cat_list = "";
|
|
|
|
while( $row = $db->sql_fetchrow($result) )
|
|
{
|
|
$s = "";
|
|
if ($row[$idfield] == $id)
|
|
{
|
|
$s = " selected=\"selected\"";
|
|
}
|
|
$catlist .= "<option value=\"$row[$idfield]\"$s>" . $row[$namefield] . "</option>\n";
|
|
}
|
|
|
|
return($catlist);
|
|
}
|
|
|
|
function renumber_order($mode, $cat = 0)
|
|
{
|
|
global $db;
|
|
|
|
switch($mode)
|
|
{
|
|
case 'category':
|
|
$table = CATEGORIES_TABLE;
|
|
$idfield = 'cat_id';
|
|
$orderfield = 'cat_order';
|
|
$cat = 0;
|
|
break;
|
|
|
|
case 'forum':
|
|
$table = FORUMS_TABLE;
|
|
$idfield = 'forum_id';
|
|
$orderfield = 'forum_order';
|
|
$catfield = 'cat_id';
|
|
break;
|
|
|
|
default:
|
|
message_die(GENERAL_ERROR, "Wrong mode for generating select list", "", __LINE__, __FILE__);
|
|
break;
|
|
}
|
|
|
|
$sql = "SELECT * FROM $table";
|
|
if( $cat != 0)
|
|
{
|
|
$sql .= " WHERE $catfield = $cat";
|
|
}
|
|
$sql .= " ORDER BY $orderfield ASC";
|
|
|
|
|
|
if( !$result = $db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't get list of Categories", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
|
|
$i = 10;
|
|
$inc = 10;
|
|
|
|
while( $row = $db->sql_fetchrow($result) )
|
|
{
|
|
$sql = "UPDATE $table
|
|
SET $orderfield = $i
|
|
WHERE $idfield = " . $row[$idfield];
|
|
if( !$db->sql_query($sql) )
|
|
{
|
|
message_die(GENERAL_ERROR, "Couldn't update order fields", "", __LINE__, __FILE__, $sql);
|
|
}
|
|
$i += 10;
|
|
}
|
|
|
|
}
|
|
//
|
|
// End function block
|
|
// ------------------
|
|
|
|
?>
|