'$id_joueur'"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $nb=mysqli_num_rows($reponse); if($nb > 0) { $texte=""; } return $texte; } function reservation($id_joueur_log, $club, $jour, $mois, $annee, $type_resa, $nom_resa, $id_adverse, $heure_debut, $min_debut, $heure_fin, $min_fin,$terrains, $db_connection) { 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(); include_once("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,solde_invite, 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)()."
"); $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); /* Test si le joueur est un sponsor - resa illimite */ $saison=date("Y"); if(date("m") >= 10 and date("m")<=12) { $saison+=1; } $requete="SELECT id_sponsor FROM sponsor WHERE id_joueur='$id_joueur_log' AND saison='$saison'"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $existe_sponsor=mysqli_num_rows($reponse); if($existe_sponsor > 0) { $sponsor=1; } else { $sponsor=0; } } 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)()."
"); $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)()."
"); $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); if(! empty($id_adverse)) { array_push($joueurs_tab, $id_adverse); } /* Test invite et motif */ if($type_resa == 'Invite' and empty($nom_resa)) { $resa_ok=-2; } /* 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"); $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 and $sponsor == 0) { /* 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='$id_joueur_log'"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $existe_niveau=mysqli_num_rows($reponse); 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)()."
"); 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)()."
"); 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)()."
"); $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)()."
"); $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)()."
"); $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)()."
"); } $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)()."
"); $nb=mysqli_num_rows($reponse); if($quota->nb_resa_loisir_jour <= $nb) { $flag=-1; } } /* 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_resa=$duree / 3600; if($quota->duree_resa_loisir < $duree_resa) { $flag=-2; } } /* Durée totale des réservations par jour - LOISIR */ if($quota->duree_resa_jour > -1 and $flag==1 and $type_resa=="Loisir") { $date="$annee-$mois-$jour"; /* On initialise avec la duree de resa calculee au dessus. */ $duree_totale=($duree_resa * 3600); $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)()."
"); $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_loisir < $duree_heure) { $flag=-4; } } /* Durée totale des réservations par jour - TOUTES */ if($quota->duree_resa_jour > -1 and $flag==1) { $date="$annee-$mois-$jour"; /* On initialise avec la duree de resa calculee au dessus. */ $duree_totale=($duree_resa * 3600); $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.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)()."
"); $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; } } /* 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()); $heure_now=date("H:i:s", time()); $requete="SELECT id_reservation FROM reservation WHERE id_joueur='$joueurs_tab[$i]' AND (date_resa > '$date_now' OR (date_resa='$date_now' AND heure_resa_deb > '$heure_now')) ORDER BY date_resa DESC"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $existe=mysqli_num_rows($reponse); if($existe > 0) { $flag=-6; $requete="SELECT nom, prenom FROM joueur WHERE id_joueur='$joueurs_tab[$i]'"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $joueur_inc=mysqli_fetch_object($reponse); $nom_joueur_dep="$joueur_inc->prenom $joueur_inc->nom"; } } /* 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)()."
"); $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)()."
"); $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; /* Pour chaque terrain contrôler que les heures passent */ if(count($terrains) > 0) { $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)()."
"); $resa_jour=mysqli_fetch_object($reponse); /* Pour chaque terrain */ for ($i=0;$inb_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 ($type_resa=='Loisir' and $resa_jour->nb_resa_loisir_jour > 0 and count($terrains) == 1))) { /* Requete si joueur invite ? */ $invite_ok=0; $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)()."
"); $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 and $compte_invite->solde <=100) or $compte_invite->solde > 100)) or ($type_resa=='Invite' and $compte_membre->solde_invite > 0) or ($compte_membre->solde > 100) or ($compte_membre->solde > 0 and $compte_membre->solde <=100)) { $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)()."
"); $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)()."
"); $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="La reservation n'a pas ete prise en compte. Le terrain $terrain->nom est occupe a ces horaires ou la reservation n'a pas ete validee par l'administrateur !"; } 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_rubrique) 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)()."
"); $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)()."
"); $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 autorise votre reservation par e-mail car"; if($flag==-1) { $message.=" vous avez depasse le nombre de reservations en Loisir par jour autorise."; $cause="depasse nb resa en loisir/jour"; } else if($flag==-2) { $message.=" vous avez depasse la duree autorisee d\'une reservation en Loisir."; $cause="depasse duree resa loisir"; } else if($flag==-3) { $message.=" vous avez depasse la duree maximale autorisee pour une rencontre de championnat pour une journee."; $cause="depasse duree resa championnat"; } else if($flag==-4) { $message.=" vous avez depasse la duree maximale autorisee de reservations en Loisir pour une journee."; $cause="depasse duree resa en loisir/jour"; } else if($flag==-5) { $message.=" vous avez depasse le delai maximal en jour qui separe deux reservations."; $cause="delai max entre 2 resas"; } else if($flag==-6) { $message.=" vous n\'avez pas effectuee votre reservation precedente."; $cause="pas effectuer resa precedente"; } else if($flag==-7) { $message.=" vous ne pouvez pas effectuer de reservations dans cette rubrique."; $cause="pas de resa dans ce type"; } 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)()."
"); $resa=mysqli_fetch_array($reponse); $id_resa=$resa[0]; $lien_valide_resa="http://www.resatennis.net/valide_resa.php?id_resa=$id_resa&id_joueur=$id_joueur_log&club=$club"; $lien_annul_resa="http://www.resatennis.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)()."
"); $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)()."
"); $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)()."
"); $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 ResaTennis.net"; /* Recherche de l'e-mail de l'administrateur */ $requete="SELECT j.e_mail FROM admin_resa ar, joueur j WHERE ar.id_club='$club' AND j.e_mail<>'' AND j.id_joueur=ar.id_joueur"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $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 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)()."
"); $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)()."
"); $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)()."
"); $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 - $cause"; if($nom_joueur_dep != "") { $message_log.=" ($nom_joueur_dep)"; } $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)()."
"); } else { /* 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)()."
"); $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)()."
"); $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)()."
"); $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)()."
"); } } /* 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/(1800); /* Nombre d'heures - 1 jeton pour 30 mn */ $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)()."
"); } /* Si le joueur a une carte "location horaire" */ if($flag==1 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/(1800); /* Nombre d'heures - 1 jeton pour 30 mn */ $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)()."
"); } /* Résa de type Invite, déduire un jeton sur le compte de l'adhérent */ if($flag==1 and $type_resa=='Invite' and $compte_membre->solde_invite > 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/(1800); /* Nombre d'heures - 1 jeton pour 30 mn */ $solde_actuel=$compte_membre->solde_invite; $nouveau_solde=$solde_actuel-$jetons; $cumul+=$jetons; $requete="UPDATE compte SET solde_invite='$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)()."
"); } /* 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 */ $requete="SELECT solde, cumul, id_compte FROM compte WHERE id_joueur='$id_adverse' AND id_club='$club'"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $existe_invite=mysqli_num_rows($reponse); if($existe_invite > 0) { $compte_adverse_invite=mysqli_fetch_object($reponse); /* Si le solde est positif, on déduit des jetons au joueuradverse invité dans le club */ if($compte_adverse_invite->solde > 0) { $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/(1800); /* 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)()."
"); if($nouveau_solde <= 0) { $message.="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) { $message="Vous n\'avez plus de jetons disponibles pour cette reservation."; } else if($membre_carte == 1 and $compte_membre->solde <=0) { $message="Vous n\'avez plus de jetons disponibles pour cette reservation."; } else if($type_resa=='Invite' and $compte_membre->solde_invite <= 0) { $message="Vous n\'avez plus de jetons disponibles pour cette reservation."; } } else { $message="Vous ne pouvez pas effectuer plus de $resa_jour->nb_resa_loisir_jour reservations 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 debut."; } else if($resa_ok == -2) { $message="Vous devez saisir le nom de votre adversaire dans la case motif de reservation pour les reservations en mode Invite !!"; } else { $message="Vous ne pouvez pas effectuer une reservation a une date et une heure depassees."; } return $message; } function reservation_tournoi($id_joueur, $club_terrains, $jour, $mois, $annee, $motif, $heure_debut, $min_debut, $heure_fin, $min_fin,$terrains, $id_tournoi, $id_categorie, $id_club, $db_connection) { if($jour<10 and strlen($jour)==1) {$jour="0".$jour;} if($mois<10 and strlen($mois)==1) {$mois="0".$mois;} /* 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); /* tableau contenant les terrains à reserver */ if($horaires_ok==1) { /* Tournoi */ $requete="SELECT nom FROM tournoi WHERE id_tournoi='$id_tournoi'"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $tournoi=mysqli_fetch_object($reponse); $requete="SELECT nom FROM club WHERE id_club='$id_club'"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $club=mysqli_fetch_object($reponse); $requete="SELECT nom FROM club WHERE id_club='$club_terrains'"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $club_nom_reservables=mysqli_fetch_object($reponse); $motif_resa="$club->nom -
$tournoi->nom"; if($motif != "") { $motif_resa.=" -
$motif"; } /* Pour chaque terrain contrôler que les heures passent */ if(count($terrains) > 0) { /* Pour chaque terrain */ for ($i=0;$i"); $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)()."
"); $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="La reservation n'a pas ete prise en compte. Le terrain $terrain->nom est occupe a ces horaires ou la reservation n'a pas ete validee par l'administrateur !"; } else { $debut="$heure_debut:$min_debut:00"; $fin="$heure_fin:$min_fin:00"; $date="$annee-$mois-$jour"; /* Positionne le flag de validation */ $requete="INSERT INTO reservation(type, type_reservation, id_joueur, id_tournoi, id_categorie, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation,id_rubrique) VALUES('Tournoi', '$motif_resa', '$id_joueur','$id_tournoi','$id_categorie','$debut','$fin','$date', '$id_terrain', '1','0')"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $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)()."
"); $terrain=mysqli_fetch_object($reponse); /* 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)()."
"); $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)()."
"); $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)()."
"); $rubrique=mysqli_fetch_object($reponse); $type_resa=$rubrique->nom; } $message_log="Creation - Reservation Tournoi - $club_nom_reservables->nom - $jour/$mois/$annee - $terrain->nom - $heure_debut:$min_debut - $duree_resa - $motif - 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','$message_log','$id_club')"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); $message_log="Creation - Reservation Tournoi - $club->nom - $jour/$mois/$annee - $terrain->nom - $heure_debut:$min_debut - $duree_resa - $motif - 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','$message_log','$club_terrains')"; $reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
"); } } } } /* 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 debut."; } return $message; } /* Les horaires sont au format Unix timestamp) */ function controleHoraires($debut, $fin) { $now=time(); if($fin<=$debut) { $res=0; } else if($debut>$fin) { $res=0; } else { $res=1; } return $res; } ?>