Sida 1 av 1

Problem med uppdateringen till .20

Postat: 2006-05-03 15:32
av Joakim
I filen admin_ranks har jag svårt att hitta en sak som ska ändras i uppdateringen. Ändringen ska vara i texten som börjar ungefär så här:

Kod: Markera allt

else 
      { 
         message_die(GENERAL_MESSAGE, $lang['Must_select_rank']); 
      } 
   } 
   else 
   { 
      // 
      // They didn't feel like giving us any information. Oh, too bad, we'll just display the 
      // list then... 
men min kod ser ut så här:

Kod: Markera allt

} else { 

         message_die(GENERAL_MESSAGE, $lang['Rank_cfg_unknown'] . "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>")); 
      } 

      $message = ( $mode == "delete_ranks_apply" ) ? $lang['Rank_cfg_deleted'] : $lang['Rankset_cfg_deleted']; 
      $message .= "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>"); 
      message_die(GENERAL_MESSAGE, $message); 
   } 
   else 
   { 
      // 
      // They didn't feel like giving us any information. Oh, too bad, we'll just display the 
      // list then... 
      // 
Vad ska jag göra ? Vågar inte ladda upp de andra filerna förrän denna är klar...

Finns det ingen update_to_latest.php eller liknande till denna förresten ? Eller uppdateringen sköter sig själv ?!

Postat: 2006-05-03 18:04
av PazZze
hm, du har moddar va? typ ngn rank mod?

update_to_latest.php hittar du i någon download från phpbb.com så det är bara att ladda hem och testa :)

Postat: 2006-05-03 18:20
av Joakim
Jag har extended ranks system och custom title installerat. Hur gör jag ? Ska jag skippa denna filen bara eller !??

http://www.phpbbhacks.com/download/3163

http://www.phpbbhacks.com/download/1178

Postat: 2006-05-03 21:54
av Holger
Ja du Joakim,

det där blir svårt att lösa!
Lägg upp HELA din admin_ranks.php här.

Du får nog modda om filen efter uppdateringen till 2.0.20

Filen update_to_latest.php finns med i alla paket som du kan ladda hem från phpbb.com

Postat: 2006-05-03 21:57
av Joakim
Usch, det låter inte bra Holger. Här är filen iaf:

Kod: Markera allt

