<?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($setmodules==1)
{
        $file = basename(__FILE__);
        $module['Forums']['Manage'] = $file;
        return;
}

// ------------------
// 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 *
		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);
}

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
// ------------------

//
// Include required files, get $phpEx and check permissions
//
require('pagestart.inc');

if (isset($HTTP_POST_VARS['mode']))
{
	$mode = $HTTP_POST_VARS['mode'];
}
elseif (isset($HTTP_GET_VARS['mode']))
{
	$mode = $HTTP_GET_VARS['mode'];
}
else
{
	unset($mode);
}

if(isset($mode))  // Are we supposed to do something?
{
	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?
				$newmode = 'modforum';
				$buttonvalue = 'Change';

				$forum_id = $HTTP_GET_VARS['forum_id'];

				$row = get_info('forum', $forum_id);
				$forumname = $row['forum_name'];
				$cat_id = $row['cat_id'];
				$forumdesc = $row['forum_desc'];
				$forumstatus = $row['forum_status'];
				//
				// start forum prune stuff.
				//
				if( $row['prune_enable'] == 1 )
				{
					$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
			{
				$newmode = 'createforum';
				$buttonvalue = 'Create';

				$forumname = stripslashes($HTTP_POST_VARS['forumname']);
				$cat_id = $HTTP_POST_VARS['cat_id'];
				$forumdesc = '';
				$forumstatus = FORUM_UNLOCKED;
				$forum_id = '';
			}

			$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")
			);
			$template->assign_vars(array(
				'FORUMNAME' => $forumname,
				'DESCRIPTION' => $forumdesc,
				'S_FORUM_ACTION' => $PHP_SELF,
				'S_CATLIST' => $catlist,
				'S_STATUSLIST' => $statuslist,
				'S_FORUMID' => $forum_id,
				'S_NEWMODE' => $newmode,
				'S_PRUNE_EN' => $prune_enabled,
				'S_PRUNE_DAYS' => $pr_row['prune_days'],
				'S_PRUNE_FREQ' => $pr_row['prune_freq'],
				'L_ENABLED' => $lang['Enabled'],
				'L_PRUNE_DAYS' => $lang['prune_days'],
				'L_PRUNE_FREQ' => $lang['prune_freq'],
				'L_DAYS' => $lang['days'],
				'BUTTONVALUE' => $buttonvalue)
			);
			$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 = " . $HTTP_POST_VARS['cat_id'];
			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 + 1;

			// There is no problem having duplicate forum names so we won't check for it.
			$sql = "INSERT INTO " . FORUMS_TABLE . " (forum_name, cat_id, forum_desc, forum_order, forum_status)
				VALUES ('" . $HTTP_POST_VARS['forumname'] . "', " . $HTTP_POST_VARS['cat_id'] . ", '" . $HTTP_POST_VARS['forumdesc'] . "', $next_order, " . $HTTP_POST_VARS['forumstatus'] . ")";
			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'] == TRUE )
			{
				$new_forum_id = $db->sql_nextid();
				if($HTTP_POST_VARS['prune_days'] == "" || $HTTP_POST_VARS['prune_freq'] == "")
				{
					message_die(GENERAL_ERROR, $lang['Set_prune_data'], $lang['Error']);
				}

				$sql = "INSERT INTO " . PRUNE_TABLE . " (forum_id, prune_days, prune_freq)
					VALUES($new_forum_id, " . $HTTP_POST_VARS['prune_days'] . ", " . $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);
				}
			}

			$show_index = TRUE;
			break;

		case 'modforum':
			// Modify a forum in the DB
			if( $HTTP_POST_VARS['prune_enable'] != 1)
			{
				$HTTP_POST_VARS['prune_enable'] = 0;
			}
			$sql = "UPDATE " . FORUMS_TABLE . "
				SET forum_name = '" . $HTTP_POST_VARS['forumname'] . "', cat_id = " . $HTTP_POST_VARS['cat_id'] . ", forum_desc = '" . $HTTP_POST_VARS['forumdesc'] . "', forum_status = " . $HTTP_POST_VARS['forumstatus'] . ", prune_enable = " . $HTTP_POST_VARS['prune_enable'] . "
				WHERE forum_id = ".$HTTP_POST_VARS['forum_id'];
			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_ERROR, $lang['Set_prune_data'], $lang['Error']);
				}

				$sql = "SELECT *
					FROM " . PRUNE_TABLE . "
					WHERE forum_id = " . $HTTP_POST_VARS['forum_id'];
				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 = " . $HTTP_POST_VARS['prune_days'] . ",	prune_freq = " . $HTTP_POST_VARS['prune_freq'] . "
				 		WHERE forum_id = " . $HTTP_POST_VARS['forum_id'];
				}
				else
				{
					$sql = "INSERT INTO " . PRUNE_TABLE . " (forum_id, prune_days, prune_freq)
						VALUES(" . $HTTP_POST_VARS['forum_id'] . ", " . $HTTP_POST_VARS['prune_days'] . ", " . $HTTP_POST_VARS['prune_freq'] . ")";
				}

				if( !$result = $db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, "Couldn't Update Forum Prune Information","",__LINE__, __FILE__, $sql);
				}
			}
			$show_index = TRUE;
			break;
			
		case 'addcat':
			// Create a category in the DB
			if( trim($HTTP_POST_VARS['catname']) == '')
			{
				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 + 1;

			//
			// 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['catname'] . "', $next_order)";
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't insert row in categories table", "", __LINE__, __FILE__, $sql);
			}

			$show_index = TRUE;
			break;
			
		case 'editcat':
			// Show form to edit a category
			$newmode = 'modcat';
			$buttonvalue = 'Change';

			$cat_id = $HTTP_GET_VARS['cat_id'];
			$row = get_info('category', $cat_id);
			$cat_title = $row['cat_title'];

			$template->set_filenames(array(
				"body" => "admin/category_edit_body.tpl")
			);
			$template->assign_vars(array(
				'CAT_TITLE' => $cat_title,
				'S_CATID' => $cat_id,
				'S_NEWMODE' => $newmode,
				'BUTTONVALUE' => $buttonvalue)
			);
			$template->pparse("body");
			break;

		case 'modcat':
			// Modify a category in the DB
			$sql = "UPDATE " . CATEGORIES_TABLE . "
				SET cat_title = '" . $HTTP_POST_VARS['cat_title'] . "'
				WHERE cat_id = " . $HTTP_POST_VARS['cat_id'];
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't update forum information", "", __LINE__, __FILE__, $sql);
			}
			$show_index = TRUE;
			break;
			
		case 'deleteforum':
			// Show form to delete a forum
			$forum_id = $HTTP_GET_VARS['forum_id'];
			$to_ids = "<option value=\"-1\"$s>Delete all posts</option>\n";
			$to_ids .= get_list('forum', $forum_id, 0);
			$buttonvalue = "Move&Delete";
			$newmode = 'movedelforum';
			$foruminfo = get_info('forum', $forum_id);
			$name = $foruminfo['forum_name'];

			$template->set_filenames(array(
				"body" => "admin/forum_delete_body.tpl")
			);
			$template->assign_vars(array(
				'NAME' => $name,
				'S_FORUM_ACTION' => $PHP_SELF,
				'S_FROM_ID' => $forum_id,
				'S_TO_IDS' => $to_ids,
				'S_NEWMODE' => $newmode,
				'BUTTONVALUE' => $buttonvalue)
			);
			$template->pparse("body");
			break;

		case 'movedelforum':
			// Move or delete a forum in the DB
			$from_id = $HTTP_POST_VARS['from_id'];
			$to_id = $HTTP_POST_VARS['to_id'];
			$delete_old = $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);
			}

			$show_index = TRUE;
			break;
			
		case 'deletecat':
			// Show form to delete a category
			$cat_id = $HTTP_GET_VARS['cat_id'];
			$to_ids = get_list('category', $cat_id, 0);
			$buttonvalue = "Move&Delete";
			$newmode = 'movedelcat';
			$catinfo = get_info('category', $cat_id);
			$name = $catinfo['cat_title'];

			$template->set_filenames(array(
				"body" => "admin/forum_delete_body.tpl")
			);
			$template->assign_vars(array(
				'NAME' => $name,
				'S_FORUM_ACTION' => $PHP_SELF,
				'S_FROM_ID' => $cat_id,
				'S_TO_IDS' => $to_ids,
				'S_NEWMODE' => $newmode,
				'BUTTONVALUE' => $buttonvalue)
			);
			$template->pparse("body");
			break;

		case 'movedelcat':
			// Move or delete a category in the DB
			$from_id = $HTTP_POST_VARS['from_id'];
			$to_id = $HTTP_POST_VARS['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);
			}

			$show_index = TRUE;
			break;

		case 'forum_order':
			// Change order of forums in the DB
			$move = $HTTP_GET_VARS['move'];
			$forum_id = $HTTP_GET_VARS['forum_id'];
			$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 = $HTTP_GET_VARS['move'];
			$cat_id = $HTTP_GET_VARS['cat_id'];

			$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', $HTTP_GET_VARS['forum_id']);
			$show_index = TRUE;
			break;

		default:
			message_die(GENERAL_ERROR, "Oops! Wrong mode..");
			break;
	}
	if ($show_index != TRUE)
	{
		include('page_footer_admin.'.$phpEx);
		exit;
	}
}

