Вход Регистрация
Файл: admin/admin_forums.php
Строк: 591
<?php
/***************************************************************************
 *                             admin_forums.php
 *                            -------------------
 *      Разработка: phpBB Group.
 *      Оптимизация под WAP: Гутник Игорь ( чел ).
 *          2009 год
 ***************************************************************************/

define('IN_PHPBB', 1);

if( !empty(
$setmodules) )
{
    
$file = basename(__FILE__);
    
$module['Forums']['Manage'] = $file;
    return;
}

$phpbb_root_path = "./../";
require(
$phpbb_root_path . 'extension.inc');
require(
'./pagestart.' . $phpEx);
include(
$phpbb_root_path . 'includes/functions_admin.'.$phpEx);

$forum_auth_ary = array(
    
"auth_view" => AUTH_ALL, 
    
"auth_read" => AUTH_ALL, 
    
"auth_post" => AUTH_REG, 
    
"auth_reply" => AUTH_REG, 
    
"auth_edit" => AUTH_REG, 
    
"auth_delete" => AUTH_REG, 
    
"auth_sticky" => AUTH_MOD, 
    
"auth_announce" => AUTH_MOD, 
    
"auth_vote" => AUTH_REG, 
    
"auth_pollcreate" => AUTH_REG
);
$forum_auth_ary['auth_attachments'] = AUTH_REG;
$forum_auth_ary['auth_download'] = AUTH_REG;

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'];
    
$mode = htmlspecialchars($mode);
}
else
{
    
$mode = "";
}

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;
    }

}

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']);
        
$cat_id = intval($cat_id);
        
$forumname = stripslashes($HTTP_POST_VARS['forumname'][$cat_id]);
    }
}

if( !empty(
$mode) ) 
{
    switch(
$mode)
    {
        case 
'addforum':
        case 
'editforum':

            if (
$mode == 'editforum')
            {

                
$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'];
                
$forum_money = $row['forum_money'];
                
$forumdesc = $row['forum_desc'];
                
$forumstatus = $row['forum_status'];

                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 = '';
                
$forum_money = 0;
                
$forumstatus = FORUM_UNLOCKED;
                
$forum_id = ''; 
                
$prune_enabled = '';
            }

            
$catlist = get_list('category', $cat_id, TRUE);

            
$forumstatus == ( FORUM_LOCKED ) ? $forumlocked = "selected="selected"" : $forumunlocked = "selected="selected"";

            
$lang['Status_unlocked'] = isset($lang['Status_unlocked']) ? $lang['Status_unlocked'] : 'Unlocked';
            
$lang['Status_locked'] = isset($lang['Status_locked']) ? $lang['Status_locked'] : 'Locked';
            
            
$statuslist = "<option value="" . FORUM_UNLOCKED . "" $forumunlocked>" . $lang['Status_unlocked'] . "</option>n";
            
$statuslist .= "<option value="" . FORUM_LOCKED . "" $forumlocked>" . $lang['Status_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,
                
'S_FORUM_POSTCOUNT' => ( isset($row) && isset($row['forum_postcount']) && ($row['forum_postcount'] == 0) ) ? '' : 'checked="checked"',

                
'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'],
                
'L_POSTCOUNT' => $lang['Forum_postcount'],

                
'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,
                
'FORUM_MONEY' => $forum_money,
                
'DESCRIPTION' => $forumdesc)
            );
            
$template->pparse("body");
            break;

        case 
'createforum':

            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;

            
$field_sql = "";
            
$value_sql = "";
            while( list(
$field, $value) = each($forum_auth_ary) )
            {
                
$field_sql .= ", $field";
                
$value_sql .= ", $value";

            }

            
$sql = "INSERT INTO " . FORUMS_TABLE . " (forum_id, forum_name, cat_id, forum_desc, forum_order, forum_status, prune_enable, forum_money, forum_postcount" . $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']) . ",  " . intval($HTTP_POST_VARS['forum_money']) . ", " . intval($HTTP_POST_VARS['forum_postcount']) . $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':

            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']) . ", forum_money = " . intval($HTTP_POST_VARS['forum_money']) . ", forum_postcount = " . intval($HTTP_POST_VARS['forum_postcount']) . "
                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':

            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;

            