<?php
/***************************************************************************
 *                              admin_ranks.php
 *                            -------------------
 *   begin                : Thursday, Jul 12, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: admin_ranks.php,v 1.13.2.3 2002/11/28 00:11:39 psotfx Exp $
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   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) )
{
	$file = basename(__FILE__);
	$module['Users']['Ranks'] = $file;
	return;
}

define('IN_PHPBB', 1);
//
// Let's set the root dir for phpBB
//
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);

if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
	$mode = (isset($HTTP_GET_VARS['mode'])) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
	$mode = htmlspecialchars($mode);
}
else
{
	//
	// These could be entered via a form button
	//
	if( isset($HTTP_POST_VARS['rank_add']) )
	{
		$mode = "rank_add";
	}
	else if( isset($HTTP_POST_VARS['rank_save']) )
	{
		$mode = "rank_save";
	}
	else if( isset($HTTP_POST_VARS['rankset_add']) )
	{
		$mode = "rankset_add";
	}
	else if( isset($HTTP_POST_VARS['rankset_save']) )
	{
		$mode = "rankset_save";
	}
	else if( isset($HTTP_POST_VARS['update_ranks_apply']) )
	{
		$mode = "update_ranks_apply";
	}
	else if( isset($HTTP_POST_VARS['update_rankset_apply']) )
	{
		$mode = "update_rankset_apply";
	}
	else
	{
		$mode = "";
	}
}

$groups = array();
$sql = "SELECT group_id, group_name
	FROM " . GROUPS_TABLE . "
	WHERE group_single_user <> " . TRUE;
if( !$result = $db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, "Couldn't obtain group data", "", __LINE__, __FILE__, $sql);
}
while ( $groupsrow = $db->sql_fetchrow($result) )
{
	$groups[$groupsrow['group_id']] = $groupsrow['group_name'];
}

$templates = array();
$sql = "SELECT themes_id, template_name
	FROM " . THEMES_TABLE;
if( !$result = $db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, "Couldn't obtain template data", "", __LINE__, __FILE__, $sql);
}
while ( $templatesrow = $db->sql_fetchrow($result) )
{
	$templates[$templatesrow['themes_id']] = $templatesrow['template_name'];
}

// Restrict mode input to valid options 
$mode = ( in_array($mode, array('add', 'edit', 'save', 'delete')) ) ? $mode : '';
if( $mode != "" )
{
	if( $mode == "rank_edit" || $mode == "rank_add" )
	{
		//
		// They want to add a new rank, show the form.
		//
		$rank_id = ( isset($HTTP_GET_VARS['id']) ) ? intval($HTTP_GET_VARS['id']) : 0;

		$s_hidden_fields = "";

		if( $mode == "rank_edit" )
		{
			if( empty($rank_id) )
			{
				message_die(GENERAL_MESSAGE, $lang['Must_select_rank']);
			}

			$sql = "SELECT * FROM " . RANKS_TABLE . "
				WHERE rank_id = $rank_id";
			if(!$result = $db->sql_query($sql))
			{
				message_die(GENERAL_ERROR, "Couldn't obtain rank data", "", __LINE__, __FILE__, $sql);
			}

			$rank_info = $db->sql_fetchrow($result);
			$s_hidden_fields .= '<input type="hidden" name="id" value="' . $rank_id . '" />';

		} else {

			$rank_info['rank_special'] = 0;
			$rank_info['rankset_id'] = RANKSET_DEFAULT;
		}

		$s_hidden_fields .= '<input type="hidden" name="mode" value="rank_save" />';

		$rank_is_special = ( $rank_info['rank_special'] ) ? "checked=\"checked\"" : "";
		$rank_is_not_special = ( !$rank_info['rank_special'] ) ? "checked=\"checked\"" : "";

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

		$sql = "SELECT rankset_id, rankset_title
			FROM " . RANKS_SETS_TABLE . "
			ORDER BY rankset_hidden ASC";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, "Couldn't obtain prefix data", "", __LINE__, __FILE__, $sql);
		}
		$rankset_select = '<select name="rankset_id" style="width:95%;">';
		while ( $row = $db->sql_fetchrow($result) )
		{
			$selected = ( $rank_info['rankset_id'] == $row['rankset_id'] ) ? ' selected="selected"' : '';
			$rankset_select .= '<option value="' . $row['rankset_id'] . '"'. $selected . '>' . stripslashes($row['rankset_title']) . '</option>';
		}
		$rankset_select .= '</select>';

		$template->assign_vars(array(
			"RANK" => $rank_info['rank_title'],
			"SPECIAL_RANK" => $rank_is_special,
			"NOT_SPECIAL_RANK" => $rank_is_not_special,
			"MINIMUM" => ( $rank_is_special ) ? "" : $rank_info['rank_min'],
			"IMAGE" => ( $rank_info['rank_image'] != "" ) ? $rank_info['rank_image'] : "",
			"IMAGE_DISPLAY" => ( $rank_info['rank_image'] != "" ) ? '<img src="../' . $rank_info['rank_image'] . '" />' : "",
			"RANKSET_SELECT" => $rankset_select,

			"L_RANKS_TITLE" => $lang['Ranks_title'],
			"L_RANKS_TEXT" => $lang['Ranks_explain'],
			"L_RANK_TITLE" => $lang['Rank_title'],
			"L_RANK_SPECIAL" => $lang['Rank_special'],
			"L_RANK_MINIMUM" => $lang['Rank_minimum'],
			"L_RANK_IMAGE" => $lang['Rank_image'],
			"L_RANK_IMAGE_EXPLAIN" => $lang['Rank_image_explain'],
			"L_RANKSET" => $lang['Rankset'],
			"L_SUBMIT" => $lang['Submit'],
			"L_RESET" => $lang['Reset'],
			"L_YES" => $lang['Yes'],
			"L_NO" => $lang['No'],

			"S_RANK_ACTION" => append_sid("admin_ranks.$phpEx"),
			"S_HIDDEN_FIELDS" => $s_hidden_fields)
		);

	}
	else if( $mode == "rank_save" )
	{
		//
		// Ok, they sent us our info, let's update it.
		//

		$rank_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : 0;
		$rank_title = ( isset($HTTP_POST_VARS['title']) ) ? trim($HTTP_POST_VARS['title']) : "";
		$special_rank = ( $HTTP_POST_VARS['special_rank'] == 1 ) ? TRUE : 0;
		$min_posts = ( isset($HTTP_POST_VARS['min_posts']) ) ? intval($HTTP_POST_VARS['min_posts']) : -1;
		$rank_image = ( (isset($HTTP_POST_VARS['rank_image'])) ) ? trim($HTTP_POST_VARS['rank_image']) : "";
		$rankset_id = ( isset($HTTP_POST_VARS['rankset_id']) ) ? intval($HTTP_POST_VARS['rankset_id']) : RANKSET_DEFAULT;

		if( $rank_title == "" )
		{
			message_die(GENERAL_MESSAGE, $lang['Must_select_rank']);
		}

		if( $special_rank == 1 )
		{
			$max_posts = -1;
			$min_posts = -1;
		}

		//
		// The rank image has to be a jpg, gif or png
		//
		if($rank_image != "")
		{
			if ( !preg_match("/(\.gif|\.png|\.jpg)$/is", $rank_image))
			{
				$rank_image = "";
			}
		}

		if ($rank_id)
		{
			if (!$special_rank)
			{
				$sql = "UPDATE " . USERS_TABLE . "
					SET user_rank = 0
					WHERE user_rank = $rank_id";

				if( !$result = $db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, $lang['No_update_ranks'], "", __LINE__, __FILE__, $sql);
				}
			}
			$sql = "UPDATE " . RANKS_TABLE . "
				SET rank_title = '" . str_replace("\'", "''", $rank_title) . "', rank_special = $special_rank, rank_min = $min_posts, rank_image = '" . str_replace("\'", "''", $rank_image) . "', rankset_id = $rankset_id
				WHERE rank_id = $rank_id";

			$message = $lang['Rank_updated'];
		}
		else
		{
			$sql = "INSERT INTO " . RANKS_TABLE . " (rank_title, rank_special, rank_min, rank_image, rankset_id)
				VALUES ('" . str_replace("\'", "''", $rank_title) . "', $special_rank, $min_posts, '" . str_replace("\'", "''", $rank_image) . "', $rankset_id)";

			$message = $lang['Rank_added'];
		}

		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't update/insert into ranks table", "", __LINE__, __FILE__, $sql);
		}

		$message .= "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");

		message_die(GENERAL_MESSAGE, $message);

	}
	else if( $mode == "rank_delete" )
	{

		//
		// Ok, they want to delete their rank
		//

		if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) )
		{
			$rank_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : intval($HTTP_GET_VARS['id']);
		}
		else
		{
			$rank_id = 0;
		}

		$confirm = isset($HTTP_POST_VARS['confirm']); 
       
      if( $rank_id && $confirm )
		{
			$sql = "DELETE FROM " . RANKS_TABLE . "
				WHERE rank_id = $rank_id";
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't delete rank data", "", __LINE__, __FILE__, $sql);
			}

			$sql = "DELETE FROM " . RANKS_CONFIG_TABLE . "
				WHERE rank_id = $rank_id";
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't delete rank config data", "", __LINE__, __FILE__, $sql);
			}

			$sql = "UPDATE " . USERS_TABLE . "
				SET user_rank = 0
				WHERE user_rank = $rank_id";

			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, $lang['No_update_ranks'], "", __LINE__, __FILE__, $sql);
			}

			$message = $lang['Rank_removed'] . "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");

			message_die(GENERAL_MESSAGE, $message);

		}
		else
		{
			message_die(GENERAL_MESSAGE, $lang['Must_select_rank']);
		}

	}
	else if( $mode == "rankset_edit" || $mode == "rankset_add" )
	{

		//
		// They want to add a new rank set, show the form.
		//
		$rankset_id = ( isset($HTTP_GET_VARS['id']) ) ? intval($HTTP_GET_VARS['id']) : 0;

		$s_hidden_fields = "";

		if( $mode == "rankset_edit" )
		{
			if( empty($rankset_id) )
			{
				message_die(GENERAL_MESSAGE, $lang['No_assigned_rank_set']);
			}

			$sql = "SELECT * FROM " . RANKS_SETS_TABLE . "
				WHERE rankset_id = $rankset_id";
			if(!$result = $db->sql_query($sql))
			{
				message_die(GENERAL_ERROR, "Couldn't obtain rank set data", "", __LINE__, __FILE__, $sql);
			}

			$rankset_info = $db->sql_fetchrow($result);
			$s_hidden_fields .= '<input type="hidden" name="id" value="' . $rankset_id . '" />';

		}
		else
		{
			$rankset_info['rankset_hidden'] = 0;
		}

		$s_hidden_fields .= '<input type="hidden" name="mode" value="rankset_save" />';

		$rankset_is_hidden = ( $rankset_info['rankset_hidden'] ) ? "checked=\"checked\"" : "";
		$rankset_is_not_hidden = ( !$rankset_info['rankset_hidden'] ) ? "checked=\"checked\"" : "";

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

		$template->assign_vars(array(
			"RANKSET" => $rankset_info['rankset_title'],
			"DESC" => $rankset_info['rankset_desc'],
			"HIDDEN_RANKSET" => $rankset_is_hidden,
			"NOT_HIDDEN_RANKSET" => $rankset_is_not_hidden,

			"L_RANKSET_TITLE" => $lang['Rankset_title'],
			"L_RANKSET_TEXT" => $lang['Rankset_explain'],
			"L_RANKSET" => $lang['Rankset'],
			"L_RANKSET_DESC" => $lang['Rankset_desc'],
			"L_RANKSET_HIDDEN" => $lang['Rankset_hidden'],
			"L_RANKSET_HIDDEN_EXPLAIN" => $lang['Public_rank_sets_explain'],
			"L_SUBMIT" => $lang['Submit'],
			"L_RESET" => $lang['Reset'],
			"L_YES" => $lang['Yes'],
			"L_NO" => $lang['No'],

			"S_RANK_ACTION" => append_sid("admin_ranks.$phpEx"),
			"S_HIDDEN_FIELDS" => $s_hidden_fields)
		);

	}
	else if( $mode == "rankset_save" )
	{

		//
		// Ok, they sent us our info, let's update it.
		//

		$rankset_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : 0;
		$title = ( isset($HTTP_POST_VARS['title']) ) ? trim($HTTP_POST_VARS['title']) : "";
		$desc = ( isset($HTTP_POST_VARS['desc']) ) ? trim($HTTP_POST_VARS['desc']) : "";
		$hidden = ( $HTTP_POST_VARS['hidden'] == 1 ) ? TRUE : 0;

		if( $title == "" )
		{
			message_die(GENERAL_MESSAGE, $lang['Must_select_rank_set']);
		}

		if ($rankset_id)
		{
			$sql = "UPDATE " . RANKS_SETS_TABLE . "
				SET `rankset_title` = '" . str_replace("\'", "''", $title) . "', `rankset_desc` = '" . str_replace("\'", "''", $desc) . "', `rankset_hidden` = $hidden
				WHERE rankset_id = $rankset_id";

			$message = $lang['Rankset_updated'];
		}
		else
		{
			$sql = "INSERT INTO " . RANKS_SETS_TABLE . " (`rankset_title`, `rankset_desc`, `rankset_hidden`)
				VALUES ('" . str_replace("\'", "''", $title) . "', '" . str_replace("\'", "''", $desc) . "', $hidden)";

			$message = $lang['Rankset_added'];
		}

		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't update/insert into rank sets table", "", __LINE__, __FILE__, $sql);
		}

		$message .= "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");

		message_die(GENERAL_MESSAGE, $message);

	}
	else if( $mode == "rankset_delete" )
	{

		//
		// Ok, they want to delete their rank set
		//

		if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) )
		{
			$rankset_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : intval($HTTP_GET_VARS['id']);
		}
		else
		{
			$rankset_id = 0;
		}

		if ( $rankset_id == RANKSET_DEFAULT )
		{
			message_die(GENERAL_MESSAGE, $lang['Delete_default_rankset'] . "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>"));
		}

		if( $rankset_id )
		{
			$sql = "DELETE FROM " . RANKS_SETS_TABLE . "
				WHERE rankset_id = $rankset_id";
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't delete rank set data", "", __LINE__, __FILE__, $sql);
			}
			$sql = "DELETE FROM " . RANKS_CONFIG_TABLE . "
				WHERE rankset_id = $rankset_id";
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't delete rank config data", "", __LINE__, __FILE__, $sql);
			}

			$sql = "UPDATE " . RANKS_TABLE . "
				SET rankset_id = ".RANKSET_DEFAULT."
				WHERE rankset_id = $rankset_id";

			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't delete rank set data", "", __LINE__, __FILE__, $sql);
			}

			$message = $lang['Rankset_removed'] . "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");

			message_die(GENERAL_MESSAGE, $message);

		}
		else
		{
			message_die(GENERAL_MESSAGE, $lang['Must_select_rank']);
		}

	}
	else if( $mode == "update_ranks_apply" || $mode == "update_rankset_apply" )
	{
		$cfg_tmp = explode(',', strip_tags($HTTP_POST_VARS['cfg_apply_to']));
		$cfg_mode = $cfg_tmp[0];
		$cfg_mode_id = $cfg_tmp[1];

		if ( $mode == 'update_ranks_apply' )
		{
			$user_rank_field = 'user_rank';
			$cfg_id_field = 'rank_id';
			$cfg_id_value = intval($HTTP_POST_VARS['cfg_rank']);
			$message_added = $lang['Rank_cfg_added'];
			$message_updated = $lang['Rank_cfg_updated'];
			$message_error = $lang['Rank_cfg_error'];

			if ( !$cfg_id_value )
			{
				message_die(GENERAL_MESSAGE, $lang['Must_select_rank'] . "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>"));
			}

		} elseif ( $mode == 'update_rankset_apply' ) {

			$user_rank_field = 'user_rankset_id';
			$cfg_id_field = 'rankset_id';
			$cfg_id_value = intval($HTTP_POST_VARS['cfg_rankset']);
			$message_added = $lang['Rankset_cfg_added'];
			$message_updated = $lang['Rankset_cfg_updated'];
			$message_error = $lang['Rankset_cfg_error'];
		}


		$sql = "SELECT config_id, $cfg_id_field
			FROM " . RANKS_CONFIG_TABLE . "
			WHERE cfg_mode = " . $cfg_tmp[0] . "
			AND cfg_mode_id = " . $cfg_tmp[1] . "
			LIMIT 1";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't obtain rank config data", "", __LINE__, __FILE__, $sql);
		}
		if ( $row = $db->sql_fetchrow($result) )
		{
			if ( $row[$cfg_id_field] == $cfg_id_value )
			{
				message_die(GENERAL_MESSAGE, $message_error . "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>"));

			} else {

				$sql = "UPDATE " . RANKS_CONFIG_TABLE . "
					SET cfg_mode = $cfg_mode, cfg_mode_id = $cfg_mode_id, $cfg_id_field = $cfg_id_value
					WHERE config_id = " . $row['config_id'];
				$message = $message_updated;
			}

		} else {

			$sql = "INSERT INTO " . RANKS_CONFIG_TABLE . " (cfg_mode, cfg_mode_id, $cfg_id_field)
				VALUES ($cfg_mode, $cfg_mode_id, $cfg_id_value)";
			$message = $message_added;
		}
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't update/insert rule into ranks table", "", __LINE__, __FILE__, $sql);
		}

		if ( $cfg_mode != RANK_CFG_BIRTHDAY )
		{
			$update_users_sql = '';
			switch ( $cfg_mode )
			{
				case RANK_CFG_ADMIN:	$sql = "SELECT user_id
											FROM " . USERS_TABLE . "
											WHERE user_level = " . ADMIN . ";";
				break;
				case RANK_CFG_MOD:	$sql = "SELECT user_id
											FROM " . USERS_TABLE . "
											WHERE user_level = " . MOD . ";";
				break;
				case RANK_CFG_BAN:		$sql = "SELECT DISTINCT ban_userid AS 'user_id'
											FROM " . BANLIST_TABLE . ";";
				break;
				case RANK_CFG_GROUP:	$sql = "SELECT DISTINCT user_id
											FROM " . USER_GROUP_TABLE . "
											WHERE group_id = $cfg_mode_id;";
				break;
				case RANK_CFG_GENDER:	$sql = "SELECT user_id
											FROM " . USERS_TABLE . "
											WHERE user_gender = $cfg_mode_id;";
				break;
				case RANK_CFG_TEMPLATE:	$sql = "SELECT user_id
											FROM " . USERS_TABLE . "
											WHERE user_style = $cfg_mode_id;";
				break;
			}
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't obtain user update data", "", __LINE__, __FILE__, $sql);
			}
			while ( $row = $db->sql_fetchrow($result) )
			{
				$update_users_sql .= ( ( $update_users_sql != '' ) ? ', ' : '' ) . intval($row['user_id']);
			}
			if ( $update_users_sql )
			{
				$sql = "UPDATE " . USERS_TABLE . "
					SET $user_rank_field = $cfg_id_value
					WHERE user_id IN ($update_users_sql)";
				if( !$result = $db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, "Couldn't update user table", "", __LINE__, __FILE__, $sql);
				}
			}
		}

		$message .= "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
		message_die(GENERAL_MESSAGE, $message);
	}
	else if( $mode == "delete_rank_apply" || $mode == "delete_rankset_apply" )
	{
		$config_id = intval($HTTP_GET_VARS['id']);

		$sql = "SELECT cfg_mode, cfg_mode_id
			FROM " . RANKS_CONFIG_TABLE . "
			WHERE config_id = $config_id
			LIMIT 1";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't obtain rank config data", "", __LINE__, __FILE__, $sql);
		}
		if ( $row = $db->sql_fetchrow($result) )
		{
			$cfg_mode = intval($row['cfg_mode']);
			$cfg_mode_id = intval($row['cfg_mode_id']);
			$update_users_sql = '';
			switch ( $cfg_mode )
			{
				case RANK_CFG_ADMIN:	$sql = "SELECT user_id
											FROM " . USERS_TABLE . "
											WHERE user_level = " . ADMIN . ";";
											$user_rank_field = 'user_rank';
											$cfg_id_value = 0;
				break;
				case RANK_CFG_MOD:	$sql = "SELECT user_id
											FROM " . USERS_TABLE . "
											WHERE user_level = " . MOD . ";";
											$user_rank_field = 'user_rank';
											$cfg_id_value = 0;
				break;
				case RANK_CFG_BAN:		$sql = "SELECT DISTINCT ban_userid AS 'user_id'
											FROM " . BANLIST_TABLE . ";";
											$user_rank_field = 'user_rank';
											$cfg_id_value = 0;
				break;
				case RANK_CFG_GROUP:	$sql = "SELECT DISTINCT user_id
											FROM " . USER_GROUP_TABLE . "
											WHERE group_id = $cfg_mode_id;";
											$user_rank_field = 'user_rankset_id';
											$cfg_id_value = RANKSET_DEFAULT;
				break;
				case RANK_CFG_GENDER:	$sql = "SELECT user_id
											FROM " . USERS_TABLE . "
											WHERE user_gender = $cfg_mode_id;";
											$user_rank_field = 'user_rankset_id';
											$cfg_id_value = RANKSET_DEFAULT;
				break;
				case RANK_CFG_TEMPLATE:	$sql = "SELECT user_id
											FROM " . USERS_TABLE . "
											WHERE user_style = $cfg_mode_id;";
											$user_rank_field = 'user_rankset_id';
											$cfg_id_value = RANKSET_DEFAULT;
				break;
			}
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't obtain user update data", "", __LINE__, __FILE__, $sql);
			}
			while ( $row = $db->sql_fetchrow($result) )
			{
				$update_users_sql .= ( ( $update_users_sql != '' ) ? ', ' : '' ) . intval($row['user_id']);
			}
			if ( $update_users_sql )
			{
				$sql = "UPDATE " . USERS_TABLE . "
					SET $user_rank_field = $cfg_id_value
					WHERE user_id IN ($update_users_sql)";
				if( !$result = $db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, "Couldn't update user table", "", __LINE__, __FILE__, $sql);
				}
			}

			$sql = "DELETE FROM " . RANKS_CONFIG_TABLE . "
				WHERE config_id = $config_id";
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Couldn't delete rule from ranks table", "", __LINE__, __FILE__, $sql);
			}

		} else {

			message_die(GENERAL_MESSAGE, $lang['Rank_cfg_unknown'] . "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>"));
		}

		$message = ( $mode == "delete_ranks_apply" ) ? $lang['Rank_cfg_deleted'] : $lang['Rankset_cfg_deleted'];
		$message .= "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
		message_die(GENERAL_MESSAGE, $message);
	}
	else
	{
		//
		// They didn't feel like giving us any information. Oh, too bad, we'll just display the
		// list then...
		//
		$template->set_filenames(array(
			"body" => "admin/ranks_list_body.tpl")
		);

		$sql = "SELECT rank_id, rank_title
			FROM " . RANKS_TABLE . "
			WHERE rank_special = " . TRUE . "
			ORDER BY rank_title";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain ranks list', '', __LINE__, __FILE__, $sql);
		}
		if ( $db->sql_numrows($result) >= 1 )
		{
			$cfg_ranks_select = '<select name="cfg_rank">';
			while ( $row = $db->sql_fetchrow($result) )
			{
				$cfg_ranks_select .= '<option value="' . $row['rank_id'] . '">' . $row['rank_title'] . '</option>';
			}
			$cfg_ranks_select .= "</select>";

		} else {

			$cfg_ranks_select .= '<input type="hidden" name="cfg_rank" value="0">' . $lang['No_ranks'] . '';
		}

		$cfg_ranks_apply_to_select .= '<select name="cfg_apply_to">';
		$cfg_ranks_apply_to_select .= '<option value="' . RANK_CFG_ADMIN . ',' . TRUE . '">' . $lang['Administrators'] . '</option>';
		$cfg_ranks_apply_to_select .= '<option value="' . RANK_CFG_MOD . ',' . TRUE . '">' . $lang['Moderators'] . '</option>';
		if ( isset($userdata['user_birthday']) )
		{
			$cfg_ranks_apply_to_select .= '<option value="' . RANK_CFG_BIRTHDAY . ',' . TRUE . '">' . $lang['Rank_cfg_birthday'] . '</option>';
		}
		$cfg_ranks_apply_to_select .= '<option value="' . RANK_CFG_BAN . ',' . TRUE . '">' . $lang['Rank_cfg_ban'] . '</option>';
		$cfg_ranks_apply_to_select .= '</select>';

		$sql = "SELECT rankset_id, rankset_title
			FROM " . RANKS_SETS_TABLE . "
			ORDER BY rankset_title";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain rank sets list', '', __LINE__, __FILE__, $sql);
		}
		$cfg_rankset_select = '<select name="cfg_rankset">';
		while ( $row = $db->sql_fetchrow($result) )
		{
			$cfg_rankset_select .= '<option value="' . $row['rankset_id'] . '">' . $row['rankset_title'] . '</option>';
		}
		$cfg_rankset_select .= "</select>";

		$cfg_rankset_apply_to_select .= '<select name="cfg_apply_to">';
		reset($groups);
		while ( current($groups) )
		{
			$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_GROUP . ',' . key($groups) . '">' . $lang['Rank_cfg_group'] . ': ' . current($groups) . '</option>';
			next($groups);
		}
		if ( isset($userdata['user_gender']) )
		{
				$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_GENDER . ',0">' . $lang['Gender'] . ': ' . $lang['No_gender_specify'] . '</option>';
				$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_GENDER . ',1">' . $lang['Gender'] . ': ' . $lang['Male'] . '</option>';
				$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_GENDER . ',2">' . $lang['Gender'] . ': ' . $lang['Female'] . '</option>';
		}
		reset($templates);
		while ( current($templates) )
		{
			$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_TEMPLATE . ',' . key($templates) . '">' . $lang['Template'] . ': ' . current($templates) . '</option>';
			next($templates);
		}
		$cfg_rankset_apply_to_select .= '</select>';

		$template->assign_vars(array(
			"L_RANKS_TITLE" => $lang['Ranks_title'],
			"L_RANKS_TEXT" => $lang['Ranks_explain'],
			"L_RANK" => $lang['Rank_title'],
			"L_RANK_MINIMUM" => $lang['Rank_minimum'],
			"L_SPECIAL_RANK" => $lang['Rank_special'],

			"L_RANKS_CFG_TEXT" => sprintf($lang['Ranks_update_explain'], isset($userdata['user_birthday']) ? $lang['Birthday_is_installed'] : $lang['Birthday_not_installed']),
			"L_RANKSET_CFG_TEXT" => sprintf($lang['Rankset_update_explain'], isset($userdata['user_gender']) ? $lang['Gender_is_installed'] : $lang['Gender_not_installed']),
			"L_APPLY_TO" => $lang['Apply_to'],
			"L_APPLY" => $lang['Apply'],

			"CFG_RANKS_SELECT" => $cfg_ranks_select,
			"CFG_RANKS_APPLY_TO_SELECT" => $cfg_ranks_apply_to_select,
			"CFG_RANKSETS_SELECT" => $cfg_rankset_select,
			"CFG_RANKSETS_APPLY_TO_SELECT" => $cfg_rankset_apply_to_select,

			"L_RANKSET_TITLE" => $lang['Rankset_title'],
			"L_RANKSET_TEXT" => $lang['Rankset_explain'],
			"L_RANKSET" => $lang['Rankset'],
			"L_RANKSET_DESC" => $lang['Rankset_desc'],
			"L_RANKSET_HIDDEN" => $lang['Rankset_hidden'],

			"L_EDIT" => $lang['Edit'],
			"L_DELETE" => $lang['Delete'],
			"L_ADD_RANK" => $lang['Add_new_rank'],
			"L_ADD_RANKSET" => $lang['Add_new_rank_set'],
			"L_ACTION" => $lang['Action'],

			"S_RANKS_ACTION" => append_sid("admin_ranks.$phpEx"))
		);

		$sql = "SELECT r.*, rs.rankset_title AS 'rankset'
			FROM " . RANKS_TABLE . " r, " . RANKS_SETS_TABLE . " rs
			WHERE r.rankset_id = rs.rankset_id
			ORDER BY r.rank_min ASC, r.rank_special ASC";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql);
		}
		$rank_count = $db->sql_numrows($result);
		$rank_rows = $db->sql_fetchrowset($result);

		for($i = 0; $i < $rank_count; $i++)
		{
			$rank = $rank_rows[$i]['rank_title'];
			$special_rank = $rank_rows[$i]['rank_special'];
			$rank_id = $rank_rows[$i]['rank_id'];
			$rank_min = $rank_rows[$i]['rank_min'];
			$rankset = $rank_rows[$i]['rankset'];

			if( $special_rank == 1 )
			{
				$rank_min = $rank_max = "-";
				$rankset = "-";
			}

			$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
			$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

			$rank_is_special = ( $special_rank ) ? $lang['Yes'] : $lang['No'];

			$template->assign_block_vars("ranks", array(
				"ROW_COLOR" => "#" . $row_color,
				"ROW_CLASS" => $row_class,
				"RANK" => $rank,
				"SPECIAL_RANK" => $rank_is_special,
				"RANK_MIN" => $rank_min,
				"RANKSET" => $rankset,

				"U_RANK_EDIT" => append_sid("admin_ranks.$phpEx?mode=rank_edit&id=$rank_id"),
				"U_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=rank_delete&id=$rank_id"))
			);
		}

		$sql = "SELECT rc.*, r.rank_title
			FROM " . RANKS_CONFIG_TABLE . " rc, " . RANKS_TABLE . " r
			WHERE rc.rank_id <> 0
			AND rc.rank_id = r.rank_id
			ORDER BY rc.cfg_mode ASC, rc.cfg_mode_id ASC";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql);
		}
		$config_count = $db->sql_numrows($result);
		$config_row = $db->sql_fetchrowset($result);

		for($i = 0; $i < $config_count; $i++)
		{
			switch ( $config_row[$i]['cfg_mode'] )
			{
				case RANK_CFG_ADMIN: $cfg_rank_apply_to = $lang['Administrators']; break;
				case RANK_CFG_MOD: $cfg_rank_apply_to = $lang['Moderators']; break;
				case RANK_CFG_BAN: $cfg_rank_apply_to = $lang['Rank_cfg_ban']; break;
				case RANK_CFG_BIRTHDAY: $cfg_rank_apply_to = $lang['Rank_cfg_birthday']; break;
			}
			$config_id = $config_row[$i]['config_id'];

			$row_color = ( !($i % 2) ) ? $theme['td_color2'] : $theme['td_color1'];
			$row_class = ( !($i % 2) ) ? $theme['td_class2'] : $theme['td_class1'];

			$template->assign_block_vars("update_ranks", array(
				"ROW_COLOR" => "#" . $row_color,
				"ROW_CLASS" => $row_class,
				"CFG_RANK_TITLE" => $config_row[$i]['rank_title'],
				"CFG_RANK_RANK" => $cfg_rank_apply_to,

				"CFG_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete_rank_apply&id=$config_id"))
			);
		}

		$sql = "SELECT * FROM " . RANKS_SETS_TABLE . "
			ORDER BY rankset_hidden ASC, rankset_title ASC";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't obtain rank sets data", "", __LINE__, __FILE__, $sql);
		}
		$rank_set_count = $db->sql_numrows($result);
		$rank_set_rows = $db->sql_fetchrowset($result);

		for($i = 0; $i < $rank_set_count; $i++)
		{
			$rankset_id = $rank_set_rows[$i]['rankset_id'];
			$rank = $rank_set_rows[$i]['rankset_title'];
			$desc = str_replace("\n", "<br />", $rank_set_rows[$i]['rankset_desc']);

			$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
			$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

			$hidden = ( $rank_set_rows[$i]['rankset_hidden'] ) ? $lang['Yes'] : $lang['No'];

			$template->assign_block_vars("rank_sets", array(
				"ROW_COLOR" => "#" . $row_color,
				"ROW_CLASS" => $row_class,
				"RANKSET" => $rank,
				"RANKSET_DESC" => $desc,
				"HIDDEN_RANKSET" => $hidden,

				"U_RANKSET_EDIT" => append_sid("admin_ranks.$phpEx?mode=rankset_edit&id=$rankset_id"),
				"U_RANKSET_DELETE" => append_sid("admin_ranks.$phpEx?mode=rankset_delete&id=$rankset_id"))
			);
		}

		$sql = "SELECT rc.*, rs.rankset_title
			FROM " . RANKS_CONFIG_TABLE . " rc, " . RANKS_SETS_TABLE . " rs
			WHERE rc.rankset_id <> 0
			AND rc.rankset_id = rs.rankset_id
			ORDER BY rc.cfg_mode ASC, rc.cfg_mode_id ASC";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't obtain rank sets data", "", __LINE__, __FILE__, $sql);
		}
		$config_count = $db->sql_numrows($result);
		$config_row = $db->sql_fetchrowset($result);

		for($i = 0; $i < $config_count; $i++)
		{
			switch ( $config_row[$i]['cfg_mode'] )
			{
				case RANK_CFG_GROUP: $cfg_rankset_apply_to = $lang['Rank_cfg_group'] . ': ' . $groups[$config_row[$i]['cfg_mode_id']]; break;
				case RANK_CFG_GENDER:

					$cfg_rankset_apply_to = $lang['Gender'] . ': ';
					switch ( $config_row[$i]['cfg_mode_id'] )
					{
						case 0: $cfg_rankset_apply_to .= $lang['No_gender_specify'] ; break;
						case 1: $cfg_rankset_apply_to .= $lang['Male'] ; break;
						case 2: $cfg_rankset_apply_to .= $lang['Female'] ; break;
					}
					break;

				case RANK_CFG_TEMPLATE: $cfg_rankset_apply_to = $lang['Template'] . ': ' . $templates[$config_row[$i]['cfg_mode_id']]; break;
			}
			$config_id = $config_row[$i]['config_id'];

			$row_color = ( !($i % 2) ) ? $theme['td_color2'] : $theme['td_color1'];
			$row_class = ( !($i % 2) ) ? $theme['td_class2'] : $theme['td_class1'];

			$template->assign_block_vars("update_rankset", array(
				"ROW_COLOR" => "#" . $row_color,
				"ROW_CLASS" => $row_class,
				"CFG_RANKSET_TITLE" => $config_row[$i]['rankset_title'],
				"CFG_RANKSET_APPLY_TO" => $cfg_rankset_apply_to,

				"CFG_RANKSET_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete_rankset_apply&id=$config_id"))
			);
		}
	}
}
else
{
	//
	// Show the default page
	//
	$template->set_filenames(array(
		"body" => "admin/ranks_list_body.tpl")
	);

	$sql = "SELECT rank_id, rank_title
		FROM " . RANKS_TABLE . "
		WHERE rank_special = " . TRUE . "
		ORDER BY rank_title";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain ranks list', '', __LINE__, __FILE__, $sql);
	}
	if ( $db->sql_numrows($result) >= 1 )
	{
		$cfg_ranks_select = '<select name="cfg_rank">';
		while ( $row = $db->sql_fetchrow($result) )
		{
			$cfg_ranks_select .= '<option value="' . $row['rank_id'] . '">' . $row['rank_title'] . '</option>';
		}
		$cfg_ranks_select .= "</select>";

	} else {

		$cfg_ranks_select .= '<input type="hidden" name="cfg_rank" value="0">' . $lang['No_ranks'] . '';
	}

	$cfg_ranks_apply_to_select .= '<select name="cfg_apply_to">';
	$cfg_ranks_apply_to_select .= '<option value="' . RANK_CFG_ADMIN . ',' . TRUE . '">' . $lang['Administrators'] . '</option>';
	$cfg_ranks_apply_to_select .= '<option value="' . RANK_CFG_MOD . ',' . TRUE . '">' . $lang['Moderators'] . '</option>';
	if ( isset($userdata['user_birthday']) )
	{
		$cfg_ranks_apply_to_select .= '<option value="' . RANK_CFG_BIRTHDAY . ',' . TRUE . '">' . $lang['Rank_cfg_birthday'] . '</option>';
	}
	$cfg_ranks_apply_to_select .= '<option value="' . RANK_CFG_BAN . ',' . TRUE . '">' . $lang['Rank_cfg_ban'] . '</option>';
	$cfg_ranks_apply_to_select .= '</select>';

	$sql = "SELECT rankset_id, rankset_title
		FROM " . RANKS_SETS_TABLE . "
		ORDER BY rankset_title";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain rank sets list', '', __LINE__, __FILE__, $sql);
	}
	$cfg_rankset_select = '<select name="cfg_rankset">';
	while ( $row = $db->sql_fetchrow($result) )
	{
		$cfg_rankset_select .= '<option value="' . $row['rankset_id'] . '">' . $row['rankset_title'] . '</option>';
	}
	$cfg_rankset_select .= "</select>";

	$cfg_rankset_apply_to_select .= '<select name="cfg_apply_to">';
	reset($groups);
	while ( current($groups) )
	{
		$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_GROUP . ',' . key($groups) . '">' . $lang['Rank_cfg_group'] . ': ' . current($groups) . '</option>';
		next($groups);
	}
	if ( isset($userdata['user_gender']) )
	{
			$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_GENDER . ',0">' . $lang['Gender'] . ': ' . $lang['No_gender_specify'] . '</option>';
			$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_GENDER . ',1">' . $lang['Gender'] . ': ' . $lang['Male'] . '</option>';
			$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_GENDER . ',2">' . $lang['Gender'] . ': ' . $lang['Female'] . '</option>';
	}
	reset($templates);
	while ( current($templates) )
	{
		$cfg_rankset_apply_to_select .= '<option value="' . RANK_CFG_TEMPLATE . ',' . key($templates) . '">' . $lang['Template'] . ': ' . current($templates) . '</option>';
		next($templates);
	}
	$cfg_rankset_apply_to_select .= '</select>';

	$template->assign_vars(array(
		"L_RANKS_TITLE" => $lang['Ranks_title'],
		"L_RANKS_TEXT" => $lang['Ranks_explain'],
		"L_RANK" => $lang['Rank_title'],
		"L_RANK_MINIMUM" => $lang['Rank_minimum'],
		"L_SPECIAL_RANK" => $lang['Rank_special'],

		"L_RANKS_CFG_TEXT" => sprintf($lang['Ranks_update_explain'], isset($userdata['user_birthday']) ? $lang['Birthday_is_installed'] : $lang['Birthday_not_installed']),
		"L_RANKSET_CFG_TEXT" => sprintf($lang['Rankset_update_explain'], isset($userdata['user_gender']) ? $lang['Gender_is_installed'] : $lang['Gender_not_installed']),
		"L_APPLY_TO" => $lang['Apply_to'],
		"L_APPLY" => $lang['Apply'],

		"CFG_RANKS_SELECT" => $cfg_ranks_select,
		"CFG_RANKS_APPLY_TO_SELECT" => $cfg_ranks_apply_to_select,
		"CFG_RANKSETS_SELECT" => $cfg_rankset_select,
		"CFG_RANKSETS_APPLY_TO_SELECT" => $cfg_rankset_apply_to_select,

		"L_RANKSET_TITLE" => $lang['Rankset_title'],
		"L_RANKSET_TEXT" => $lang['Rankset_explain'],
		"L_RANKSET" => $lang['Rankset'],
		"L_RANKSET_DESC" => $lang['Rankset_desc'],
		"L_RANKSET_HIDDEN" => $lang['Rankset_hidden'],

		"L_EDIT" => $lang['Edit'],
		"L_DELETE" => $lang['Delete'],
		"L_ADD_RANK" => $lang['Add_new_rank'],
		"L_ADD_RANKSET" => $lang['Add_new_rank_set'],
		"L_ACTION" => $lang['Action'],

		"S_RANKS_ACTION" => append_sid("admin_ranks.$phpEx"))
	);

	$sql = "SELECT r.*, rs.rankset_title AS 'rankset'
		FROM " . RANKS_TABLE . " r, " . RANKS_SETS_TABLE . " rs
		WHERE r.rankset_id = rs.rankset_id
		ORDER BY r.rank_min ASC, r.rank_special ASC";
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql);
	}
	$rank_count = $db->sql_numrows($result);
	$rank_rows = $db->sql_fetchrowset($result);

	for($i = 0; $i < $rank_count; $i++)
	{
		$rank = $rank_rows[$i]['rank_title'];
		$special_rank = $rank_rows[$i]['rank_special'];
		$rank_id = $rank_rows[$i]['rank_id'];
		$rank_min = $rank_rows[$i]['rank_min'];
		$rankset = $rank_rows[$i]['rankset'];

		if( $special_rank == 1 )
		{
			$rank_min = $rank_max = "-";
			$rankset = "-";
		}

		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

		$rank_is_special = ( $special_rank ) ? $lang['Yes'] : $lang['No'];

		$template->assign_block_vars("ranks", array(
			"ROW_COLOR" => "#" . $row_color,
			"ROW_CLASS" => $row_class,
			"RANK" => $rank,
			"SPECIAL_RANK" => $rank_is_special,
			"RANK_MIN" => $rank_min,
			"RANKSET" => $rankset,

			"U_RANK_EDIT" => append_sid("admin_ranks.$phpEx?mode=rank_edit&id=$rank_id"),
			"U_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=rank_delete&id=$rank_id"))
		);
	}

	$sql = "SELECT rc.*, r.rank_title
		FROM " . RANKS_CONFIG_TABLE . " rc, " . RANKS_TABLE . " r
		WHERE rc.rank_id <> 0
		AND rc.rank_id = r.rank_id
		ORDER BY rc.cfg_mode ASC, rc.cfg_mode_id ASC";
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql);
	}
	$config_count = $db->sql_numrows($result);
	$config_row = $db->sql_fetchrowset($result);

	for($i = 0; $i < $config_count; $i++)
	{
		switch ( $config_row[$i]['cfg_mode'] )
		{
			case RANK_CFG_ADMIN: $cfg_rank_apply_to = $lang['Administrators']; break;
			case RANK_CFG_MOD: $cfg_rank_apply_to = $lang['Moderators']; break;
			case RANK_CFG_BAN: $cfg_rank_apply_to = $lang['Rank_cfg_ban']; break;
			case RANK_CFG_BIRTHDAY: $cfg_rank_apply_to = $lang['Rank_cfg_birthday']; break;
		}
		$config_id = $config_row[$i]['config_id'];

		$row_color = ( !($i % 2) ) ? $theme['td_color2'] : $theme['td_color1'];
		$row_class = ( !($i % 2) ) ? $theme['td_class2'] : $theme['td_class1'];

		$template->assign_block_vars("update_ranks", array(
			"ROW_COLOR" => "#" . $row_color,
			"ROW_CLASS" => $row_class,
			"CFG_RANK_TITLE" => $config_row[$i]['rank_title'],
			"CFG_RANK_RANK" => $cfg_rank_apply_to,

			"CFG_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete_rank_apply&id=$config_id"))
		);
	}

	$sql = "SELECT * FROM " . RANKS_SETS_TABLE . "
		ORDER BY rankset_hidden ASC, rankset_title ASC";
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain rank sets data", "", __LINE__, __FILE__, $sql);
	}
	$rank_set_count = $db->sql_numrows($result);
	$rank_set_rows = $db->sql_fetchrowset($result);

	for($i = 0; $i < $rank_set_count; $i++)
	{
		$rankset_id = $rank_set_rows[$i]['rankset_id'];
		$rank = $rank_set_rows[$i]['rankset_title'];
		$desc = str_replace("\n", "<br />", $rank_set_rows[$i]['rankset_desc']);

		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

		$hidden = ( $rank_set_rows[$i]['rankset_hidden'] ) ? $lang['Yes'] : $lang['No'];

		$template->assign_block_vars("rank_sets", array(
			"ROW_COLOR" => "#" . $row_color,
			"ROW_CLASS" => $row_class,
			"RANKSET" => $rank,
			"RANKSET_DESC" => $desc,
			"HIDDEN_RANKSET" => $hidden,

			"U_RANKSET_EDIT" => append_sid("admin_ranks.$phpEx?mode=rankset_edit&id=$rankset_id"),
			"U_RANKSET_DELETE" => append_sid("admin_ranks.$phpEx?mode=rankset_delete&id=$rankset_id"))
		);
	}

	$sql = "SELECT rc.*, rs.rankset_title
		FROM " . RANKS_CONFIG_TABLE . " rc, " . RANKS_SETS_TABLE . " rs
		WHERE rc.rankset_id <> 0
		AND rc.rankset_id = rs.rankset_id
		ORDER BY rc.cfg_mode ASC, rc.cfg_mode_id ASC";
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain rank sets data", "", __LINE__, __FILE__, $sql);
	}
	$config_count = $db->sql_numrows($result);
	$config_row = $db->sql_fetchrowset($result);

	for($i = 0; $i < $config_count; $i++)
	{
		switch ( $config_row[$i]['cfg_mode'] )
		{
			case RANK_CFG_GROUP: $cfg_rankset_apply_to = $lang['Rank_cfg_group'] . ': ' . $groups[$config_row[$i]['cfg_mode_id']]; break;
			case RANK_CFG_GENDER:

				$cfg_rankset_apply_to = $lang['Gender'] . ': ';
				switch ( $config_row[$i]['cfg_mode_id'] )
				{
					case 0: $cfg_rankset_apply_to .= $lang['No_gender_specify'] ; break;
					case 1: $cfg_rankset_apply_to .= $lang['Male'] ; break;
					case 2: $cfg_rankset_apply_to .= $lang['Female'] ; break;
				}
				break;

			case RANK_CFG_TEMPLATE: $cfg_rankset_apply_to = $lang['Template'] . ': ' . $templates[$config_row[$i]['cfg_mode_id']]; break;
		}
		$config_id = $config_row[$i]['config_id'];

		$row_color = ( !($i % 2) ) ? $theme['td_color2'] : $theme['td_color1'];
		$row_class = ( !($i % 2) ) ? $theme['td_class2'] : $theme['td_class1'];

		$template->assign_block_vars("update_rankset", array(
			"ROW_COLOR" => "#" . $row_color,
			"ROW_CLASS" => $row_class,
			"CFG_RANKSET_TITLE" => $config_row[$i]['rankset_title'],
			"CFG_RANKSET_APPLY_TO" => $cfg_rankset_apply_to,

			"CFG_RANKSET_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete_rankset_apply&id=$config_id"))
		);
	}
}

$template->pparse("body");

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

?>

Postat: 2006-05-03 22:03
av Holger
Tyvärr, koden har dragits isär på tok för långt. :cry:

Använd moddarna baklänges, plocka alltså bort dem och kör sedan uppdateringen, installera därefter moddarna igen ... :cry:

Postat: 2006-05-03 22:16
av Joakim
Vad jag kan se så är min admin_ranks en som ingår i den här extended ranks-modden. Den är tydligen premodded och då kan jag ju inte se vad jag ska göra för att ändra den....

Postat: 2006-05-04 09:05
av Holger
Hoppa då över den biten först ...

Postat: 2006-05-08 15:01
av Joakim
Laddat upp filerna och forumet verkar fungera än så länge. Däremot får jag detta i navigeringen till kontrollpanelen:

Kod: Markera allt

Parse error: parse error, unexpected T_ELSE in D:\InetPub\windsurf.se\forum\admin\admin_words.php on line 117
Så här ser det ut runt 117, där den utvalda är den som börjar med else if....:

Kod: Markera allt

$template->pparse("body");

		include('./page_footer_admin.'.$phpEx);
	}
	else if( $mode == "save" )
	{
		$word_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : 0;

Postat: 2006-05-08 15:22
av Holger
Lägg upp hela filen här ...

Postat: 2006-05-08 15:26
av Joakim

Kod: Markera allt

<?php
/***************************************************************************
 *                              admin_words.php
 *                            -------------------
 *   begin                : Thursday, Jul 12, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: admin_words.php,v 1.10.2.3 2004/03/25 15:57:20 acydburn Exp $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   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) )
{
	$file = basename(__FILE__);
	$module['General']['Word_Censor'] = $file;
	return;
}

define('IN_PHPBB', 1);
//
// Load default header
//
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);

if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
	$mode = (isset($HTTP_GET_VARS['mode'])) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
	$mode = htmlspecialchars($mode);
}
else 
{
	//
	// These could be entered via a form button
	//
	if( isset($HTTP_POST_VARS['add']) )
	{
		$mode = "add";
	}
	else if( isset($HTTP_POST_VARS['save']) )
	{
		$mode = "save";
	}
	else
	{
		$mode = "";
	}
}

// Restrict mode input to valid options 
$mode = ( in_array($mode, array('add', 'edit', 'save', 'delete')) ) ? $mode : ''; 

	{
		$word_id = ( isset($HTTP_GET_VARS['id']) ) ? intval($HTTP_GET_VARS['id']) : 0;

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

		$word_info = array('word' => '', 'replacement' => ''); 
		$s_hidden_fields = '';

		if( $mode == "edit" )
		{
			if( $word_id )
			{
				$sql = "SELECT * 
					FROM " . WORDS_TABLE . " 
					WHERE word_id = $word_id";
				if(!$result = $db->sql_query($sql))
				{
					message_die(GENERAL_ERROR, "Could not query words table", "Error", __LINE__, __FILE__, $sql);
				}

				$word_info = $db->sql_fetchrow($result);
				$s_hidden_fields .= '<input type="hidden" name="id" value="' . $word_id . '" />';
			}
			else
			{
				message_die(GENERAL_MESSAGE, $lang['No_word_selected']);
			}
		}

		$template->assign_vars(array(
			"WORD" => $word_info['word'],
			"REPLACEMENT" => $word_info['replacement'],

			"L_WORDS_TITLE" => $lang['Words_title'],
			"L_WORDS_TEXT" => $lang['Words_explain'],
			"L_WORD_CENSOR" => $lang['Edit_word_censor'],
			"L_WORD" => $lang['Word'],
			"L_REPLACEMENT" => $lang['Replacement'],
			"L_SUBMIT" => $lang['Submit'],

			"S_WORDS_ACTION" => append_sid("admin_words.$phpEx"),
			"S_HIDDEN_FIELDS" => $s_hidden_fields)
		);

		$template->pparse("body");

		include('./page_footer_admin.'.$phpEx);
	}
	else if( $mode == "save" )
	{
		$word_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : 0;
		$word = ( isset($HTTP_POST_VARS['word']) ) ? trim($HTTP_POST_VARS['word']) : "";
		$replacement = ( isset($HTTP_POST_VARS['replacement']) ) ? trim($HTTP_POST_VARS['replacement']) : "";

		if($word == "" || $replacement == "")
		{
			message_die(GENERAL_MESSAGE, $lang['Must_enter_word']);
		}

		if( $word_id )
		{
			$sql = "UPDATE " . WORDS_TABLE . " 
				SET word = '" . str_replace("\'", "''", $word) . "', replacement = '" . str_replace("\'", "''", $replacement) . "' 
				WHERE word_id = $word_id";
			$message = $lang['Word_updated'];
		}
		else
		{
			$sql = "INSERT INTO " . WORDS_TABLE . " (word, replacement) 
				VALUES ('" . str_replace("\'", "''", $word) . "', '" . str_replace("\'", "''", $replacement) . "')";
			$message = $lang['Word_added'];
		}

		if(!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Could not insert data into words table", $lang['Error'], __LINE__, __FILE__, $sql);
		}

		$message .= "<br /><br />" . sprintf($lang['Click_return_wordadmin'], "<a href=\"" . append_sid("admin_words.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");

		message_die(GENERAL_MESSAGE, $message);
	}
	else if( $mode == "delete" )
	{
		if( isset($HTTP_POST_VARS['id']) ||  isset($HTTP_GET_VARS['id']) )
		{
			$word_id = ( isset($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id'];
			$word_id = intval($word_id);
		}
		else
		{
			$word_id = 0;
		}

		$confirm = isset($HTTP_POST_VARS['confirm']); 

      if( $word_id && $confirm ) 
      { 
         $sql = "DELETE FROM " . WORDS_TABLE . " 
            WHERE word_id = $word_id";

			if(!$result = $db->sql_query($sql))
			{
				message_die(GENERAL_ERROR, "Could not remove data from words table", $lang['Error'], __LINE__, __FILE__, $sql);
			}

			$message = $lang['Word_removed'] . "<br /><br />" . sprintf($lang['Click_return_wordadmin'], "<a href=\"" . append_sid("admin_words.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");

			message_die(GENERAL_MESSAGE, $message);
		}
		      elseif( $word_id && !$confirm) 
      { 
         // Present the confirmation screen to the user 
         $template->set_filenames(array( 
            'body' => 'admin/confirm_body.tpl') 
         ); 

         $hidden_fields = '<input type="hidden" name="mode" value="delete" /><input type="hidden" name="id" value="' . $word_id . '" />'; 

         $template->assign_vars(array( 
            'MESSAGE_TITLE' => $lang['Confirm'], 
            'MESSAGE_TEXT' => $lang['Confirm_delete_word'], 

            'L_YES' => $lang['Yes'], 
            'L_NO' => $lang['No'], 

            'S_CONFIRM_ACTION' => append_sid("admin_words.$phpEx"), 
            'S_HIDDEN_FIELDS' => $hidden_fields) 
         ); 
      } 
		else
		{
			message_die(GENERAL_MESSAGE, $lang['No_word_selected']);
		}
	}
}
else
{
	$template->set_filenames(array(
		"body" => "admin/words_list_body.tpl")
	);

	$sql = "SELECT * 
		FROM " . WORDS_TABLE . " 
		ORDER BY word";
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, "Could not query words table", $lang['Error'], __LINE__, __FILE__, $sql);
	}

	$word_rows = $db->sql_fetchrowset($result);
	$db->sql_freeresult($result); 
	$word_count = count($word_rows);

	$template->assign_vars(array(
		"L_WORDS_TITLE" => $lang['Words_title'],
		"L_WORDS_TEXT" => $lang['Words_explain'],
		"L_WORD" => $lang['Word'],
		"L_REPLACEMENT" => $lang['Replacement'],
		"L_EDIT" => $lang['Edit'],
		"L_DELETE" => $lang['Delete'],
		"L_ADD_WORD" => $lang['Add_new_word'],
		"L_ACTION" => $lang['Action'],

		"S_WORDS_ACTION" => append_sid("admin_words.$phpEx"),
		"S_HIDDEN_FIELDS" => '')
	);

	for($i = 0; $i < $word_count; $i++)
	{
		$word = $word_rows[$i]['word'];
		$replacement = $word_rows[$i]['replacement'];
		$word_id = $word_rows[$i]['word_id'];

		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

		$template->assign_block_vars("words", array(
			"ROW_COLOR" => "#" . $row_color,
			"ROW_CLASS" => $row_class,
			"WORD" => $word,
			"REPLACEMENT" => $replacement,

			"U_WORD_EDIT" => append_sid("admin_words.$phpEx?mode=edit&id=$word_id"),
			"U_WORD_DELETE" => append_sid("admin_words.$phpEx?mode=delete&id=$word_id"))
		);
	}
}

$template->pparse("body");

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

?>

Postat: 2006-05-08 15:34
av Holger
Allt är rätt, mysko!
Lägg upp filen ur din backup, om den fortfarande funkar så provar du att modda om den ...

Postat: 2006-05-08 15:40
av Joakim
Den gamle filen fungerar...

Edit: Gjort om alla ändringar och nu verkar iaf det fungera. Tack återigen Holger ! :D

Postat: 2006-05-08 15:51
av Holger
Kanon! :-D