//
// Start page proper
//
$template->set_filenames(array(
	"body" => "admin/forums_body.tpl")
);

$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) )
	{
		message_die(GENERAL_MESSAGE, $lang['No_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'];

		for($j = 0; $j < $total_forums; $j++)
		{
			$forum_id = $forum_rows[$j]['forum_id'];

			if(!$gen_cat[$cat_id])
			{
				$template->assign_block_vars("catrow", array(
					"CAT_ID" => $cat_id,
					"CAT_DESC" => stripslashes($category_rows[$i]['cat_title']),
					"CAT_EDIT" => "<a href='".append_sid("$PHP_SELF?mode=editcat&cat_id=$cat_id")."'>Edit</a>",
					"CAT_DELETE" => "<a href='".append_sid("$PHP_SELF?mode=deletecat&cat_id=$cat_id")."'>Delete</a>",
					"CAT_UP" => "<a href='".append_sid("$PHP_SELF?mode=cat_order&move=-15&cat_id=$cat_id")."'>Move up</a>",
					"CAT_DOWN" => "<a href='".append_sid("$PHP_SELF?mode=cat_order&move=15&cat_id=$cat_id")."'>Move down</a>",
					"U_VIEWCAT" => append_sid($phpbb_root_path."index.$phpEx?viewcat=$cat_id"),
					"U_ADDFORUM" => append_sid("$PHP_SELF?mode=addforum&cat_id=$cat_id"),
					"ADDFORUM" => "Add Forum")
				);
				$gen_cat[$cat_id] = 1;
			}
			if( $forum_rows[$j]['cat_id'] != $cat_id)
			{
				continue;
			}

			//
			// This should end up in the template using IF...ELSE...ENDIF
			//
			$row_color == "#DDDDDD" ?	$row_color = "#CCCCCC" : $row_color = "#DDDDDD";

			$template->assign_block_vars("catrow.forumrow",	array(
				"FORUM_NAME" => stripslashes($forum_rows[$j]['forum_name']),
				"FORUM_DESC" => stripslashes($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&" . $forum_rows[$j]['forum_posts']),
				"FORUM_EDIT" => "<a href='".append_sid("$PHP_SELF?mode=editforum&forum_id=$forum_id")."'>Edit</a>",
				"FORUM_DELETE" => "<a href='".append_sid("$PHP_SELF?mode=deleteforum&forum_id=$forum_id")."'>Delete</a>",
				"FORUM_UP" => "<a href='".append_sid("$PHP_SELF?mode=forum_order&move=-15&forum_id=$forum_id")."'>Move up</a>",
				"FORUM_DOWN" => "<a href='".append_sid("$PHP_SELF?mode=forum_order&move=15&forum_id=$forum_id")."'>Move down</a>",
				"FORUM_SYNC" => "<a href='".append_sid("$PHP_SELF?mode=forum_sync&forum_id=$forum_id")."'>Sync</a>")
			);
		} // for ... forums
		$template->assign_block_vars("catrow.forumrow", array(
			"S_ADDFORUM" => '<FORM METHOD="POST" ACTION="'.append_sid($PHP_SELF).'">
					<INPUT TYPE="text" NAME="forumname">
					<INPUT TYPE="hidden" NAME="cat_id" VALUE="'.$cat_id.'">
					<INPUT TYPE="hidden" NAME="mode" VALUE="addforum">
					<INPUT TYPE="submit" NAME="submit" VALUE="Create new Forum">',
			"S_ADDFORUM_ENDFORM" => "</FORM>")
		);
	} // for ... categories
	// Extra 'category' to create new categories at the end of the list.
	$template->assign_block_vars("catrow", array(
		"S_ADDCAT" => '<FORM METHOD="POST" ACTION="'.append_sid($PHP_SELF).'">
				<INPUT TYPE="text" NAME="catname">
				<INPUT TYPE="hidden" NAME="mode" VALUE="addcat">
				<INPUT TYPE="submit" NAME="submit" VALUE="Create new category">',
		"S_ADDCAT_ENDFORM" => "</FORM>")
	);

}// if ... total_categories
else
{
	message_die(GENERAL_MESSAGE, "There are no Categories or Forums on this board", "", __LINE__, __FILE__, $sql);
}

//
// Generate the page
//
$template->pparse("body");

//
// Page Footer
//
include('page_footer_admin.'.$phpEx);
?>