<?php
/***************************************************************************
 *                              admin/admin_classement_index.php
 *                            -------------------
 *   begin                : 30 mai 2004
 *   Fait par             : Dark_Génova
 *   email                : genovakiller@yahoo.fr
 *
 *
 *
 ***************************************************************************/

/*
* Ce fichier va s'occuper de gérer les choix de l'utilisateur sur les classements sur l'index.
*/

define('IN_PHPBB', true);
define('IN_CLASSEMENT', true);

if( !empty($setmodules) )
{
        $file = basename(__FILE__);
        $module['General']['Classements'] = "$file";
        return;
}

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

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

//
// Ce tableau contient les différents paramètres d'un bloc dans la base de donnée
//
$classement_sql_parameters = array(
	'CI_classement', 
	'CI_order', 
	'CI_limit', 
	'CI_desactivate', 
	'CI_position', 
	'CI_page', 
	'CI_random', 
	'CI_manual_order', 
	'CI_random_order'
);

//
// on récupère les données de la table classement
//
$sql = 'SELECT classement_name, classement_value FROM ' . CLASSEMENT_TABLE;
if ( ! $result = $db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, 'Impossible de récupérer les données de la table classement', '', __LINE__, __FILE__, $sql);
}

$classement_config = array();
while ( $row = $db->sql_fetchrow($result) )
{
	$classement_config[$row['classement_name']] = $row['classement_value'];
}

