<?php 

/******************************
fonctions en rapport avec la 
base de donnee
******************************/

//verifie l'integrite du login
//renvoie le message d'erreur ou bien '' si tout va bien
function checkLogin($login)
{
	if (!isset($login)) return 'Le login est inexistant';
	
	if (trim($login) != $login) return 'Le login contient des espaces';
	
	if (pg_escape_string($login) != $login) return 'Le login contient des caracteres interdits';
	//strip_tags( ---->idem que pg_escape mais moins bien
	
	if (empty($login) || strlen($login)<2 || strlen($login)>8)
		return 'Le login ou le mot de passe sont vides ou trop petits ou trop grand';
	
	return '';
}

//verifie l'integrite du mot de passe
//renvoie le message d'erreur ou bien '' si tout va bien
function checkPassword($password)
{
	if (!isset($password)) return 'Le mot de passe est inexistant';
	
	if (trim($password) != $password) return 'Le mot de passe contient des espaces';
	
	if (pg_escape_string($password) != $password) return 'Le mot de passe contient des caracteres interdits';
	
	if (empty($password) || strlen($password)<2 || strlen($password)>8)
		return 'Le login ou le mot de passe sont vides ou trop petits ou trop grand';
	
	return '';
}

//verifie si le login et le mot de passe sont bien dans la base de donnee
//renvoie un tableau avec :
//-l'id du joueur dans [0]
//-le message d'erreur ou bien '' dans [1]
function checkIfUserExists($dbConnexion, $login, $password) {

	$cryptedPassword = md5($password);
	
	$testSameLogin = bdd_simpleQuery($dbConnexion,"SELECT COUNT (user_login) FROM users WHERE user_login='".$login."' AND user_pass='".$cryptedPassword."'");
	
	if ($testSameLogin > 1)
		return array (-1,'Aheum big probleme : vous etes plusieurs fois inscrit dans la table. Contactez l\'administrateur.');
	else if ($testSameLogin < 1)
		return array (-1,'Login ou mot de passe erron&eacute;.');
	
	return array(bdd_simpleQuery($dbConnexion,"SELECT user_id FROM users WHERE user_login='$login'"),'');
}

//verifie si le login est pas deja dans la base de donnee et si le login et le mot de passe sont valides
//renvoie une chaine de caracteres avec le probleme rencontre ou bien une chaine vide si tout va bien
function checkLoginAndPassword($dbConnexion, $login, $password)
{
	$loginRes = checkLogin($login);
	$passwordRes = checkPassword($password);
	
	if ($loginRes!='') return $loginRes;
	if ($passwordRes!='') return $passwordRes;
	
	//-----------------
	
	$queryString = "SELECT COUNT (user_login) FROM users WHERE user_login='".$login."'";
	//echo $queryString;
	$queryNbSameLogin =pg_query($dbConnexion, $queryString);
	//echo $queryNbSameLogin;
	$testSameLogin= pg_fetch_row($queryNbSameLogin);
	if ($testSameLogin[0] > 1)
		return 'Aheum big probleme : ce login existe plusieurs fois dans la table. Contactez l\'administrateur.';
	if ($testSameLogin[0] == 1)
		return 'Ce login existe deja. Choisissez-en un autre.';
	
	return '';
}


//verifie si la guilde est deja dans la base de donnee et si elle est valide
//renvoie une chaine de caracteres avec le probleme rencontre ou bien une chaine vide si tout va bien
function checkGuild($dbConnexion, $guild)
{
	
	if (!isset($guild))
		return 'la guilde est inexistant';

	$guild = trim($guild);
	
	$guild = pg_escape_string($guild);//strip_tags( ---->idem que pg_escape mais moins bien
	
	if (empty($guild) || strlen($guild)<2 || strlen($guild)>16)
		return 'le nom de la guilde est trop petit ou trop grand';

	//-----------------
	
	$queryString = "SELECT COUNT (user_guild_name) FROM users WHERE user_guild_name='".$guild."'";
	//echo $queryString;
	$queryNbSameLogin =pg_query($dbConnexion, $queryString);
	//echo $queryNbSameLogin;
	$testSameLogin= pg_fetch_row($queryNbSameLogin);
	if ($testSameLogin[0] > 1)
		return 'Aheum big probleme : ce nom de guilde existe plusieurs fois dans la table. Contactez l\'administrateur.';
	if ($testSameLogin[0] == 1)
		return 'Ce nom de guilde existe deja. Choisissez-en un autre.';
	
	return '';
}






