Entetes de mail dans INBOX
\n";
$nb_mess=imap_num_msg($mbox);
echo "Nombre de messages : ".$nb_mess."
";
/* Pour tous les messages */
for($cpt=1;$cpt<=$nb_mess;$cpt++) {
$infos=imap_headerinfo($mbox, $cpt);
$from=$infos->from;
$expediteur=$from[0]->mailbox."@".$from[0]->host;
$recent=$infos->Recent;
/* Si l'expediteur est un envoi de sms et que le message est non lu */
if($expediteur=="webmaster@leSMS.com"/* and $recent=='N'*/) {
$sujet=imap_utf8($infos->subject);
echo $cpt." : ".$sujet."
";
$test_sujet=substr($sujet,0,23);
/* Si le sujet est la reception d'un SMS */
if($test_sujet=="Nouveau message SMS du") {
/* Recup du numero de telephone */
$numero=sscanf($sujet, "Nouveau message SMS du %10s");
//print_r($numero);
/* Traitement du corps du message - Recup de la reponse */
$texte_mail=imap_fetchbody($mbox, $cpt, 1);
$reponse_tab=recup_reponse($texte_mail);
/* Reponse de la forme : (Oui/non) (Tournoi/Match) Club */
if(isset($reponse_tab))
traitement_reponse($reponse_tab, $numero[0]);
}
}
/* Rejeter le mail - Spam - Le supprimer ? */
else {
//echo "mail rejeté - mauvais expéditeur.";
/* imap_delete($mbox, $cpt); */
echo "mail rejeté";
}
}
imap_close($mbox);
/*****************************************************************************/
/* Fonctions ***************************************************************/
function recup_reponse($texte_email) {
$texte_email=utf8_encode($texte_email);
$ligne_tab=array();
/* Divise la chaine en ligne */
$ligne_tab=explode("\r\n",$texte_email);
if(strcasecmp($ligne_tab[0], "Bonjour,")==0 and strcasecmp($ligne_tab[6], "L'équipe de leSMS.com")==0 and strcasecmp($ligne_tab[4],"Nous vous souhaitons bonne réception de ce message.")==0) {
echo "mail ok !
";
/* Controle de la phrase contenant le message et le numero de telephone */
$test=substr($ligne_tab[2],0,44);
if(strcasecmp($test, "Vous venez de recevoir un nouveau message du")==0) {
echo "message ok !
";
sscanf($ligne_tab[2], "Vous venez de recevoir un nouveau message du %10s : \"%[^$]s\"", $numero, $message);
$message=str_replace('"', '', $message);
$message=strtolower($message);
}
else {
echo "message ko !
";
unset($reponse);
}
}
else {
echo "mail rejeté";
unset($reponse);
}
return $message;
}
/************************************************************************************/
/* Traitement des infos - Pour chaque message */
/* format message SMS : $reponse ville (pour tournoi) */
/* et copier le contenu du message dans les dispos */
/************************************************************************************/
function traitement_reponse($message, $numero) {
include("mysql_compat.php");
include ("conf.php");
$rep_sms="";
echo $message."
";
if($message!="") {
$type_convoc=0;
/* Ajoute les espaces au numero de telephone pour comparaison avec la BDD */
$groupe1=substr($numero, 0, 2);
$groupe2=substr($numero, 2, 2);
$groupe3=substr($numero, 4, 2);
$groupe4=substr($numero, 6, 2);
$groupe5=substr($numero, 8, 2);
$numero="$groupe1 $groupe2 $groupe3 $groupe4 $groupe5";
/* Controle de l'existance du joueur sur le site Recup de l'id du joueur */
$requete="SELECT id_joueur FROM telephone WHERE numero='$numero' ORDER BY id_joueur ASC";
$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) {
echo "joueur existe sur le site !!!!
";
$joueur=mysqli_fetch_object($reponse);
$id_joueur=$joueur->id_joueur;
/* Contenu du message */
if(strpos($message, "oui") !== false) {
$rep_sms="oui";
echo "oui
";
}
else if(strpos($message, "non") !== false) {
$rep_sms="non";
echo "non
";
}
else {
echo "Inscription au tournoi - appréciation du message par le juge arbitre
";
$rep_sms="appreciation";
}
/* Controle du type de la convocation */
$type_convoc=recherche_convoc_dispo($id_joueur, $message);
/**************************/
//$type_convoc=0; //TEST
/**************************/
if(count($type_convoc)==2) {
echo "type convoc : $type_convoc[0]
";
echo "id_tournoi/resa/dispo : $type_convoc[1]
";
/* Refus inscription / convocation */
if($rep_sms=="non" and $type_convoc[0] != "dispo") {
/* Convoc tournoi */
if($type_convoc[0]=="tournoi") {
$id_tournoi=$type_convoc[1];
$requete="UPDATE appels_sortants SET reponse='non' WHERE id_tournoi='$id_tournoi' AND id_joueur='$id_joueur' AND type='sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
}
/* Convoc match */
else if($type_convoc[0]=="match") {
$id_reservation=$type_convoc[1];
$requete="UPDATE participant SET info='refus', prevenu=NOW() WHERE id_reservation='$id_reservation' AND id_joueur='$id_joueur' AND type='Sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
}
}
else if($rep_sms=="oui" and $type_convoc[0] != "dispo") {
/* Convoc tournoi */
if($type_convoc[0]=="tournoi") {
$id_tournoi=$type_convoc[1];
/* Recherche de la categorie */
$requete="SELECT id_categorie FROM appels_sortants WHERE id_tournoi='$id_tournoi' AND id_joueur='$id_joueur' AND type='sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$cat=mysqli_fetch_object($reponse);
$id_categorie=$cat->id_categorie;
$requete="UPDATE appels_sortants SET reponse='oui', prevenu=NOW() WHERE id_tournoi='$id_tournoi' AND id_joueur='$id_joueur' AND type='sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
/* Inscription du joueur au tournoi */
/* Si pas de categorie - Ne tient pas compte des surclassements */
if($id_categorie==0) {
$id_categorie=cat_joueur($id_joueur, $id_tournoi);
}
$requete="SELECT num_tel FROM appels_sortants WHERE id_tournoi='$id_tournoi' AND id_joueur='$id_joueur' AND type='sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$tel=mysqli_fetch_object($reponse);
$num_tel=$tel->num_tel;
if($id_categorie != 0) {
/* Controle si l'inscription n'a pas déja été effectué */
$requete="SELECT * FROM inscription_tournoi WHERE id_joueur='$id_joueur' AND id_categorie='$id_categorie' AND id_tournoi='$id_tournoi'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe=mysqli_num_rows($reponse);
/* Si l'inscription n'existe pas, on la crée et on confirme */
if($existe==0) {
$requete="INSERT INTO inscription_tournoi(id_joueur,id_tournoi,id_categorie, date_inscription, travaille, inscripteur, telephone) VALUES('$id_joueur','$id_tournoi','$id_categorie', CURDATE(), 'nsp','sms','$num_tel')";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
envoi_mail($id_joueur, $id_tournoi);
}
}
}
/* Convoc match */
else if($type_convoc[0]=="match" and $type_convoc[0] != "dispo") {
$id_reservation=$type_convoc[1];
$requete="UPDATE participant SET info='Ok', prevenu=NOW() WHERE id_reservation='$id_reservation' AND id_joueur='$id_joueur' AND type='Sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
}
}
else if($rep_sms=="appreciation" and $type_convoc[0] != "dispo") {
/* Convoc tournoi */
if($type_convoc[0]=="tournoi") {
$id_tournoi=$type_convoc[1];
/* Recherche de la categorie */
$requete="SELECT id_categorie FROM appels_sortants WHERE id_tournoi='$id_tournoi' AND id_joueur='$id_joueur' AND type='sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$cat=mysqli_fetch_object($reponse);
$id_categorie=$cat->id_categorie;
$requete="UPDATE appels_sortants SET reponse='oui', prevenu=NOW() WHERE id_tournoi='$id_tournoi' AND id_joueur='$id_joueur' AND type='sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
/* Inscription du joueur au tournoi */
/* Si pas de categorie - Ne tient pas compte des surclassements */
if($id_categorie==0) {
$id_categorie=cat_joueur($id_joueur);
}
$requete="SELECT num_tel FROM appels_sortants WHERE id_tournoi='$id_tournoi' AND id_joueur='$id_joueur' AND type='sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$tel=mysqli_fetch_object($reponse);
$num_tel=$tel->num_tel;
/* Controle si l'inscription n'a pas déja été effectué */
$requete="SELECT * FROM inscription_tournoi WHERE id_joueur='$id_joueur' AND id_categorie='$id_categorie' AND id_tournoi='$id_tournoi'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe=mysqli_num_rows($reponse);
/* Comme le message SMS est ambigu, on inscrit le joueur et on laisse */
/* le soin au juge arbitre de valider ou d'annuler l'inscription */
/* en lisant le message dans les commentaires */
if($existe==0) {
$commentaire="Contenu message SMS : ".$message;
$requete="INSERT INTO inscription_tournoi(id_joueur,id_tournoi,id_categorie, date_inscription, travaille, inscripteur, telephone, commentaires) VALUES('$id_joueur','$id_tournoi','$id_categorie', CURDATE(), 'nsp','sms','$num_tel', '$commentaire')";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
}
}
}
/* Dispo */
else if($type_convoc[0]=="dispo") {
echo "DISPO !!!!!!!!
";
$id_dispo=$type_convoc[1];
$requete="UPDATE dispo_champ SET dispo='$message', reponse='oui', resultat_appel='prevenu' WHERE id_dispo='$id_dispo'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
}
}
}
/* joueur inconnu du site */
else {
echo "Joueur inconnu sur le site
";
}
}
echo "\n\n";
}
/*****************************************************************************************/
/* Recherche une catégorie d'inscription pour le joueur et dans un tournoi */
/*****************************************************************************************/
function cat_joueur($id_joueur, $id_tournoi) {
include("mysql_compat.php");
include ("conf.php");
$db_connection=mysql_connect($db_host,$db_user,$password);
$id_cat=0;
/* Infos joueurs */
$requete="SELECT annee, sexe FROM joueur WHERE id_joueur='$id_joueur'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$joueur=mysqli_fetch_object($reponse);
$age=date("Y")-$joueur->annee;
/* Categories Tournoi */
$requete="SELECT c.id_categorie, c.age_min, c.age_max FROM categorie c LEFT JOIN categories_par_tournoi ct ON ct.id_categorie=c.id_categorie WHERE c.sexe='$joueur->sexe' AND ct.id_tournoi='$id_tournoi' AND c.type='simple'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
while($cat=mysqli_fetch_object($reponse)) {
if($cat->age_max==0) {
$age_max=100;
}
else {
$age_max=$cat->age_max;
}
if($age<$age_max and $age>=$cat->age_min and $id_cat==0) {
$id_cat=$cat->id_categorie;
}
}
return $id_cat;
}
/*****************************************************************************************/
/* Recherche le type de message (Disponibilités, convoc ou prochain match */
/*****************************************************************************************/
function recherche_convoc_dispo($id_joueur, $message) {
include("mysql_compat.php");
include ("conf.php");
$db_connection=mysql_connect($db_host,$db_user,$password);
$rep=array();
$clubs=array();
// Disponibilites ?
$now=date("Y-m-d", time());
$requete="SELECT dc.id_dispo FROM dispo_champ dc, dates_champ d ";
$requete.=" WHERE d.id_date=dc.id_date AND dc.id_joueur='$id_joueur' AND dc.resultat_appel='en_attente' AND dc.reponse='pas_de_reponse' AND dc.type_demande='sms' AND dc.a_appeler='non' AND d.date > '$now'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
echo $requete."
";
$existe_dispo=mysqli_num_rows($reponse);
if($existe_dispo>0) {
echo "dispo\n";
$rep[0]="dispo";
$dispo=mysqli_fetch_object($reponse);
$rep[1]=$dispo->id_dispo;
}
// Tournoi et prochain match tournoi
else {
$requete="SELECT id_club, LCASE(ville) AS ville FROM club";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
while($club=mysqli_fetch_object($reponse)) {
if(strpos($message, $club->ville) !== false) {
array_push($clubs, $club->id_club);
}
}
echo "nombre clubs : ".count($clubs)."
";
if(count($clubs)==0) {
/* Recherche d'une convocation à un tournoi */
$requete="SELECT t.id_tournoi FROM tournoi t LEFT JOIN appels_sortants a ON t.id_tournoi=a.id_tournoi WHERE a.id_joueur='$id_joueur' AND t.date_cloture >= CURDATE() AND a.reponse='pas_de_reponse' AND a.type='sms' ";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe_tournoi=mysqli_num_rows($reponse);
if($existe_tournoi>0) {
$rep[0]="tournoi";
$tournoi=mysqli_fetch_object($reponse);
$rep[1]=$tournoi->id_tournoi;
}
/* Recherche convocation match */
else {
/* Recherche du joueur à partir de son numero de portable */
$requete="SELECT p.id_reservation FROM participant p WHERE p.id_joueur='$id_joueur' AND p.prevenu<>NULL AND p.a_prevenir='Sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe_match=mysqli_num_rows($reponse);
if($existe_match>0) {
$rep[0]="match";
$tournoi=mysqli_fetch_object($reponse);
$rep[1]=$tournoi->id_reservation;
}
}
}
else if(count($clubs)==1) {
$id_club=$clubs[0];
echo "club : $id_club
";
$requete="SELECT t.id_tournoi FROM tournoi t LEFT JOIN appels_sortants a ON a.id_tournoi=t.id_tournoi WHERE t.id_club='$id_club' AND t.saison= YEAR(CURDATE()) AND a.id_joueur='$id_joueur' AND a.reponse='pas_de_reponse' AND t.date_cloture >= CURDATE() ORDER BY t.debut ASC";
echo $requete."
";
$reponse_tournoi=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe_tournoi=mysqli_num_rows($reponse_tournoi);
if($existe_tournoi>0) {
$rep[0]="tournoi";
$tournoi=mysqli_fetch_object($reponse_tournoi);
$rep[1]=$tournoi->id_tournoi;
}
else {
/* Recherche d'une convocation à un match */
$requete="SELECT p.id_reservation FROM participant p WHERE p.id_joueur='$id_joueur' AND p.prevenu<>NULL AND p.a_prevenir='Sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe_match=mysqli_num_rows($reponse);
if($existe_match>0) {
$rep[0]="match";
$tournoi=mysqli_fetch_object($reponse);
$rep[1]=$tournoi->id_reservation;
}
}
}
else if(count($clubs)>1) {
$requete="SELECT fin, t.id_tournoi FROM tournoi t LEFT JOIN appels_sortants a ON a.id_tournoi=t.id_tournoi WHERE ";
for($i=0;$i= CURDATE() ORDER BY t.debut ASC";
$reponse_tournoi=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe=mysqli_num_rows($reponse_tournoi);
if($existe>0) {
$rep[0]="tournoi";
$tournoi=mysqli_fetch_object($reponse);
$rep[1]=$tournoi->id_tournoi;
}
else {
/* Recherche d'une convocation à un match */
$requete="SELECT p.id_reservation FROM participant p WHERE p.id_joueur='$id_joueur' AND p.prevenu<>NULL AND p.a_prevenir='Sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe_match=mysqli_num_rows($reponse);
if($existe_match>0) {
$rep[0]="match";
$tournoi=mysqli_fetch_object($reponse);
$rep[1]=$tournoi->id_reservation;
}
}
}
}
return $rep;
}
function envoi_mail($id_joueur, $id_tournoi) {
include("mysql_compat.php");
include ("conf.php");
$db_connection=mysql_connect($db_host,$db_user,$password);
$requete="SELECT nom, prenom, e_mail FROM joueur wHERE id_joueur='$id_joueur'";
$reponse=mysqli_query($db_connection, $requete);
$joueur=mysqli_fetch_array($reponse);
$requete="SELECT * FROM appels_sortants WHERE id_joueur='$id_joueur' AND id_tournoi='$id_tournoi'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$convoc=mysqli_fetch_object($reponse);
$test_portable=explode(" ", $convoc->num_tel);
if(strcmp($test_portable[0],"06")==0) {
$requete="SELECT nom, prenom FROM joueur WHERE id_joueur='$id_joueur'";
$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 nom, id_club, id_jugearbitre 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 juge_arbitre WHERE id_ja='$tournoi->id_jugearbitre'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$ja=mysqli_fetch_object($reponse);
$requete="SELECT nom FROM categorie WHERE id_categorie='$convoc->id_categorie'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$cat=mysqli_fetch_object($reponse);
$texte="Bonjour $joueur->prenom $joueur->nom.";
$texte.="Ce SMS confirme votre inscription au tournoi $tournoi->nom ds la cat $cat->nom.";
$texte.="Le JA $ja->nom";
$num_tel=$convoc->num_tel;
if(strlen($num_tel)==14) {
$num_tel=str_replace(" ","",$convoc->num_tel);
}
if(strlen($texte)<=160) {
envoi_sms($num_tel, $texte);
}
}
else if($['']!="") {
$requete="SELECT id_club, 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, e_mail FROM club WHERE id_club='$tournoi->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 id_categorie FROM appels_sortants WHERE id_joueur='$id_joueur' AND id_tournoi='$id_tournoi' AND type='sms'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$cat=mysqli_fetch_object($reponse);
$requete="SELECT nom FROM categorie WHERE id_categorie='$cat->id_categorie'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$cat=mysqli_fetch_object($reponse);
$text="Cet email vous confirme que votre inscription via SMS dans la categorie $cat->nom a bien ete prise en compte par les organisateurs du tournoi $tournoi->nom du club $club->nom.\n\n L'inscription sera validee par le juge arbitre lorsque l'inscription sera reglee et apres presentation du certificat medical.\n\n Les organisateurs du tournoi. ";
$joueur_email=$[''];
$club_email=$club->e_mail;
$sujet="Confirmation de l'inscription via SMS au tournoi $tournoi->nom du club $club->nom";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= "To: $joueur_email\r\n";
$headers .= "From: tennis@airtria.fr\r\n";
if($club_email != "") {
$headers .="Cc: $club_email\r\n";
}
mail($joueur_email, $sujet, $text, $headers);
}
}
?>