$sql = "INSERT INTO " . CATEGORIES_TABLE . " (cat_title, cat_order)
                VALUES ('" 
. str_replace("'", "''", $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':

            
$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':

            
$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':

            
$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':

            
$from_id = intval($HTTP_POST_VARS['from_id']);
            
$to_id = intval($HTTP_POST_VARS['to_id']);
            
$delete_old = intval($HTTP_POST_VARS['delete_old']);

            if(
$to_id == -1)
            {
                
$sql = "SELECT v.vote_id 
                    FROM " 
. VOTE_DESC_TABLE . " v, " . TOPICS_TABLE . " t 
                    WHERE t.forum_id = 
$from_id 
                        AND v.topic_id = t.topic_id"
;
                if (!(
$result = $db->sql_query($sql)))
                {
                    
message_die(GENERAL_ERROR, "Couldn't obtain list of vote ids", "", __LINE__, __FILE__, $sql);
                }

                if (
$row = $db->sql_fetchrow($result))
                {
                    
$vote_ids = '';
                    do
                    {
                        
$vote_ids .= (($vote_ids != '') ? ', ' : '') . $row['vote_id'];
                    }
                    while (
$row = $db->sql_fetchrow($result));

                    
$sql = "DELETE FROM " . VOTE_DESC_TABLE . " 
                        WHERE vote_id IN (
$vote_ids)";
                    
$db->sql_query($sql);

                    
$sql = "DELETE FROM " . VOTE_RESULTS_TABLE . " 
                        WHERE vote_id IN (
$vote_ids)";
                    
$db->sql_query($sql);

                    
$sql = "DELETE FROM " . VOTE_USERS_TABLE . " 
                        WHERE vote_id IN (
$vote_ids)";
                    
$db->sql_query($sql);
                }
                
$db->sql_freeresult($result);
                
                include(
$phpbb_root_path . "includes/prune.$phpEx");
                
prune($from_id, 0, true); 
            }
            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 = "SELECT ug.user_id 
                FROM " 
. AUTH_ACCESS_TABLE . " a, " . USER_GROUP_TABLE . " ug 
                WHERE a.forum_id <> 
$from_id 
                    AND a.auth_mod = 1
                    AND ug.group_id = a.group_id"
;
            if( !
$result = $db->sql_query($sql) )
            {
                
message_die(GENERAL_ERROR, "Couldn't obtain moderator list", "", __LINE__, __FILE__, $sql);
            }

            if (
$row = $db->sql_fetchrow($result))
            {
                
$user_ids = '';
                do
                {
                    
$user_ids .= (($user_ids != '') ? ', ' : '' ) . $row['user_id'];
                }
                while (
$row = $db->sql_fetchrow($result));

                
$sql = "SELECT ug.user_id 
                    FROM " 
. AUTH_ACCESS_TABLE . " a, " . USER_GROUP_TABLE . " ug 
                    WHERE a.forum_id = 
$from_id 
                        AND a.auth_mod = 1 
                        AND ug.group_id = a.group_id
                        AND ug.user_id NOT IN (
$user_ids)";
                if( !
$result2 = $db->sql_query($sql) )
                {
                    
message_die(GENERAL_ERROR, "Couldn't obtain moderator list", "", __LINE__, __FILE__, $sql);
                }
                    
                if (
$row = $db->sql_fetchrow($result2))
                {
                    
$user_ids = '';
                    do
                    {
                        
$user_ids .= (($user_ids != '') ? ', ' : '' ) . $row['user_id'];
                    }
                    while (
$row = $db->sql_fetchrow($result2));

                    
$sql = "UPDATE " . USERS_TABLE . " 
                        SET user_level = " 
. USER . " 
                        WHERE user_id IN (
$user_ids) 
                            AND user_level <> " 
. ADMIN;
                    
$db->sql_query($sql);
                }
                
$db->sql_freeresult($result);

            }
            
$db->sql_freeresult($result2);

            
$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':

            
$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':

            
$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':

            
$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':

            
$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;
    }
}

$template->set_filenames(array(
    
"body" => "admin/forum_admin_body.tpl")
);

$template->assign_vars(array(
    
'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"),
    
'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"
;
if( !
$q_categories = $db->sql_query($sql) )
{
    
message_die(GENERAL_ERROR, "Could not query categories list", "", __LINE__, __FILE__, $sql);
}

if( 
$total_categories = $db->sql_numrows($q_categories) )
{
    
$category_rows = $db->sql_fetchrowset($q_categories);

    
$sql = "SELECT *
        FROM " 
. FORUMS_TABLE . "
        ORDER BY cat_id, forum_order"
;
    if(!
$q_forums = $db->sql_query($sql))
    {
        
message_die(GENERAL_ERROR, "Could not query forums information", "", __LINE__, __FILE__, $sql);
    }

    if( 
$total_forums = $db->sql_numrows($q_forums) )
    {
        
$forum_rows = $db->sql_fetchrowset($q_forums);
    }

    
$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' => append_sid("admin_forums.$phpEx?mode=editcat&amp;" . POST_CAT_URL . "=$cat_id"),
            
'U_CAT_DELETE' => append_sid("admin_forums.$phpEx?mode=deletecat&amp;" . POST_CAT_URL . "=$cat_id"),
            
'U_CAT_MOVE_UP' => append_sid("admin_forums.$phpEx?mode=cat_order&amp;move=-15&amp;" . POST_CAT_URL . "=$cat_id"),
            
'U_CAT_MOVE_DOWN' => append_sid("admin_forums.$phpEx?mode=cat_order&amp;move=15&amp;" . POST_CAT_URL . "=$cat_id"),
            
'U_VIEWCAT' => append_sid($phpbb_root_path."index.$phpEx?" . POST_CAT_URL . "=$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' => append_sid($phpbb_root_path."viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"),
                    
'U_FORUM_EDIT' => append_sid("admin_forums.$phpEx?mode=editforum&amp;" . POST_FORUM_URL . "=$forum_id"),
                    
'U_FORUM_DELETE' => append_sid("admin_forums.$phpEx?mode=deleteforum&amp;" . POST_FORUM_URL . "=$forum_id"),
                    
'U_FORUM_MOVE_UP' => append_sid("admin_forums.$phpEx?mode=forum_order&amp;move=-15&amp;" . POST_FORUM_URL . "=$forum_id"),
                    
'U_FORUM_MOVE_DOWN' => append_sid("admin_forums.$phpEx?mode=forum_order&amp;move=15&amp;" . POST_FORUM_URL . "=$forum_id"),
                    
'U_FORUM_RESYNC' => append_sid("admin_forums.$phpEx?mode=forum_sync&amp;" . POST_FORUM_URL . "=$forum_id"))
                );

            }
            
        } 

    } 

}

$template->pparse("body");

include(
'./page_footer_admin.'.$phpEx);

?>
Онлайн: 2
Реклама