//renvoie le nombre de joueurs inscrits
function getNbRegisteredPlayers ($dbConnexion)
{
	$queryString = "SELECT COUNT (user_login) FROM users";
	$queryResult = pg_query($dbConnexion, $queryString);
	$result = pg_fetch_row($queryResult);
	
	return $result[0];
}

//inscrit un nouveau joueur
//affiche une erreur si la requete provoque une erreur
function registerPlayer(
	$dbConnexion, 
	$login,$password,$mail,
	$guild,$guildColor,$fileEmblem,
	$mimichant_name,$mimichant_description,$mimichant_sex,
	$mimichant_head,$mimichant_ears,$mimichant_corps,$mimichant_tail,$mimichant_color,
	$mimichant_strength, $mimichant_const, $mimichant_dext, $mimichant_psy)
{
	
	$dateRegistration = date('Y-m-d H:i:s');//2003/05/03 21:02:44
	
	//on reverifie le login et le password, ca coute rien et c'est plus sur
	$verif = checkLoginAndPassword($dbConnexion, $login, $password);
	if ($verif != "") die($verif);
	
	$cryptedPassword = md5($password);
	
	/*****
	requete 1 : remplir table users
	*****/
	$queryString = "
INSERT INTO users (
	user_id, user_login, user_pass,
	user_mail, user_guild_name, user_guild_color, user_guild_infos,
	user_guild_master_id,
	user_date_crea, user_last_connect, 
	user_money, user_guild_emblem
)
VALUES (
	DEFAULT, '$login', '$cryptedPassword',
	'$mail','$guild', '$guildColor', 'aucune info',
	DEFAULT, 
	'$dateRegistration', '$dateRegistration',
	DEFAULT, '$fileEmblem'
)";
	
	bdd_verySimpleQuery($dbConnexion, $queryString);
	
	/*****
	requete 2 : recuperer l'id de l'user fraichement cree
	*****/
	
	$id_user = bdd_simpleQuery($dbConnexion,"SELECT user_id FROM users WHERE user_login='$login'");
	
	/*****
	requete 3 : remplir table characters (creation mimichant)
	*****/
	$queryString = "
INSERT INTO characters ( 
	user_id ,
	char_name, char_infos, char_sex, 
	char_head, char_ears, char_corps, char_tail, char_skincolor,
	char_strength, char_const, char_dext, char_psy
)
VALUES (
	'$id_user',
	'$mimichant_name','$mimichant_description','$mimichant_sex',
	'$mimichant_head','$mimichant_ears','$mimichant_corps','$mimichant_tail','$mimichant_color',
	'$mimichant_strength','$mimichant_const','$mimichant_dext','$mimichant_psy')";
	bdd_verySimpleQuery($dbConnexion, $queryString);
}






//renvoie des infos sur le joueur (sous forme de chaine de caracteres contenant du xhtml)
function getPlayerInfos($dbConnexion, $login) {

	$queryString = "SELECT user_login, user_pass, user_mail, user_guild_name, user_guild_color, user_guild_infos,user_date_crea,user_last_connect, user_money, user_guild_emblem FROM users WHERE user_login='$login'";
	$res = pg_query($dbConnexion, $queryString);
	if (!$res) die('Il semble y avoir un probl&egrave;me avec la base de donn&eacute;es, due &agrave; la requ&egrave;te :'.$queryString);
	$result = pg_fetch_row($res);
	
	$tmpstring = "
		<ul>
			<li>Login : $result[0]</li>
			<li>Adresse mail : $result[2]</li>
			<li>Nom de guilde : $result[3]</li>
			<li>Couleur de guilde : <div style=\"background-color: #$result[4];width: 16px;height: 16px;\" ></div></li>
			<li>Infos sur la guilde : $result[5]</li>
			<li>Date de cr&eacute;tion du joueur : $result[6]</li>
			<li>Date de derni&egrave;re connexion du joueur : $result[7]</li>
			<li>Argent du joueur dans la banque : $result[8]</li>
			<li>Embl&egrave;me de la guilde : <img src=\"$result[9]\" alt=\"(image embleme)\" /></li>
		</ul>
		";
	
	return $tmpstring;
}