//
// Le formulaire est soumis, on met à jour les données du classement
//
if( isset($HTTP_POST_VARS['submit_classement']) )
{
	for ( $a = 0; $a < 2; $a++ )
	{
		for ( $b = 0; $b < count($classement_sql_parameters); $b++ )
		{
			$classement_sql_name = $classement_sql_parameters[$b] . '_' . $a;
			$classement_sql_value = str_replace("'", "\'", htmlSpecialChars($HTTP_POST_VARS[$classement_sql_name]));

			if ( ereg('^CI_manual_order_' . $a . '$', $classement_sql_name) || ereg('^CI_random_order_' . $a . '$', $classement_sql_name) )
			{
				$orderer_bolean = ( strpos($classement_sql_value, ',')  ) ? TRUE : FALSE;
				if ( $orderer_bolean )
				{
					$orderer_array = explode(',', trim($classement_sql_value));
					$clean_orderer_array = array();
					reset($orderer_array);
					$c = 0;
					foreach ( $orderer_array AS $value )
					{
						if ( intval(trim($value)) > 0 )
						{
							$clean_orderer_array[$c] = intval(trim($value));
							$c++;
						}
					}
					$classement_sql_value = implode($clean_orderer_array, ', ');
				}
				else
				{
					$classement_sql_value = intval($classement_sql_value);
				}
			}

			$sql = 'UPDATE ' . CLASSEMENT_TABLE . ' SET classement_value=\'' . $classement_sql_value . '\' WHERE classement_name=\'' . $classement_sql_name . '\'';
			if ( ! $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Impossible de mettre à jour la table classement', '', __LINE__, __FILE__, $sql);
			}
		}
	}

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

/*
 * on génère les différents types de classements, les classements précédés de MODULE dans le commentaire sont des classements visible uniquement
 * si un MOD particulié, définit dans la condition, est installé.
 */

// Ce tableau contiendra les différents modules
$classement_module = array();

// Classements valables pour tout phpBB, sans besoin d'ajouter un module

// Classer par date d'enregistrement
$classement_module['date_register'] = $lang['CI_date_registered'];

// Classer par nombre de messages
$classement_module['nbr_post'] = $lang['CI_nbr_post'];

// Classer par date de création d'un sujet
$classement_module['date_topic'] = $lang['CI_topic_date'];

// Classer par nombre de fois qu'un sujet a été vu
$classement_module['view_topic'] = $lang['CI_topic_view'];

// Classer par nombre de réponse dans un sujet
$classement_module['reply_topic'] = $lang['CI_topic_reply'];

// Classer par date de post de message
$classement_module['date_post'] = $lang['CI_date_post'];

// MODULE >> Classer par nombre de point [point system MOD]
if ( $userdata['user_points'] != '' ) 
{
	$classement_module['nbr_point'] = $lang['CI_nbr_point'];
}

// MODULE >> Classer par niveaux [level MOD]
if ( @file_exists('../level_mod.' . $phpEx) ) 
{
	$classement_module['rpg_level'] = $lang['CI_rpg_level'];
}

// MODULE >> Classer par temps total passé sur le forum [last visit MOD]
if ( $userdata['user_totaltime'] != '' ) 
{
	$classement_module['total_time'] = $lang['CI_total_time'];
}

// MODULE >> Classer par nombre de connexions sur le forum [last visit MOD]
if ( $userdata['user_totallogon'] != '' ) 
{
	$classement_module['total_logon'] = $lang['CI_total_logon'];
}

// MODULE >> Classer par nombre de pages visitées [last visit MOD]
if ( $userdata['user_totalpages'] != '' ) 
{
	$classement_module['total_page'] = $lang['CI_total_page'];
}

// MODULE >> Classer par nombre de pages visitées [last visit MOD]
if ( @file_exists('../annuaire.' . $phpEx) ) 
{
	$classement_module['annuaire_clic'] = $lang['CI_annuaire_clic'];
}

/*
 * On créé la page d'administration des blocs et des classements
 */

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

//
// On passe les variables simples
$template->assign_vars( array(
	'L_TITLE' =>			$lang['CI_title'],
	'L_EXPLAIN' =>			$lang['CI_description'],
	'L_OPTION' =>			$lang['CI_option'],
	'L_DESACTIVE' =>			$lang['CI_desactivate'],
	'L_YES' =>				$lang['CI_yes'],
	'L_NO' =>				$lang['CI_no'],
	'L_POSITION' =>			$lang['CI_position'],
	'L_UP' =>				$lang['CI_up'],
	'L_DOWN' =>				$lang['CI_down'],
	'L_HOW_PAGE' =>			$lang['CI_page'],
	'L_ALL' =>				$lang['CI_all'],
	'L_INDEX' =>			$lang['CI_index'],
	'L_OPTION_TITLE' =>		$lang['CI_title_option'],
	'L_CLASSEMENT_BY' =>		$lang['CI_by'],
	'L_CLASSEMENT_ORDER' =>		$lang['CI_order'],
	'L_ASC' =>				$lang['CI_asc'],
	'L_DESC' =>				$lang['CI_desc'],
	'L_LIMIT' =>			$lang['CI_limit'],
	'L_SUBMIT' =>			$lang['CI_submit'],
	'L_RESET' =>			$lang['CI_reset'],
	'L_RANDOM_TITLE' =>		$lang['CI_title_random_option'],
	'L_RANDOM' =>			$lang['CI_random'],
	'L_RANDOM_EXPLAIN' =>		$lang['CI_random_explain'],
	'L_MANUAL_ORDER' =>		$lang['CI_manual_order'],
	'L_MANUAL_ORDER_EXPLAIN' =>	$lang['CI_manual_order_explain'],
	'L_RANDOM_ORDER' =>		$lang['CI_random_order'],
	'L_RANDOM_ORDER_EXPLAIN' =>	$lang['CI_random_order_explain']
));

//
// On affiche les deux classements
//
for ( $b = 0; $b < 2; $b++ )
{
	// Si le classement dans la base de donnée n'est pas détecté dans le tableau des modules, alors on affiche une erreur de coruption
	if ( ! @array_key_exists(strtolower($classement_config['CI_classement_' . $b]), $classement_module) ) 
	{
		message_die(GENERAL_ERROR, 'Les données du classement sont corrompues, vérifiez la table ' . $table_prefix . 'classement_table', '', __LINE__, __FILE__);
	}

	$value_desactivate_yes = 	(  $classement_config['CI_desactivate_' . $b] ) ? 'checked="checked"' : '';
	$value_desactivate_no = 	( !$classement_config['CI_desactivate_' . $b] ) ? 'checked="checked"' : '';
	$value_position_up = 		(  $classement_config['CI_position_' . $b] ) ? 'checked="checked"' : '';
	$value_position_down = 		( !$classement_config['CI_position_' . $b] ) ? 'checked="checked"' : '';
	$value_page_all = 		(  $classement_config['CI_page_' . $b] ) ? 'checked="checked"' : '';
	$value_page_index = 		( !$classement_config['CI_page_' . $b] ) ? 'checked="checked"' : '';
	$value_random_yes = 		(  $classement_config['CI_random_' . $b] ) ? 'checked="checked"' : '';
	$value_random_no = 		( !$classement_config['CI_random_' . $b] ) ? 'checked="checked"' : '';
	$value_asc = 			( $classement_config['CI_order_' . $b] == 'asc' ) ? 'selected="selected"' : '';
	$value_desc = 			( $classement_config['CI_order_' . $b] == 'desc' ) ? 'selected="selected"' : '';

	//
	// on créé la liste de classement
	reset($classement_module);
	$i = 1;
	$classement_list = '<select name="CI_classement_' . $b . '">';
	while ( list($key, $value) = each($classement_module) )
	{
		$classement_selected = ( $key == $classement_config['CI_classement_' . $b] ) ? 'selected="selected"' : '';
		$classement_list .= '<option value="' . $key . '"' . $classement_selected . '>' . $i . '- ' . $value . '</option>';
		$i++;
	}

	$template->assign_block_vars('bloc', array(
		'L_BLOC_TITLE' =>		$lang['CI_bloc_' . $b],

		'S_RANDOM_YES' =>		$value_random_yes,
		'S_RANDOM_NO' =>		$value_random_no,
		'S_POSITION_UP' =>	$value_position_up,
		'S_POSITION_DOWN' =>	$value_position_down,
		'S_PAGE_ALL' =>		$value_page_all,
		'S_PAGE_INDEX' =>		$value_page_index,
		'S_ASC' =>			$value_asc,
		'S_DESC' =>			$value_desc,
		'S_LIMIT' =>		intval($classement_config['CI_limit_' . $b]),
		'S_DESACTIVATE_YES' =>	$value_desactivate_yes,
		'S_DESACTIVATE_NO' =>	$value_desactivate_no,
		'S_MANUAL_ORDER' =>	$classement_config['CI_manual_order_' . $b],
		'S_RANDOM_ORDER' =>	$classement_config['CI_random_order_' . $b],

		'BLOC_ID' =>		$b,
		'CLASSEMENT_LIST' => 	$classement_list
	));

	// on affiche le bloc de soumission si on est en train d'afficher le second bloc
	if ( $b )
	{
		$template->assign_block_vars('bloc.submit_bloc', array());
	}
}

$template->pparse("body");

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

?>