<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }

if (!empty($_GET['cds'])) {
	if (!empty($_GET['nom']) && !empty($_GET['race']) && !empty($_GET['mdp']) && !empty($_GET['mail']) && !empty($_GET['ti']) && isset($_GET['placement'])) {
		//file_log('inscription : login = '.$_POST['HB_login'].' ; password = '.$_POST['HB_password'], 1);
		if ($_GET['cds'] == sha1($_GET['nom'].'$'.$_GET['race'].'£'.$_GET['mdp'].'#'.$_GET['mail'].'ß'.$_GET['ti'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$_GET['placement'])) {
			$pseudo = $_GET['nom'];
			$mdp = mdp($pseudo, $_GET['mdp']);
			$alea = $mdp[1];
			$mdp = $mdp[0];
			$race = $_GET['race'];
			$mail = $_GET['mail'];
			$ti = $_GET['ti'];

			$base = new bdd();
			$base->connexion();
			$base->db();

			$base->escape($pseudo);
			$base->escape($mdp);
			$base->escape($race);
			$base->escape($mail);
			$base->escape($ti);

			$base->query("SELECT id FROM $table_user WHERE pseudo = '$pseudo';");
			if ($base->num_rows) {
				$template->assign('message','Votre compte est déjà créé sur ce serveur !');
				$template->assign('couleur','red');
				$template->display('cms/erreur.tpl');
				exit;
			}

			//Création de l'utilisateur
			$base->query("INSERT INTO $table_user (pseudo, mdp, mdp_var, race, mail, last_ip, time_inscription) VALUES ('$pseudo', '$mdp', '$alea', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."');");

			//Création des bases de la planète
			$image = mt_rand(1,15);
			$cases = 225;
			$queryUser = $base->unique_query("SELECT * FROM $table_user WHERE pseudo = '$pseudo';");
			if (empty($queryUser)) {
				$template->assign('message','Une erreur est survenue lors de la création de votre compte sur le serveur.<br /><br />Si le problème perciste, contactez un administrateur.');
				$template->assign('couleur','red');
				$template->display('cms/erreur.tpl');
				exit;
			}
			$id_user = $queryUser['id'];
			$time = time();

			//Recherche d'une planète disponible
			if (empty($_GET['placement'])) {
				$planete_trouvee = false;
				while (!$planete_trouvee) {
					$galaxie = mt_rand(1, MAX_AMAS);
					$ss = mt_rand(1, MAX_SYSTEME);
					$pos = mt_rand(1, MAX_PLANETE);

					//Test pour savoir si la planète est déjà habitée
					$base->query("SELECT id FROM $table_planete WHERE galaxie='$galaxie' AND ss='$ss' AND position='$pos'");
					if($base->num_rows) $planete_trouvee = false;
					else $planete_trouvee = true;
				}

				$base->query("INSERT INTO $table_planete (id_user, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hash_planete) VALUES ('$id_user', 'Planète mère', '$galaxie', '$ss', '$pos', '$image', '$cases', '$time', '1000', '700', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
			}
			else {
				$placement = $_GET["placement"];
				$base->escape($placement);
				$placement_joueur = $base->unique_query("SELECT * FROM $table_user WHERE pseudo = '$placement';");
				if (!$placement_joueur && !isset($sess->values['forceInscript'])) {
					$sess->values['forceInscript'] = true;
					$sess->put();
					$template->assign('message','Le joueur à côté duquel vous souhaitez être placé n\'est pas encore ou plus inscrit sur ce serveur.<br /><br />Si vous ne souhaitez plus être placé à ses côtés, rechargez la page.');
					$template->assign('couleur','red');
					$template->display('cms/erreur.tpl');
					exit;
				}
				if (!isset($sess->values['forceInscript'])) {
					$placement_planetes = $base->query("SELECT * FROM $table_planete WHERE id_user = '".$placement_joueur["id"]."'");
					$planete_trouvee = false;
					$decale = 0;
					while (!$planete_trouvee) {
						for($i = 0; $i < $base->num_rows ; $i++){
							$galaxie = $placement_planetes[$i]['galaxie'];
							$ss = $placement_planetes[$i]['ss'] + $decale;
							if ($ss >= MAX_SYSTEME) break;
							for ($j = 1; $j <= MAX_PLANETE ; $j++) {
								$base->query("SELECT * FROM $table_planete WHERE galaxie='$galaxie' AND ss='$ss' AND position='$j'");
								if(!$base->num_rows) {
									$planete_trouvee = true;
									$blk_galaxie = $galaxie;
									$blk_ss = $ss;
									$blk_pos = $j;
									break;
								}
							}
							if ($planete_trouvee) break;
						}
						$decale++;
						if ($ss >= MAX_SYSTEME) break;
					}

					if (!$planete_trouvee) $impplac = true;
				}

				if (!$planete_trouvee || ($planete_trouvee && !empty($sess->values['forceInscript']))) {
					while (!$planete_trouvee) {
						$blk_galaxie = mt_rand(1, MAX_AMAS);
						$blk_ss = mt_rand(1, MAX_SYSTEME);
						$blk_pos = mt_rand(1, MAX_PLANETE);

						//Test pour savoir si la planète est déjà habitée
						$base->query("SELECT id FROM $table_planete WHERE galaxie='$blk_galaxie' AND ss='$blk_ss' AND position='$blk_pos'");
						if($base->num_rows) $planete_trouvee = false;
						else $planete_trouvee = true;
					}
				}
				$base->query("INSERT INTO $table_planete (id_user, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hash_planete) VALUES ('$id_user', 'Planète mère', '$blk_galaxie', '$blk_ss', '$blk_pos', '$image', '$cases', '$time', '1000', '700', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
			}
			$base->deconnexion();

			if (!empty($impplac)) {
				$template->assign('message','Impossible de trouver une planète proche du joueur près duquel vous vouliez être placé.<br />Vous avez été placé aléatoirement.');
				$template->assign('couleur','red');
				$template->display('cms/erreur.tpl');
				exit;
			}
			else {
				$template->assign('message','Vous pouvez maintenant vous connecter sur ce serveur !');
				$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 3500);</script>');
				$template->assign('couleur','green');
				$template->display('cms/erreur.tpl');
				exit;
			}
		}
		else {
			$template->assign('message','Impossible d\'authentifier votre inscription !<br /><br />Si le problème perciste, contactez un administrateur.');
			$template->assign('couleur','red');
			$template->display('cms/erreur.tpl');
			exit;
		}
	}
	else {
		$template->assign('message','Impossible de terminer votre inscription, il manque des données !<br /><br />Si le problème perciste, contactez un administrateur.');
		$template->assign('couleur','red');
		$template->display('cms/erreur.tpl');
		exit;
	}
}
else header('Location: ./');
?>