//met a jour un joueur
//affiche une erreur si la requete provoque une erreur
function updatePlayer(
	$dbConnexion, 
	$id,$login,$password,$mail,
	$guildName,$guildColor,$guildInfos,$fileEmblem)
{
	$queryString = "UPDATE users SET user_login='$login', ";
	if ($password != '')
		$queryString .= "user_pass='$password', ";
	$queryString .= " user_mail='$mail', user_guild_name='$guildName', ";
	$queryString .= " user_guild_color='$guildColor', user_guild_infos='$guildInfos', user_guild_emblem='$fileEmblem' WHERE user_id='$id'";
	
	bdd_verySimpleQuery($dbConnexion,$queryString);
}

//effectue une requete et renvoie la premiere valeur du resultat
function bdd_simpleQuery($dbConnexion,$queryString)
{
	$res = pg_query($dbConnexion, $queryString);
	if (!$res) die('Il semble y avoir un probl&egrave;me avec la base de donn&eacute;es, due &agrave; la requ&egrave;te :'.$queryString);
	$result = pg_fetch_row($res);
	
	return $result[0];
}

//effectue une requete
function bdd_verySimpleQuery($dbConnexion,$queryString)
{
	$res = pg_query($dbConnexion, $queryString);
	if (!$res) die('Il semble y avoir un probl&egrave;me avec la base de donn&eacute;es, due &agrave; la requ&egrave;te :'.$queryString);
}

//met a jour la date de derniere connexion
function updateLastConnect($dbConnexion,$userId) {

	$currentDate = date('Y-m-d H:i:s');
	$queryString = "UPDATE users SET user_last_connect='$currentDate' WHERE user_id='$userId'";
	bdd_verySimpleQuery($dbConnexion,$queryString);
}

/*
//OBSOLETE
function getMimichantBodyCorrespondingInteger ($string) {

	switch ($string) {
	
	case 'oreille/Lapin-Oreille-Rose.gif':case 'tete/Lapin-Tete-Rose.gif':case 'corps/Lapin-Corps-Rose.gif':case 'queue/Renard-Queue-Roux.gif':
		return 0;
	case 'oreille/Lapin-Oreille-Brun.gif':case 'tete/Lapin-Tete-Brun.gif':case 'corps/Lapin-Corps-Brun.gif':case 'queue/Renard-Queue-Gris.gif':
		return 1;
	case 'oreille/Lapin-Oreille-Gris.gif':case 'tete/Lapin-Tete-Gris.gif':case 'corps/Lapin-Corps-Gris.gif':case 'queue/Renard-Queue-Brun.gif':
		return 2;
	case 'oreille/Lapin-Oreille-Brun.gif':case 'tete/Lapin-Tete-Brun.gif':case 'corps/Lapin-Corps-Brun.gif':case 'corps/Lapin-Corps-Brun.gif':
		return 3;
	case 'oreille/Cochon-Oreille-Bleu.gif':case 'tete/Canard-Tete-Bleu.gif':case 'corps/Canard-Corps-Bleu.gif':case 'queue/Cochon-Queue-Bleu.gif':
		return 4;
	default: return 5;
	}
}

//NE PAS UTILISER, UTILISER die() A LA PLACE
function erreur($chaine)
{
	echo '<p style="color: black;background-color: white;">Erreur : '.$chaine.'</p>',"\n";
	exit;
}

*/

?>
