691 lines
36 KiB
PHP
Executable File
691 lines
36 KiB
PHP
Executable File
<?php
|
|
session_start();
|
|
if(isset($_SESSION['type']) and isset($_SESSION['id'])) {
|
|
$type=$_SESSION['type'];
|
|
$id=$_SESSION['id'];
|
|
|
|
include("mysql_compat.php");
|
|
include ("conf.php");
|
|
$db_connection=mysql_connect($db_host,$db_user,$password);
|
|
|
|
|
|
if($type=='joueur') {
|
|
$requete="SELECT id_joueur, nom, prenom FROM joueur WHERE id_joueur='$id'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$joueur=mysqli_fetch_object($reponse);
|
|
$id_joueur_log=$joueur->id_joueur;
|
|
$adm=0;
|
|
}
|
|
else {
|
|
$requete="SELECT id_joueur, id_club FROM admin_resa WHERE id_admin='$id'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$admin=mysqli_fetch_object($reponse);
|
|
$requete="SELECT id_joueur, nom, prenom FROM joueur WHERE id_joueur='$admin->id_joueur'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$joueur=mysqli_fetch_object($reponse);
|
|
$id_joueur_log=$joueur->id_joueur;
|
|
$adm=1;
|
|
}
|
|
|
|
$club=$_POST['club'];
|
|
$jour=$_POST['jour'];
|
|
$mois=$_POST['mois'];
|
|
$annee=$_POST['annee'];
|
|
$type_resa=$_POST['type'];
|
|
$nom_resa=$_POST['motif'];
|
|
$adverse=$_POST['adverse'];
|
|
$tel=$_POST['tel'];
|
|
$invite_adv=$_POST['invite'];
|
|
$heure_debut=$_POST['heure_resa_debut'];
|
|
$min_debut=$_POST['min_resa_debut'];
|
|
$heure_fin=$_POST['heure_resa_fin'];
|
|
$min_fin=$_POST['min_resa_fin'];
|
|
|
|
if($id_joueur_log!="" and $club!="" and $mois!="" and $jour!="" and $annee!="" and $heure_debut!="" and $min_debut!="" and $heure_fin!="" and $min_fin!="") {
|
|
if($jour<10 and strlen($jour)==1) {$jour="0".$jour;}
|
|
if($mois<10 and strlen($mois)==1) {$mois="0".$mois;}
|
|
|
|
/* Si le joueur peut réserver un terrain */
|
|
$resa_ok=0;
|
|
/* Si le joueur est invité */
|
|
$invite_ok=0;
|
|
/* Controle des quotas de réservations */
|
|
$flag=1;
|
|
/* Tableau contenant les 2 joueurs */
|
|
$joueurs_tab=array();
|
|
/* Temps d'attente avant redirection */
|
|
$secondes=3;
|
|
|
|
include("constantes.php");
|
|
|
|
/* Controle si joueur licencié dans le club ou invité */
|
|
/* Membre licencié */
|
|
/* Controle si le joueur est invité */
|
|
$temp="Invité";
|
|
$temp2="MembreLicencié";
|
|
*/$temp="Invité";*/
|
|
/*$temp2="MembreLicencié";*/
|
|
$requete="SELECT id_compte, solde, cumul FROM compte WHERE id_joueur='$id_joueur_log' AND id_club='$club' AND statut='$temp2'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe_membre=mysqli_num_rows($reponse);
|
|
if($existe_membre > 0) {
|
|
$compte_membre=mysqli_fetch_object($reponse);
|
|
$resa_ok=1;
|
|
$solde_log=$compte_membre->solde;
|
|
$cumul=$compte_membre->cumul;
|
|
array_push($joueurs_tab, $id_joueur_log);
|
|
}
|
|
else {
|
|
$requete="SELECT solde, id_compte, cumul FROM compte WHERE id_joueur='$id_joueur_log' AND id_club='$club' AND statut='$temp'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe_invite=mysqli_num_rows($reponse);
|
|
if($existe_invite > 0) {
|
|
$compte_invite=mysqli_fetch_object($reponse);
|
|
$cumul=$compte_invite->cumul;
|
|
array_push($joueurs_tab, $id_joueur_log);
|
|
$invite_ok=1; $resa_ok=1;
|
|
}
|
|
}
|
|
|
|
/* Pour les joueurs administrateurs */
|
|
if($adm==0) {
|
|
$requete="SELECT id_admin FROM admin_resa WHERE id_joueur='$id_joueur_log' AND id_club='$club'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe=mysqli_num_rows($reponse);
|
|
if($existe > 0) {
|
|
$adm=1;
|
|
$resa_ok=1;
|
|
}
|
|
}
|
|
|
|
/* Calcul des timestamp unix pour controle des horaires et controle des horaires*/
|
|
$horaire_debut=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
|
|
$horaire_fin=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
|
|
$horaires_ok=controleHoraires($horaire_debut, $horaire_fin);
|
|
|
|
/* Controle de la licence du joueur adverse ainsi que son inscription au site */
|
|
$id_adverse=0;
|
|
if(($adverse!="" and $tel!="" and $type_resa=='Loisir' and $adm==0) or ($type_resa!='Loisir' and $adverse!="" and $tel!="")) {
|
|
/* Si le tel est ok, recup des ids des joueurs */
|
|
if(strlen($tel)==10) {
|
|
/* Encodage chaine UTF8 */
|
|
$mb_licence="MembreLicencié";
|
|
$mb_invite=="Invité";
|
|
/*$mb_licence="MembreLicencié";*/
|
|
/*$mb_invite=="Invité";*/
|
|
/* Découpage du num tel */
|
|
$groupe1=substr($tel,0,2);
|
|
$groupe2=substr($tel,2,2);
|
|
$groupe3=substr($tel,4,2);
|
|
$groupe4=substr($tel,6,2);
|
|
$groupe5=substr($tel,8,2);
|
|
$num_tel="$groupe1 $groupe2 $groupe3 $groupe4 $groupe5";
|
|
$requete="SELECT id_joueur FROM telephone WHERE numero='$num_tel' AND id_joueur <> '$id_joueur_log'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$nb_joueurs=mysqli_num_rows($reponse);
|
|
if($nb_joueurs > 1) {
|
|
while($joueurs=mysqli_fetch_object($reponse)) {
|
|
$requete="SELECT j.nom, j.prenom, j.id_joueur FROM joueur j, compte c ";
|
|
$requete.="WHERE j.id_joueur='$joueurs->id_joueur' AND j.id_joueur=c.id_joueur AND c.id_club='$club' AND (c.statut='$mb_licence' OR c.statut='$mb_invite') ORDER BY j.id_joueur ASC";
|
|
$rep=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$joueur=mysqli_fetch_object($rep);
|
|
$nom_prenom="$joueur->nom $joueur->prenom";
|
|
/* si le controle est ok */
|
|
if(strpos($nom_prenom, $adverse) === false) {
|
|
$id_adverse=$joueur->id_joueur;
|
|
/* On sort de la boucle */
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if($nb_joueurs == 1) {
|
|
$joueurs=mysqli_fetch_object($reponse);
|
|
$id_adverse=$joueurs->id_joueur;
|
|
}
|
|
else {
|
|
$requete="SELECT id_joueur FROM joueur WHERE numero_fft='INVITE00'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe=mysqli_num_rows($reponse);
|
|
if($existe>0) {
|
|
$adverse_bdd=mysqli_fetch_object($reponse);
|
|
$id_adverse=$adverse_bdd->id_joueur;
|
|
}
|
|
}
|
|
array_push($joueurs_tab, $id_adverse);
|
|
}
|
|
}
|
|
else if($type_resa=='Invite' and empty($nom_resa) and $id_adverse==0) {
|
|
$resa_ok=-2;
|
|
}
|
|
else if(($adverse=="" or $tel=="") and $type_resa=='Loisir' and $adm==0) {
|
|
$resa_ok=-1;
|
|
}
|
|
|
|
/* controle des reservations hors championnat (durant cette journee) */
|
|
if($resa_ok==1) {
|
|
/* Pour le joueur loggé et éventuellement pour le joueur adverse s'il est renseigné */
|
|
for($i=0;$i<count($joueurs_tab);$i++) {
|
|
$duree_totale=0;
|
|
/* Détermine si le joueur est admin */
|
|
$requete="SELECT id_admin FROM admin_resa WHERE id_joueur='$joueurs_tab[$i]' AND id_club='$club'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$joueur_adm=mysqli_num_rows($reponse);
|
|
/* Différent du joueur invité, n'est pas un joueur admin et le flag est à 1 */
|
|
if($joueurs_tab[$i] != 1693 and $joueur_adm == 0 and $flag==1) {
|
|
/* Controle du type de la réservation pour les niveaux d'accès */
|
|
$requete="SELECT * FROM joueurs_groupe jg, niveau_acces na WHERE na.id_groupe=jg.id_groupe AND na.id_club='$club' AND jg.id_joueur='$joueurs_tab[$i]'";
|
|
$rep=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe_niveau=mysqli_num_rows($rep);
|
|
if($existe_niveau > 0) {
|
|
$rubriques=array();
|
|
/* Détecte les types de réservation que la personne a le droit de réserver */
|
|
while($niveau_acces=mysqli_fetch_object($reponse)) {
|
|
$req="SELECT rr.id_rubrique, rr.nom FROM rubriques_groupe rg, rubriques_resa rr";
|
|
$req.=" WHERE rg.id_groupe='$niveau_acces->id_groupe' AND rr.id_rubrique=rg.id_rubrique";
|
|
$rep=mysqli_query($db_connection, $req) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
while($rubrique=mysqli_fetch_object($rep)) {
|
|
if(! in_array($rubrique->id_rubrique, $rubriques)) {
|
|
array_push($rubriques, $rubrique->id_rubrique);
|
|
}
|
|
}
|
|
}
|
|
/* Récupère les droits visible par tous le monde */
|
|
$requete="SELECT id_rubrique FROM rubriques_resa WHERE id_club='$club' AND visible_joueur='oui'";
|
|
$rep=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
while($rubrique=mysqli_fetch_object($rep)) {
|
|
if(! in_array($rubrique->id_rubrique, $rubriques)) {
|
|
array_push($rubriques, $rubrique->id_rubrique);
|
|
}
|
|
}
|
|
/* Rubriques autres que celle par défaut */
|
|
if(is_numeric($type_resa)) {
|
|
if(! in_array($type_resa, $rubriques)) {
|
|
$flag=-7;
|
|
}
|
|
}
|
|
/* Rubriques par défaut */
|
|
else {
|
|
$requete="SELECT id_rubrique FROM rubriques_resa WHERE nom='$type_resa' AND id_club='$club'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$rubrique=mysqli_fetch_object($reponse);
|
|
if(! in_array($rubrique->id_rubrique, $rubriques)) {
|
|
$flag=-7;
|
|
}
|
|
}
|
|
}
|
|
/* Recherche des options sur les quotas en BDD */
|
|
$requete="SELECT * FROM quota_resa WHERE id_club='$club'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe=mysqli_num_rows($reponse);
|
|
if($existe==0) {
|
|
$requete="INSERT INTO quota_resa(id_club) VALUES('$club')";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$requete="SELECT * FROM quota_resa WHERE id_club='$club'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
}
|
|
$quota=mysqli_fetch_object($reponse);
|
|
/* LOISIR */
|
|
/* Nombre de réservations dans la journée en cours */
|
|
if($quota->nb_resa_loisir_jour > -1 and $flag==1 and $type_resa=='Loisir') {
|
|
$date="$annee-$mois-$jour";
|
|
$requete="SELECT id_reservation FROM reservation r, reservable t WHERE r.id_reservable=t.id_reservable AND t.id_club='$club' AND r.type='Loisir' AND r.id_joueur='$joueurs_tab[$i]' AND date_resa='$date'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$nb=mysqli_num_rows($reponse);
|
|
if($quota->nb_resa_loisir_jour <= $nb) {
|
|
$flag=-1;
|
|
}
|
|
}
|
|
/* Durée totale des réservations par jour */
|
|
if($quota->duree_resa_jour > -1 and $flag==1 and $type_resa=='Loisir') {
|
|
$date="$annee-$mois-$jour";
|
|
$duree_total=0;
|
|
$requete="SELECT id_reservation, heure_resa_deb, heure_resa_fin FROM reservation r, reservable t WHERE r.id_reservable=t.id_reservable AND t.id_club='$club' AND r.type='Loisir' AND r.id_joueur='$joueurs_tab[$i]' AND date_resa='$date'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$nb=mysqli_num_rows($reponse);
|
|
if($nb > 0) {
|
|
while($resa=mysqli_fetch_object($reponse)) {
|
|
list($h_deb, $m_deb, $s_deb)=explode(":", $resa->heure_resa_deb);
|
|
$debut=mktime($h_deb, $m_deb, $s_deb, $mois, $jour, $annee);
|
|
list($h_fin, $m_fin, $s_fin)=explode(":", $resa->heure_resa_fin);
|
|
$fin=mktime($h_fin, $m_fin, $s_fin, $mois, $jour, $annee);
|
|
$duree_totale+=($fin - $debut);
|
|
}
|
|
}
|
|
$duree_heure=round($duree_totale / 3600);
|
|
if($nb > 0 and $quota->duree_resa_jour < $duree_heure) {
|
|
$flag=-4;
|
|
}
|
|
}
|
|
/* Durée de la réservation en cours */
|
|
if($quota->duree_resa_loisir > -1 and $flag==1 and $type_resa=='Loisir') {
|
|
$date="$annee-$mois-$jour";
|
|
$duree=$horaire_fin - $horaire_debut;
|
|
$duree_heure=$duree / 3600;
|
|
if($quota->duree_resa_loisir < $duree_heure) {
|
|
$flag=-2;
|
|
}
|
|
}
|
|
/* Pas de nouvelle réservation tant que la dernière résa non effectuée ou pas annulé */
|
|
if($quota->avant_resa > 0 and $flag==1 and $type_resa=='Loisir') {
|
|
$date_now=date("Y-m-d", time());
|
|
$requete="SELECT id_reservation FROM reservation WHERE id_joueur='$joueurs_tab[$i]' AND date_resa >='$date_now' ORDER BY date_resa DESC";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe=mysqli_num_rows($reponse);
|
|
if($existe > 0) {
|
|
$flag=-6;
|
|
}
|
|
}
|
|
/* Nombre de jours séparant deux réservations */
|
|
if($quota->nb_jours_resa > 0 and $flag==1) {
|
|
$date_resa="$annee-$mois-$jour";
|
|
list($h_deb, $m_deb, $s_deb)=explode(":", $resa->heure_resa_deb);
|
|
$ts_resa=mktime($h_deb, $m_deb, $s_deb, $mois, $jour, $annee);
|
|
/* Jour */
|
|
$ts_min=$debut - (3600 * 24 * $quota->nb_jours_resa);
|
|
$date_min=Date("Y-m-d", $ts_min);
|
|
$requete="SELECT id_reservation FROM reservation r, reservable t WHERE r.id_reservable=t.id_reservable AND t.id_club='$club' AND r.type='Loisir' AND r.id_joueur='$joueurs_tab[$i]' AND date_resa >= '$date_min' AND date_resa <= '$date_resa'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$nb=mysqli_num_rows($reponse);
|
|
if($nb > 0) {
|
|
$flag=-5;
|
|
}
|
|
}
|
|
/* CHAMPIONNAT */
|
|
/* Nombre de réservations en championnat autorisé par jour */
|
|
if($quota->nb_resa_champ > -1 and $flag==1 and $type_resa=='Championnat') {
|
|
$date="$annee-$mois-$jour";
|
|
$requete="SELECT id_reservation FROM reservation r, reservable t WHERE r.id_reservable=t.id_reservable AND t.id_club='$club' AND r.type='Championnat' AND r.id_joueur='$joueurs_tab[$i]' AND date_resa='$date'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$nb=mysqli_num_rows($reponse);
|
|
if($quota->nb_resa_champ <= $nb) {
|
|
$flag=-3;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* tableau contenant les terrains à reserver */
|
|
if($horaires_ok==1 and $resa_ok==1) {
|
|
$terrain_resa=0;
|
|
$message="";
|
|
|
|
$terrains=$_POST['terrains'];
|
|
|
|
/* Pour chaque terrain contrôler que les heures passent */
|
|
if(count($terrains)==0) {
|
|
$message="<p>Aucun terrain n'a été selectionné. Veuillez recommencer.</p>";
|
|
}
|
|
else {
|
|
$requete="SELECT nb_resa_loisir_jour FROM quota_resa WHERE id_club='$club'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$resa_jour=mysqli_fetch_object($reponse);
|
|
/* Pour chaque terrain */
|
|
for ($i=0;$i<count($terrains);$i++) {
|
|
if(($resa_jour->nb_resa_loisir_jour > 0 and count($terrains) > 1 and $i<$resa_jour->nb_resa_loisir_jour) or ($resa_jour->nb_resa_loisir_jour == -1) or ($resa_jour->nb_resa_loisir_jour > 0 and count($terrains) == 1)) {
|
|
/* Requete si joueur invite ? */
|
|
$invite_ok=0;
|
|
$temp="Invité";
|
|
*/$temp="Invité";*/
|
|
$requete="SELECT solde, id_compte FROM compte WHERE id_joueur='$id_joueur_log' AND id_club='$club' AND statut='$temp'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe_invite=mysqli_num_rows($reponse);
|
|
if($existe_invite > 0) {
|
|
$compte_invite=mysqli_fetch_object($reponse);
|
|
$invite_ok=1;
|
|
}
|
|
/* COntrole si le joueur a assez de jetons pour la réservation en cours */
|
|
if(($invite_ok == 1 and $compte_invite->solde > 0) or ($type_resa=='Invite' and $compte_membre->solde > 0) or $invite_ok==0) {
|
|
$interv_occupe=0;
|
|
$id_terrain=$terrains[$i];
|
|
$requete="SELECT nom FROM reservable WHERE id_reservable='$id_terrain'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$terrain=mysqli_fetch_object($reponse);
|
|
/* controle pour chaque demi-heure */
|
|
$ts_debut=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
|
|
$ts_fin=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
|
|
|
|
$ts_interv=$ts_debut;
|
|
|
|
while($interv_occupe==0 and $ts_interv < $ts_fin) {
|
|
$ts_fin_interv=$ts_interv + (30 * 60);
|
|
$h_interv_deb=date("H:i:00", $ts_interv);
|
|
$h_interv_fin=date("H:i:00", $ts_fin_interv);
|
|
$requete="SELECT id_reservation, heure_resa_deb, heure_resa_fin FROM reservation WHERE date_resa='$annee-$mois-$jour' AND id_reservable='$id_terrain' AND ((heure_resa_deb >= '$h_interv_deb' AND heure_resa_deb<'$h_interv_fin') OR (heure_resa_fin>'$h_interv_deb' AND heure_resa_fin<='$h_interv_fin') OR (heure_resa_deb<='$h_interv_deb' AND heure_resa_fin>='$h_interv_fin'))";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe=mysqli_num_rows($reponse);
|
|
if($existe>0) {
|
|
$interv_occupe=1;
|
|
}
|
|
|
|
$ts_interv=$ts_fin_interv;
|
|
}
|
|
/* si l'intervalle est occupé */
|
|
if($interv_occupe==1) {
|
|
$message="<p>La réservation n'a pas été prise en compte. Le terrain $terrain->nom est occupé à ces horaires ou la réservation n'a pas été validée par l'administrateur !</p>";
|
|
}
|
|
else {
|
|
$terrain_resa=$terrain_resa+1;
|
|
$debut="$heure_debut:$min_debut:00";
|
|
$fin="$heure_fin:$min_fin:00";
|
|
$date="$annee-$mois-$jour";
|
|
/* Positionne le flag de validation */
|
|
if($flag<=0) {
|
|
$val=0;
|
|
}
|
|
else {
|
|
$val=1;
|
|
}
|
|
if(is_numeric($type_resa)) {
|
|
if($id_adverse > 0)
|
|
$requete="INSERT INTO reservation(type, type_reservation, id_joueur, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation, id_joueur_adverse,id_rubriquee) VALUES('Autre', '$nom_resa', '$id_joueur_log', '$debut','$fin','$date', '$id_terrain', '$val','$id_adverse','$type_resa')";
|
|
else
|
|
$requete="INSERT INTO reservation(type, type_reservation, id_joueur, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation,id_rubrique) VALUES('Autre', '$nom_resa', '$id_joueur_log', '$debut','$fin','$date', '$id_terrain', '$val', '$type_resa')";
|
|
}
|
|
else {
|
|
if($id_adverse > 0)
|
|
$requete="INSERT INTO reservation(type, type_reservation, id_joueur, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation, id_joueur_adverse,id_rubrique) VALUES('$type_resa', '$nom_resa', '$id_joueur_log', '$debut','$fin','$date', '$id_terrain', '$val','$id_adverse','0')";
|
|
else
|
|
$requete="INSERT INTO reservation(type, type_reservation, id_joueur, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation,id_rubrique) VALUES('$type_resa', '$nom_resa', '$id_joueur_log', '$debut','$fin','$date', '$id_terrain', '$val','0')";
|
|
}
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
|
|
$requete="SELECT nom,id_club FROM reservable WHERE id_reservable='$id_terrain'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$terrain=mysqli_fetch_object($reponse);
|
|
|
|
/* si le flag est à 0 */
|
|
/* l'administrateur doit autoriser la validation par mail */
|
|
if($flag<=0) {
|
|
/* Message d'information */
|
|
$message="L'administrateur doit autorisé votre réservation par e-mail car";
|
|
if($flag==-1) {
|
|
$message.=" vous avez dépassé le nombre de réservations en Loisir par jour autorisé.";
|
|
}
|
|
else if($flag==-2) {
|
|
$message.=" vous avez dépassé la durée autorisée d'une réservation en Loisir.";
|
|
}
|
|
else if($flag==-3) {
|
|
$message.=" vous avez dépassé la durée maximale autorisée pour une rencontre de championnat pour une journée.";
|
|
}
|
|
else if($flag==-4) {
|
|
$message.=" vous avez dépassé la durée maximale autorisée de réservations en Loisir pour une journée.";
|
|
}
|
|
else if($flag==-5) {
|
|
$message.=" vous avez dépassé le délai maximal en jour qui sépare deux réservations.";
|
|
}
|
|
else if($flag==-6) {
|
|
$message.=" vous n'avez pas effectuée votre réservation précédente.";
|
|
}
|
|
else if($flag==-7) {
|
|
$message.=" vous ne pouvez pas effectuer de réservations dans cette rubrique.";
|
|
}
|
|
$secondes=15;
|
|
|
|
if($flag<0) { $flag=0; }
|
|
$requete="SELECT MAX(id_reservation) FROM reservation";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$resa=mysqli_fetch_array($reponse);
|
|
$id_resa=$resa[0];
|
|
$lien_valide_resa="http://www.tyroltenn.net/valide_resa.php?id_resa=$id_resa&id_joueur=$id_joueur_log&club=$club";
|
|
$lien_annul_resa="http://www.tyroltenn.net/annul_resa.php?id_resa=$id_resa&id_joueur=$id_joueur_log&club=$club";
|
|
$requete="SELECT nom, prenom, e_mail, numero_fft FROM joueur WHERE id_joueur='$id_joueur_log'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$joueur=mysqli_fetch_object($reponse);
|
|
$requete="SELECT numero,type FROM telephone WHERE id_joueur='$id_joueur_log'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$tel=mysqli_fetch_object($reponse);
|
|
$requete="SELECT nom FROM reservable WHERE id_reservable='$id_terrain'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$nom_terrain=mysqli_fetch_object($reponse);
|
|
$texte="Bonjour, \n\n";
|
|
$texte.="Le joueur $joueur->prenom $joueur->nom souhaite reserver un cours dans votre club mais ne peut le faire car il a depasse son quota de reservation.\n";
|
|
$texte.="Le joueur souhaite reserver le terrain $nom_terrain->nom le $jour/$mois/$annee de $heure_debut:$min_debut a $heure_fin:$min_fin.\n\n";
|
|
if($joueur->e_mail!="") {
|
|
$texte.="Le joueur dispose d'une adresse e-mail : $joueur->e_mail.\n\n";
|
|
}
|
|
if($tel->type=='maison') {
|
|
$texte.="Voici le numero de telephone fixe du joueur : $tel->numero.\n\n";
|
|
}
|
|
|
|
if($tel->type=='portable') {
|
|
$texte.="Voici le numero de telephone portable du joueur : $tel->numero.\n\n";
|
|
}
|
|
|
|
$texte.="Voici le lien permettant de valider la reservation : \n\n$lien_valide_resa \n\net le lien permettant d'annuler la reservation :\n\n $lien_annul_resa.\n\n";
|
|
$texte.="Cordialement, \nLe webmaster Tyroltenn";
|
|
|
|
/* Recherche de l'e-mail de l'administrateur */
|
|
$requete="SELECT j.e_mail FROM compte c, joueur j WHERE c.id_club='$club' AND j.e_mail<>'' AND j.id_joueur=c.id_joueur AND c.droit='Administrateur'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$admin=mysqli_fetch_object($reponse);
|
|
$admin_email=$admin->e_mail;
|
|
/* envoi du mail */
|
|
$sujet="Depassement de reservation de $joueur->prenom $joueur->nom";
|
|
|
|
$headers = 'MIME-Version: 1.0' . "\r\n";
|
|
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
|
|
|
|
// Additional headers
|
|
$headers .= "To: $admin_email\r\n";
|
|
$headers .= "From: tennis@airtria.fr\r\n";
|
|
mail($admin_email, $sujet, $texte, $headers);
|
|
|
|
$message.="L'administrateur doit autorisé votre réservation par e_mail car vous avez dépassé le quota de réservations de terrains pour cette journée.";
|
|
/* Message de Log */
|
|
$date_log=date("Y-m-d",time());
|
|
$heure_log=date("H:i:00",time());
|
|
$requete="SELECT MAX(id_reservation) FROM reservation";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$max_resa=mysqli_fetch_array($reponse);
|
|
/* Durée résa */
|
|
$debut_resa=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
|
|
$fin_resa=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
|
|
$duree=$fin_resa-$debut_resa;
|
|
$heure=$duree/3600;
|
|
$min=($duree-($heure*3600))/60;
|
|
if($min<10) { $min="0".$min; }
|
|
$duree_resa="$heure:$min";
|
|
/* Message de log de la forme Type message - joueur - durée - type_résa - message */
|
|
$requete="SELECT nom, prenom FROM joueur WHERE id_joueur='$id_joueur_log'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$joueur=mysqli_fetch_object($reponse);
|
|
if(is_numeric($type_resa)) {
|
|
$req="SELECT nom FROM rubriques_resa WHERE id_rubrique='$type_resa'";
|
|
$reponse=mysqli_query( $db_connection, $req) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$rubrique=mysqli_fetch_object($reponse);
|
|
$type_resa=$rubrique->nom;
|
|
}
|
|
$message_log="Creation - $joueur->nom $joueur->prenom - $jour/$mois/$annee - $terrain->nom - $heure_debut:$min_debut - $duree_resa - $type_resa - $nom_resa - Attente de la validation par un admin";
|
|
$requete="INSERT INTO log_reservation(date,heure,id_reservation,id_joueur,message,id_club) VALUES('$date_log','$heure_log','$max_resa[0]','$id_joueur_log','$message_log','$terrain->id_club')";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
}
|
|
else {
|
|
$secondes=3;
|
|
$message.="<p>La réservation a été prise en compte pour le terrain $terrain->nom.</p>";
|
|
/* Message de Log */
|
|
$date_log=date("Y-m-d",time());
|
|
$heure_log=date("H:i:00",time());
|
|
$requete="SELECT MAX(id_reservation) FROM reservation";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$max_resa=mysqli_fetch_array($reponse);
|
|
/* Durée résa */
|
|
$debut_resa=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
|
|
$fin_resa=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
|
|
$duree=$fin_resa-$debut_resa;
|
|
$heure=$duree/3600;
|
|
$min=($duree-($heure*3600))/60;
|
|
if($min<10) { $min="0".$min; }
|
|
$duree_resa="$heure:$min";
|
|
/* Message de log de la forme Type message - joueur - durée - type_résa - message */
|
|
$requete="SELECT nom, prenom FROM joueur WHERE id_joueur='$id_joueur_log'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$joueur=mysqli_fetch_object($reponse);
|
|
if(is_numeric($type_resa)) {
|
|
$req="SELECT nom FROM rubriques_resa WHERE id_rubrique='$type_resa'";
|
|
$reponse=mysqli_query($db_connection, $req) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$rubrique=mysqli_fetch_object($reponse);
|
|
$type_resa=$rubrique->nom;
|
|
}
|
|
$message_log="Creation - $joueur->nom $joueur->prenom - $jour/$mois/$annee - $terrain->nom - $heure_debut:$min_debut - $duree_resa - $type_resa - $nom_resa - Reservation enregistree";
|
|
$requete="INSERT INTO log_reservation(date,heure,id_reservation,id_joueur,message,id_club) VALUES('$date_log','$heure_log','$max_resa[0]','$id_joueur_log','$message_log','$terrain->id_club')";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
}
|
|
}
|
|
/* Joueur principal */
|
|
/* Si le joueur est invité */
|
|
if($flag==1 and $invite_ok==1 and $compte_invite->solde > 0) {
|
|
/* Calcul de la durée de la réservation */
|
|
$horaire_debut=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
|
|
$horaire_fin=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
|
|
$diff=$horaire_fin-$horaire_debut;
|
|
$jetons=$diff/(3600); /* Nombre d'heures - 1 jeton par heure */
|
|
$solde_actuel=$compte_invite->solde;
|
|
$nouveau_solde=$solde_actuel-$jetons;
|
|
$cumul+=$jetons;
|
|
$requete="UPDATE compte SET solde='$nouveau_solde', cumul='$cumul' WHERE id_compte='$compte_invite->id_compte'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
}
|
|
/* Résa de type Invite, déduire un jeton sur le compte de l'adhérent */
|
|
else if($flag==1 and $type_resa=='Invite' and $compte_membre->solde > 0) {
|
|
/* Calcul de la durée de la réservation */
|
|
$horaire_debut=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
|
|
$horaire_fin=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
|
|
$diff=$horaire_fin-$horaire_debut;
|
|
$jetons=$diff/(3600); /* Nombre d'heures - 1 jeton par heure */
|
|
$solde_actuel=$compte_membre->solde;
|
|
$nouveau_solde=$solde_actuel-$jetons;
|
|
$cumul+=$jetons;
|
|
$requete="UPDATE compte SET solde='$nouveau_solde', cumul='$cumul' WHERE id_compte='$compte_membre->id_compte'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
}
|
|
/* Joueur adverse est-il invité ? */
|
|
if($flag==1 and $id_adverse != 0 and $id_adverse != 1693) {
|
|
/* COntrole si le joueur est invité dans le club */
|
|
$temp="Invité";
|
|
/* $temp="Invité";*/
|
|
$requete="SELECT solde, cumul, id_compte FROM compte WHERE id_joueur='$id_adverse' AND id_club='$club' AND statut='$temp'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$existe_invite=mysqli_num_rows($reponse);
|
|
if($existe_invite > 0) {
|
|
$compte_adverse_invite=mysqli_fetch_object($reponse);
|
|
$horaire_debut=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
|
|
$horaire_fin=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
|
|
$diff=$horaire_fin-$horaire_debut;
|
|
$jetons=$diff/(3600); /* Nombre d'heures - 1 jeton par heure */
|
|
$solde_actuel=$compte_adverse_invite->solde;
|
|
$nouveau_solde=$solde_actuel-$jetons;
|
|
$cumul+=$jetons;
|
|
$requete="UPDATE compte SET solde='$nouveau_solde', cumul='$cumul' WHERE id_compte='$compte_adverse_invite->id_compte'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
if($nouveau_solde <= 0) {
|
|
echo "Votre adversaire n'a plus de jetons. Il devra contacter le club pour recharger son compte.";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if($invite_ok == 1 and $compte_invite->solde <= 0) {
|
|
echo "Vous n'avez plus de jetons disponibles pour cette réservation.<br />";
|
|
}
|
|
else if($type_resa=='Invite' and $compte_membre->solde <= 0) {
|
|
echo "Vous n'avez plus de jetons disponibles pour cette réservation.<br />";
|
|
}
|
|
}
|
|
else {
|
|
echo "<br />Vous ne pouvez pas effectuer plus de $resa_jour->nb_resa_loisir_jour réservations en Loisir par jour.";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/* Les horaires ne sont pas bons */
|
|
else if($horaires_ok==0) {
|
|
$message="Les horaires sont identiques ou l'horaire de fin se trouve avant l'horaire de début.";
|
|
}
|
|
else if($resa_ok == -1) {
|
|
$message="Vous devez avoir un adversaire obligatoire pour les réservations en Loisir !!<br />";
|
|
}
|
|
else if($resa_ok == -2) {
|
|
$message="Vous devez saisir un nom d'adversaire pour les réservations en mode Invité !!<br />";
|
|
}
|
|
else {
|
|
$message="Vous ne pouvez pas effectuer une réservation à une date et une heure dépassées.";
|
|
}
|
|
|
|
$requete="SELECT numero_fft FROM joueur WHERE id_joueur='$id_joueur_log'";
|
|
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."<br>");
|
|
$joueur=mysqli_fetch_object($reponse);
|
|
/* Renvoi vers la page de réservation */
|
|
echo "<html xmlns='http://www.w3.org/1999/xhtml'>";
|
|
echo "<head>";
|
|
echo "<meta http-equiv='content-type' content='text/html; charset=ISO-8859-1' />";
|
|
echo "<meta http-equiv='refresh' content='$secondes; url=resa_bi.php?id_club=$club&jour=$jour&annee=$annee&mois=$mois' />";
|
|
echo "<title>Redirection</title>";
|
|
echo "<meta name='robots' content='noindex,follow' />";
|
|
echo "</head><body>";
|
|
echo $message."\n";
|
|
echo "<p><a href='resa_bi.php?id_club=$club&jour=$jour&annee=$annee&mois=$mois'>Redirection automatique vers la page de réservartion</a></p>";
|
|
echo "</body></html>";
|
|
}
|
|
}
|
|
else {
|
|
echo("Non autorisé - Redirection vers la page d'identification dans 2 secondes");
|
|
sleep(2);
|
|
redirection("consult_borne.php?id_club=$club");
|
|
}
|
|
|
|
/* fonction de controle de format de la licence FFT */
|
|
function verifierLicence($numero_fft){
|
|
$numero=0;
|
|
$res=1;
|
|
// controle de la licence si le numero de licence est valide (1234567K par ex,)
|
|
if(is_numeric($numero_fft[0])) {
|
|
for($i=0;$i<7;$i++){$numero=$numero+($numero_fft[$i]* pow (10,(6-$i)));}
|
|
$cle=$numero_fft[7];
|
|
$tab_lettres=array("A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z");
|
|
$mod=($numero % 23);
|
|
if ($mod==0){$mod=23;}
|
|
if(strtoupper($cle)!=$tab_lettres[$mod-1]){
|
|
$res=0;
|
|
}
|
|
}
|
|
else {
|
|
$res=0;
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/* Les horaires sont au format Unix timestamp) */
|
|
function controleHoraires($debut, $fin) {
|
|
$now=time();
|
|
if($debut < $now) {
|
|
$res=-1;
|
|
}
|
|
else if($fin<=$debut) {
|
|
$res=0;
|
|
}
|
|
else if($debut>$fin) {
|
|
$res=0;
|
|
}
|
|
else {
|
|
$res=1;
|
|
}
|
|
|
|
return $res;
|
|
}
|
|
|
|
/* Redirection vers la page indiquée en pâral */
|
|
function redirection($url) {
|
|
echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
|
|
echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>";
|
|
echo "<html xmlns='http://www.w3.org/1999/xhtml'>";
|
|
echo "<head>";
|
|
echo "<meta http-equiv='content-type' content='text/html; charset=ISO-8859-1' />";
|
|
echo "<meta http-equiv='refresh' content='1; url=$url' />";
|
|
echo "</head>";
|
|
echo "<body>";
|
|
echo "<p><a href='$url'>Redirection automatique en cours</a></p>";
|
|
echo "</body></html>";
|
|
}
|
|
|
|
?>
|