summaryrefslogtreecommitdiff
path: root/final/app/include
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2018-07-05 00:25:51 +0200
committerLudovic Pouzenc <ludovic@pouzenc.fr>2018-07-05 00:25:51 +0200
commitac54f5224d4470de9d8ae088e1338dea52668c9d (patch)
tree7f77b2a8176343e6632fbd99ff431c21974ef482 /final/app/include
parent9738017972a6d4fea655926525b3c67dd85740cf (diff)
download2007-AWOR-ac54f5224d4470de9d8ae088e1338dea52668c9d.tar.gz
2007-AWOR-ac54f5224d4470de9d8ae088e1338dea52668c9d.tar.bz2
2007-AWOR-ac54f5224d4470de9d8ae088e1338dea52668c9d.zip
Renommage beta_accents -> final pour diffs
Diffstat (limited to 'final/app/include')
-rw-r--r--final/app/include/connect.inc.php14
-rw-r--r--final/app/include/ical.inc.php68
-rw-r--r--final/app/include/index.html0
-rw-r--r--final/app/include/je.inc.php241
-rw-r--r--final/app/include/ju.inc.php227
-rw-r--r--final/app/include/ludo/TODO_list.txt24
-rw-r--r--final/app/include/ludo/auth.inc.php78
-rw-r--r--final/app/include/ludo/config.inc.php74
-rw-r--r--final/app/include/ludo/div_create_or_modif.php74
-rw-r--r--final/app/include/ludo/fonctions.inc.php548
-rw-r--r--final/app/include/ludo/html_elements.inc.php185
-rw-r--r--final/app/include/ludo/mail_textarea.php45
-rw-r--r--final/app/include/ludo/majDispo.php39
-rw-r--r--final/app/include/ludo/redir.inc.php20
-rw-r--r--final/app/include/ludo/session_verify.inc.php9
-rw-r--r--final/app/include/tools.inc.php25
16 files changed, 1671 insertions, 0 deletions
diff --git a/final/app/include/connect.inc.php b/final/app/include/connect.inc.php
new file mode 100644
index 0000000..0bc0a10
--- /dev/null
+++ b/final/app/include/connect.inc.php
@@ -0,0 +1,14 @@
+<?php
+/*
+ * Param&egrave;tres de connexion &agrave; la base MySQL
+ */
+
+// $bd repr&eacute;sente le nom de la database &agrave; utiliser
+$bd = "awor";
+// mysql_connect(<nom_ou_ip_serveur_mysql>, <utilisateur_mysql>, <mot_de_passe_en_clair_mysql>);
+$link = @mysql_connect('localhost', 'awor', 'blagnac');
+
+@mysql_select_db($bd , $link);
+
+// NB : La gestion d'erreur est inhib&eacute;e. Cet include ne g&eacute;n&egrave;rera jamais de code, m&ecirc;me si la connexion n'a pas pu &ecirc;tre &eacute;tablie
+?> \ No newline at end of file
diff --git a/final/app/include/ical.inc.php b/final/app/include/ical.inc.php
new file mode 100644
index 0000000..0936800
--- /dev/null
+++ b/final/app/include/ical.inc.php
@@ -0,0 +1,68 @@
+<?php
+/*
+ * Fonction de g&eacute;n&eacute;ration d'iCal
+ */
+
+// Constantes d'erreur
+define("ERR_ICAL_NO_DATA", -1);
+define("ERR_ICAL_SQL_ERROR", -2);
+
+ function generationIcal($idP, &$iCal_name, &$iCal_content, &$errmsg)
+{
+ require_once('connect.inc.php');
+ $query = 'SELECT DISTINCT R.idR,R.objetR,P.courrielP,UNIX_TIMESTAMP(C.dateHeure),C.duree,R.lieuR,R.ordreJourR,L.idL'
+ . ' FROM AWOR_Liste L,AWOR_Reunion R,AWOR_Appartenir A,AWOR_Creneau C,AWOR_Personne P'
+ . " WHERE ((A.idP = $idP AND A.idL = L.idL) OR R.idP_Orga = $idP)"
+ . ' AND R.idL = L.idL AND C.idC = R.idC_Fixe AND P.idP = R.idP_Orga'
+ . ' AND C.dateHeure > NOW() ';
+ if ( ! $result = @mysql_query($query) )
+ {
+ // Cas d'erreur
+ $errmsg =mysql_generate_errmsg();
+ return ERR_ICAL_SQL_ERROR;
+ }
+ else
+ {
+ if (mysql_num_rows($result)<1)
+ {
+ return ERR_ICAL_NO_DATA;
+ }
+ else
+ {
+ $time = time();
+ $iCal_name = "iCal_${idP}_${time}.ics";
+ $iCal_content = "BEGIN:VCALENDAR\r\n" . "VERSION:2.0\r\n";
+ while ( list($idR, $objetR, $courrielP, $dateDeb, $duree, $lieuR, $ordreJourR, $idL) = mysql_fetch_array($result) )
+ {
+ // TODO : Il est probablement judicieux d'ajouter &agrave; l'UID un timestamp unix !!!!!
+ $iCal_content .= "BEGIN:VEVENT\r\n" . "UID:awor_${idP}.${idR}\r\n" . "SUMMARY:$objetR ($courrielP)\r\n";
+ $iCal_content .= 'DTSTART:' . date('Ymd\THis', $dateDeb) . "\r\n";
+ $iCal_content .= 'DTEND:' . date('Ymd\THis', $dateDeb+60*$duree) . "\r\n";
+ $iCal_content .= "LOCATION:$lieuR\r\n";
+ $iCal_content .= "DESCRIPTION:$ordreJourR\r\n";
+
+ $query = 'SELECT P.courrielP FROM AWOR_Appartenir A,AWOR_Personne P' . " WHERE A.idP=P.idP AND A.idL='$idL'";
+ if ( ! $result = mysql_query($query) )
+ {
+ // Cas d'erreur
+ $errmsg =mysql_generate_errmsg();
+ $ret=ERR_ICAL_SQL_ERROR;
+ break;
+ }
+ else
+ {
+ while ( list($mail_autres) = mysql_fetch_array($result) )
+ {
+ $iCal_content .= "ATTENDEE:mailto:$mail_autres\r\n";
+ }
+ }
+ // TODO : v&eacute;rifier la pertinance de la variable utilis&eacute;e
+ $iCal_content .= 'URL:http://' . $_SERVER['HTTP_HOST'] . "\r\n";
+ $iCal_content .= "END:VEVENT\r\n";
+ }
+ $iCal_content .= "END:VCALENDAR\r\n";
+ return 0;
+ }
+ }
+}
+?> \ No newline at end of file
diff --git a/final/app/include/index.html b/final/app/include/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/final/app/include/index.html
diff --git a/final/app/include/je.inc.php b/final/app/include/je.inc.php
new file mode 100644
index 0000000..53b1043
--- /dev/null
+++ b/final/app/include/je.inc.php
@@ -0,0 +1,241 @@
+<?php
+require_once ('include/connect.inc.php');
+
+ function traiter_formulaire_valider_modif_personnes()
+ {
+ //V&eacute;rification a faire pour savoir si c'est bien le propri&eacute;taire ?!! $_SESSION['session_idP']
+ $tabParticipant = array();
+ if (isset($_GET['dataParticipants'])) $tabParticipant = $_GET['dataParticipants'];
+ $idL=-1;
+ if (!isset($_GET['idL']) && isset($_GET['listname']))
+ {
+ if (isset($_GET['isPrivate'])) $isPrivate = 'oui'; else $isPrivate = 'non';
+ $idL = list_new($_GET['listname'],$_GET['idP'],$isPrivate);
+ }
+ else {$idL = $_GET['idL'];}
+
+ if ($idL != -1) list_modif($idL,$tabParticipant);
+ }
+
+ function traiter_formulaire_delete_list()
+ {
+ //V&eacute;rification a faire pour savoir si c'est bien le propri&eacute;taire ?!! $_SESSION['session_idP']
+ if (isset($_GET['idL'])) list_delete($_GET['idL']);
+ }
+
+ function list_delete($idL)
+ {
+ $result = mysql_query("DELETE FROM AWOR_Appartenir WHERE idL=$idL;");
+ $result = mysql_query("DELETE FROM AWOR_Liste WHERE idL=$idL;");
+ }
+
+ function list_new($listname,$idP,$isPrivate)
+ {
+ $result = mysql_query("INSERT INTO AWOR_Liste (libelleL,estPrivee,idP_Createur) VALUES ('$listname','$isPrivate',$idP)") or die (mysql_error());
+ if (mysql_affected_rows() > 0)
+ {
+ return (mysql_insert_id());
+ }
+ return (false);
+ }
+
+ function list_modif($idL,$tabParticipant)
+ {
+ $result = mysql_query("SELECT P.idP,P.courrielP FROM AWOR_Appartenir A, AWOR_Personne P WHERE P.idP = A.idP AND A.idL=$idL") or die (mysql_error());
+ if (mysql_num_rows($result)>=0)
+ {
+ //Fabrication des trois tableaux
+ $tabOldPers = array();
+ $tabOldPersMail = array();
+ $tabNewPers = array();
+ if (!empty($tabParticipant)) $tabNewPers = $tabParticipant;
+ for($i=0;$i<mysql_num_rows($result);$i++)
+ {
+ $row = mysql_fetch_array($result);
+ $tabOldPers[$i] = $row[0];
+ $tabOldPersMail[$i] = $row[1];
+ }
+ //Boucle permettant de mettre a NULL les &eacute;lements identiques aux deux tableaux
+ $i = 0;
+ while ($i < count($tabOldPers))
+ {
+ $exist=false;
+ for ($j=0;$j<count($tabNewPers);$j++)
+ {
+ if (($tabOldPers[$i] == $tabNewPers[$j]) or ($tabOldPersMail[$i] == $tabNewPers[$j]))
+ {
+ $exist = true;
+ $tabNewPers[$j]=NULL;
+ }
+ }
+ if ($exist)
+ {
+ $tabOldPers[$i]=NULL;
+ $tabOldPersMail[$i]=NULL;
+ }
+ $i++;
+ }
+ }
+
+ //Construction du tableau des participants a ajouter
+ $tabAdd = array();
+ foreach ($tabNewPers as $pers)
+ {
+ //Si c'est une adresse Mail : Inscription + Ajout Sinon Ajour simplement
+ if (!stristr($pers,'@')===false)
+ {
+ $tabAdd[] = new_pers($pers);
+ }
+ else
+ {
+ if ($pers != NULL) $tabAdd[] = $pers;
+ }
+ }
+ //Enleve les redondances d'idP
+ $tabAdd=array_unique($tabAdd);
+ //Envoie a la fonction d'ajout de personne
+ list_add_pers($tabAdd,$idL);
+
+ //Construction du tableau des participants a ajouter
+ $tabRemove = array();
+ foreach ($tabOldPers as $pers)
+ {
+ if ($pers != NULL) $tabRemove[] = $pers;
+ }
+ //Envoie a la fonction de suppression de personne
+ list_remove_pers($tabRemove,$idL);
+
+ }
+
+ function list_add_pers ($tabPers,$idL)
+ {
+ foreach ($tabPers as $pers)
+ {
+ $result=mysql_query("INSERT INTO AWOR_Appartenir (idP,idL) VALUES ($pers,$idL);");
+ }
+
+ }
+
+ function list_remove_pers ($tabPers,$idL)
+ {
+
+ foreach ($tabPers as $pers)
+ {
+ $result = mysql_query("DELETE FROM AWOR_Appartenir WHERE idP=$pers AND idL=$idL;");
+ }
+
+ }
+
+
+ //Fonction Inscription qui prends en parametre une adresse mail $persMail et qui retourne l'id de la perssonne (s'il elle existe)
+ // ou Insert une personne et retourne son identifiant
+ function new_pers ($persMail)
+ {
+ $result = mysql_query("SELECT idP,courrielP FROM AWOR_Personne WHERE courrielP = '$persMail'");
+ if (mysql_num_rows($result)>0)
+ {
+ $row = mysql_fetch_array($result);
+ return ($row['idP']);
+ }
+ else
+ {
+ $result = mysql_query("INSERT INTO AWOR_Personne (courrielP,loginP,nomP) VALUES ('$persMail','$persMail','$persMail')");
+ return (mysql_insert_id());
+ }
+
+ return (false);
+ }
+
+
+
+ //Fonction qui affiche toutes les liste public ainsi que les liste priv&eacute;e poss&eacute;d&eacute;es par idP
+ function generate_html_array_list ($idP)
+ {
+ $result = mysql_query("SELECT idL,libelleL,estPrivee,idP_Createur FROM AWOR_Liste WHERE idP_Createur=$idP OR estPrivee='non' ORDER BY estPrivee,libelleL");
+ echo "<table summary=\"Listes de personnes\">\n<tr>\n<th>Supprimer</th>\n<th>Type</th>\n<th>Libell&eacute;</th>\n</tr>\n";
+ if (mysql_num_rows($result)>0)
+ {
+
+ for($i=0;$i<mysql_num_rows($result);$i++)
+ {
+ $row = mysql_fetch_array($result);
+ echo "<tr>\n<td>";
+ if ($row['estPrivee'] == 'oui' || $row['idP_Createur']==$idP) echo "<a href=\"#\" onclick=\"loadid('popdeletelist.php?idL=".htmlentities($row[0], ENT_QUOTES)."','popdeletelist',true);popon('popdeletelist')\"><img src=\"images/supprimer.png\" alt=\"Supprimer ".htmlentities($row[1], ENT_QUOTES)."\" /></a></td>\n" ; else echo "</td>\n";
+ if ($row['estPrivee'] == 'oui') echo "<td>estPriv&eacute;e" ; else echo "<td>Public";
+ echo "</td>\n<td>";
+ echo "<a href=\"#\" onclick=\"loadid('poppersonne.php?idL=".$row['idL']."&amp;idP_orga=".$idP."','poppersonne',true);popon('poppersonne')\">";
+ echo htmlentities($row['libelleL'], ENT_QUOTES);
+ echo "</a></td>\n";
+ echo "</tr>\n";
+ }
+
+ }
+ echo "</table>\n";
+
+ }
+
+ function traiter_formulaire_commentaire()
+ {
+ require_once ('include/tools.inc.php');
+ if ($_GET['txtCommentaire'] != "")
+ {
+ require_once ('include/connect.inc.php');
+ if (isset($_GET['idR']))
+ {
+ $query="UPDATE AWOR_Repondre SET commentaireReponse ='".addslashes_if_needed($_GET['txtCommentaire'])."' WHERE idR=".addslashes_if_needed($_GET['idR'])." AND idP=".$_SESSION['session_idP'];
+ $result = @mysql_query($query);
+ if ( ! $result || ( mysql_affected_rows() !== 1 ) )
+ {
+ $query="INSERT INTO AWOR_Repondre(idR,idP,commentaireReponse) VALUES (".addslashes_if_needed($_GET['idR']).", ".$_SESSION['session_idP'].", '".addslashes_if_needed($_GET['txtCommentaire'])."')";
+
+ $result = mysql_query($query);
+ if ( ! $result || ( mysql_affected_rows() !== 1 ))
+ {
+ echo $query;
+ echo "Erreur BD\n";
+ return;
+ }
+ }
+ }
+ }
+ else
+ {
+ $query="DELETE FROM AWOR_Repondre WHERE idR=".addslashes_if_needed($_GET['idR'])." AND idP=".$_SESSION['session_idP'];
+ $result = mysql_query($query);
+ }
+ }
+
+ // Modifi&eacute;e par Ludo pour les probl&egrave;mes de variables de session et pour d'autres d&eacute;tails :
+ // S'il n'y a pas de commentaire, on affiche le tableau vide
+ function generate_html_reunion_commentaires($idR)
+ {
+ $idP = $_SESSION['session_idP'];
+ echo '<table cellspacing="0" class="commentaires" summary="Liste des commentaires laiss&eacute;s pour les personnes convi&eacute;es &agrave; cette r&eacute;union">';
+ echo '<thead>';
+ echo '<tr>';
+ echo "<th>Commentaires <a href=\"#\" onclick=\"loadid('popcommentaire.php?idR=".$idR."&amp;idP=".$idP."','popcommentaire',true);popon('popcommentaire');\">(Editer votre commentaire)</a></th>";
+ echo '</tr>';
+ echo '</thead>';
+ $requete = "SELECT P.nomP,P.prenomP,P.courrielP,R.commentaireReponse FROM AWOR_Repondre R,AWOR_Personne P WHERE P.idP = R.idP AND R.idR = '".$idR."'";
+ //echo "DEBUG : requete : $requete\n";
+ $resultat = mysql_query($requete);
+ if($resultat != false)
+ {
+ if(mysql_num_rows($resultat) > 0)
+ {
+ while($pers = mysql_fetch_array($resultat))
+ {
+ echo '<tr><td>';
+ echo htmlentities($pers["nomP"], ENT_QUOTES) . " " . htmlentities($pers["prenomP"], ENT_QUOTES);
+ echo " : ".htmlentities($pers["commentaireReponse"], ENT_QUOTES)."</td></tr>\n";
+
+ }
+ }
+ else
+ {
+ echo "<tr><td>Aucun commentaire pour le moment.</td></tr>\n";
+ }
+ }
+ echo '</table>';
+ }
+?> \ No newline at end of file
diff --git a/final/app/include/ju.inc.php b/final/app/include/ju.inc.php
new file mode 100644
index 0000000..a7154b7
--- /dev/null
+++ b/final/app/include/ju.inc.php
@@ -0,0 +1,227 @@
+<?php
+function traiter_formulaire_popfichier()
+{
+ require("include/ludo/config.inc.php");
+ require("include/tools.inc.php");
+ $file = "fichier";
+ if ( isset($CONFIG['UPLOAD']['relative_path']) ) { $basepath=$CONFIG['UPLOAD']['relative_path']; } else { $basepath='fichiers/';}
+ $basepath=$_SERVER['DOCUMENT_ROOT'].'/'.$basepath;
+
+ if(isset($_FILES[$file]))
+ {
+ if($_FILES[$file]["error"] == 0)
+ {
+ //R&eacute;cup&eacute;ration de l'extension
+ $ext = explode(".", $_FILES[$file]["name"]);
+ $ext = array_pop($ext);
+ if(is_numeric(array_search(strtolower($ext), $CONFIG["UPLOAD"]["accepted_files"])))
+ {
+ $filepath=$basepath."r".$_GET["idR"]."_".$_FILES[$file]["name"];
+ if(!file_exists($filepath))
+ {
+ if(move_uploaded_file($_FILES[$file]["tmp_name"], $filepath))
+ {
+ if(isset($debug)) echo "DEBUG : basepath==$basepath\n";
+ $requete = "INSERT INTO AWOR_Fichier(nomFic, idR) VALUES ('"."r".addslashes_if_needed($_GET["idR"])."_".$_FILES[$file]["name"]."', '".addslashes_if_needed($_GET["idR"])."')";
+ if(mysql_query($requete) == false)
+ {
+ if(isset($debug)) echo "DEBUG : ".mysql_error()."<br/>\n";
+ if(isset($debug)) echo "DEBUG : ".$requete."<br/>\n";
+ return "Erreur : Une erreur MySQL est survenu.";
+ }
+ }
+ else
+ {
+ return "Erreur Uploader file";
+ }
+ }
+ else
+ {
+ return "Erreur : Un fichier de meme nom existe deja";
+ }
+ }
+ else
+ {
+ return "Erreur : Le fichier n'a pas ete uploader correctement.";
+ }
+ }
+ else
+ {
+ switch($_FILES[$file]["error"])
+ {
+ case 1 :
+ case 2 : return "Erreur : Le fichier a une taille trop importante."; break;
+ case 3 : return "Erreur : Le fichier n'a pas ete envoye en entier."; break;
+ case 4 : return "Erreur : Aucun fichier recu."; break;
+ }
+ echo $erreur;
+ }
+ }
+ else
+ {
+ return "isset";
+ }
+}
+
+
+function generate_html_reunion_fichiers($idR)
+{
+ require("include/ludo/config.inc.php");
+ if ( isset($CONFIG['UPLOAD']['relative_path']) ) { $basepath='/'.$CONFIG['UPLOAD']['relative_path']; } else { $basepath='/fichiers/';}
+
+ $requete = "SELECT * FROM AWOR_Fichier WHERE idR = '".$idR."'";
+ $resultat = mysql_query($requete);
+ if($resultat != false)
+ {
+ echo '<table cellspacing="0" class="fichiers" summary="Liste des fichiers post&eacute;s par les participants de la r&eacute;union.">';
+ echo '<thead>';
+ echo '<tr>';
+ echo '<th>Fichiers attach&eacute;s <a href="#" onclick="popon(\'popfichier\')">(Ajouter un fichier)</a></th>';
+ echo '</tr>'."\n";
+ echo '</thead>';
+ if(mysql_num_rows($resultat) > 0)
+ {
+ while($fichier = mysql_fetch_array($resultat))
+ {
+ echo '<tr><td><a href="' . str_replace(" ", "%20", urlencode($basepath . $fichier["nomFic"])).'" target="_blank" >'.htmlentities($fichier["nomFic"], ENT_QUOTES)."</a></td></tr>\n";
+ }
+ }
+ else
+ {
+ echo "<tr><td>Aucun fichier pour cette reunion.</td></tr>\n";
+ }
+ echo '</table>';
+ }
+}
+
+function traiter_formulaire_valider_creneau()
+{
+ $tabCreneau = array();
+ if(isset($_REQUEST["dataCreneaux"]))
+ {
+ //Pour chaque creneau poste, on verifie s'il existe, si non on le creer
+ foreach($_REQUEST['dataCreneaux'] as $creneau)
+ {
+ $tabCreneau = explode(".", $creneau);
+ $heureD = substr($tabCreneau[0], 0, 2);
+ $minD = substr($tabCreneau[0], 2, 2);
+ $heureA = substr($tabCreneau[1], 0, 2);
+ $minA = substr($tabCreneau[1], 2, 2);
+ $jourA = $tabCreneau[2];
+ $moisA = $tabCreneau[3];
+ $anneeA = $tabCreneau[4];
+ //Si un creneau n'existe pas on le creer
+ $idCreneau = creneauExiste($_REQUEST["idR"], $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA);
+ if($idCreneau == false)
+ {
+ $newIdC = ajouterCreneau($_REQUEST["idR"], $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA);
+ if($newIdC != false)
+ {
+ $tabNewCreneau[] = $newIdC;
+ }
+
+ }
+ else
+ {
+ $tabNewCreneau[] = $idCreneau;
+ }
+ }
+ // tabCreneau contient les tous les creneaux dont on a besoin pour la reunion, il faut maintenant supprimer de la base
+ // tous les creneaux de la reunion qui n'apparaissent pas dans cette liste
+ $listeCreneau = "(";
+ foreach($tabNewCreneau as $creneau)
+ {
+ $listeCreneau .= "'".$creneau."', ";
+ }
+ $listeCreneau .= "'XXX')";
+ if(isset($debug)) echo $listeCreneau;
+
+ //On recupere les creneaux ne faisant plus partie de la novuelle liste des creneaux
+ $requete = "SELECT idC FROM AWOR_Creneau WHERE idR='".$_REQUEST["idR"]."' AND idC NOT IN ".$listeCreneau;
+ //echo "DEBUG : $requete";
+ if($resultat = mysql_query($requete))
+ {
+ while($ligne = mysql_fetch_array($resultat))
+ {
+ supprimerCreneau($ligne["idC"]);
+ }
+ }
+ }
+}
+
+function traiter_formulaire_maj_profil()
+{
+ require_once ('include/tools.inc.php');
+ $requete = "UPDATE AWOR_Personne SET courrielP = '".addslashes_if_needed($_POST["courrielP"])."', loginP = '".addslashes_if_needed($_POST["loginP"])."', nomP = '".addslashes_if_needed($_POST["nomP"])."', prenomP = '".addslashes_if_needed($_POST["prenomP"])."', methodeAuth = '".addslashes_if_needed($_POST["methodeAuth"])."' WHERE idP = '".$_SESSION['session_idP']."'";
+ if(mysql_query($requete) == false) return "Une erreur MySQL est survenu : ".mysql_error();
+ $_SESSION['session_prenomP'] = $_POST["prenomP"];
+ $_SESSION['session_nomP'] = $_POST["nomP"];
+ //print_r($_POST);
+}
+
+function ajouterCreneau($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA)
+{
+ $dateD = mktime($heureD, $minD, 0, $moisA, $jourA, $anneeA);
+ $dateA = mktime($heureA, $minA, 0, $moisA, $jourA, $anneeA);
+ $duree = $dateA - $dateD;
+ $dateD = date("Y-m-d G:i:s", $dateD);
+ $duree = $duree / 60;
+ $requete = "INSERT INTO AWOR_Creneau (dateHeure, duree, idR) VALUES ('".$dateD."', '".$duree."', '".$idR."')";
+ if(isset($debug)) echo $requete."<br/>";
+ if(mysql_query($requete)) { return mysql_insert_id(); } else { return false; }
+}
+
+function ajouterCreneau2($idR, $dateHeure, $duree)
+{
+ $requete = "INSERT INTO AWOR_Creneau (dateHeure, duree, idR) VALUES ('".$dateHeure."', '".$duree."', '".$idR."')";
+ if(mysql_query($requete))
+ {
+ return mysql_insert_id();
+ }
+ else
+ {
+ return false;
+ }
+}
+
+function supprimerCreneau($idC)
+{
+ if(mysql_query("DELETE FROM AWOR_Creneau WHERE idC='".$idC."'"))
+ {
+ if(mysql_query("DELETE FROM AWOR_Choisir WHERE idC='".$idC."'"))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+}
+
+function creneauExiste($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA)
+{
+ $dateD = mktime($heureD, $minD, 0, $moisA, $jourA, $anneeA);
+ $dateA = mktime($heureA, $minA, 0, $moisA, $jourA, $anneeA);
+ $duree = $dateA - $dateD;
+ $dateD = date("Y-m-d G:i:s", $dateD);
+ $duree = $duree / 60;
+ $requete = "SELECT idC FROM AWOR_Creneau WHERE idR='".$idR."' AND dateHeure='".$dateD."' AND duree=".$duree."";
+ if($result = mysql_query($requete))
+ {
+ if(mysql_num_rows($result) > 0)
+ {
+ $ligne = mysql_fetch_array($result);
+ return $ligne["idC"];
+ }
+ else
+ {
+ return false;
+ }
+ }
+}
+?> \ No newline at end of file
diff --git a/final/app/include/ludo/TODO_list.txt b/final/app/include/ludo/TODO_list.txt
new file mode 100644
index 0000000..724c46c
--- /dev/null
+++ b/final/app/include/ludo/TODO_list.txt
@@ -0,0 +1,24 @@
+Accueil > _Listes_ (virer le lien)
+
+mysql_free_result après les requetes et mysql_close ?
+
+configuration de PHP dans un fichier INI :
+array parse_ini_file ( string filename [, bool process_sections] )
+
+
+Vérifier que les redirections vers authentification et le retour fasse bien suivre les paramètres
+--> bookmarque details_reunion?idR=1
+
+
+faire une fonction JS qui appelle une page php ou créer toute seule un cookie qui gère la préférence du css.
+
+Se préoccuper des accents et des encodages de pages !
+
+Faire un pied de page avec nos noms, et les logos valide XHTML, CSS...
+
+TODO : un script php qui purge la base
+-> export SQL ancienne base ?
+-> suppression des réunions plus vielles que...
+-> suppression des Personnes n'ayant jamais changé leur profil et n'ayant plus de réunion les concernant
+-> suppression de tout les créneaux non référencés
+-> suppression de toutes les listes privées obsoletes
diff --git a/final/app/include/ludo/auth.inc.php b/final/app/include/ludo/auth.inc.php
new file mode 100644
index 0000000..2491203
--- /dev/null
+++ b/final/app/include/ludo/auth.inc.php
@@ -0,0 +1,78 @@
+<?php
+/*
+ * Collection de fonctions pour une authentification externe POP3
+ */
+
+// Constantes d'erreur
+define("ERR_POP3_AUTH_BADSOCK", -1);
+define("ERR_POP3_AUTH_SERVERNACK", -2);
+define("ERR_POP3_AUTH_BADUSER", -3);
+define("ERR_POP3_AUTH_BADPASS", -4);
+define("ERR_BAD_PARAMS", -100);
+
+// Fonction d'authentification pop3
+function pop3_auth_simple($mail, $upw)
+{
+ if ( ($ret = ereg ( "(^.*)@([[:alnum:]]+\.[[:alnum:]]+)", $mail, $re_tokens ) ) )
+ {
+ /* $re_tokens []
+ * [0] : email complet
+ * [1] : nom_mail
+ * [2] : serveur_mail
+ */
+ require_once('config.inc.php');
+ $srv_conf = $CONFIG['AUTH']['POP']['SERVERS'][strtolower($re_tokens[2])];
+ if ( is_array($srv_conf) )
+ {
+ $server=$srv_conf['subdomain'];
+ $port=$srv_conf['port'];
+ if ( $srv_conf['username_is_full_mail'] )
+ { $user = $mail; } else { $user = $re_tokens[1]; }
+ return pop3_auth ($server, $port, $user, $upw);
+ }
+ }
+ /* DEBUG
+ echo $mail . "\n" . $ret . "\n";;
+ print_r($re_tokens);
+ */
+ return ERR_BAD_PARAMS;
+}
+
+function pop3_auth ($server, $port, $user, $upw)
+{
+ //echo "DEBUG : fsockopen($server, $port, $errno, $errstr, 10);";
+ $sock = @fsockopen($server, $port, $errno, $errstr, 10);
+ if ( $sock === false)
+ {
+ return ERR_POP3_AUTH_BADSOCK;
+ }
+
+ //stream_set_timeout ( $sock, 1, 0 );
+
+ fputs($sock, "user $user\r\n");
+
+ if ( pop3_GetAndTestReply($sock) === false )
+ {
+ return ERR_POP3_AUTH_BADUSER;
+ }
+
+ fputs($sock, "pass $upw\r\n");
+
+ if ( pop3_GetAndTestReply($sock) === false )
+ {
+ return ERR_POP3_AUTH_BADPASS;
+ }
+
+ fputs($sock, "quit\r\n");
+
+ return 0;
+}
+
+// Fonction interne testant les r&eacute;ponses du serveur POP3
+function pop3_GetAndTestReply($sock)
+{
+ $reply = fgets($sock, 128);
+ echo $reply . "\n";
+ return ( substr($reply, 0, 4) == "+OK " );
+}
+?> \ No newline at end of file
diff --git a/final/app/include/ludo/config.inc.php b/final/app/include/ludo/config.inc.php
new file mode 100644
index 0000000..7f1d587
--- /dev/null
+++ b/final/app/include/ludo/config.inc.php
@@ -0,0 +1,74 @@
+<?php
+$CONFIG = array
+(
+ 'adminMail' => 'jmi@iut-blagnac.fr',
+ 'automatedMail' => 'no_reply@iut-blagnac.fr',
+ 'AUTH' => array
+ (
+ 'POP' => array
+ (
+ 'SERVERS' => array
+ (
+ 'wanadoo.fr' => array
+ (
+ 'subdomain' => 'pop.orange.fr',
+ 'port' => 110,
+ 'username_is_full_mail' => false
+ ),
+ 'orange.fr' => array
+ (
+ 'subdomain' => 'pop.orange.fr',
+ 'port' => 110,
+ 'username_is_full_mail' => false
+ )
+ )
+ ),
+ 'bypass_if_local' => false
+ ),
+ 'CSS' => array
+ (
+ 'CHOOSER_LIST' => array
+ (
+ // 'nom &agrave; afficher' => 'nom_fichier_sans_extension'
+ 'standard' => 'ice',
+ 'Glace (ancien)' => 'ice_moche',
+ 'bleu' => 'style1'
+ )
+ ),
+ 'MAIL' => array
+ (
+ 'TEMPLATES' => array
+ (
+ 'cree' => array
+ (
+ 'caption' => 'Nouvelle R&eacute;union',
+ 'tpl_file' => 'mail_cree.php'
+ ),
+ 'modif' => array
+ (
+ 'caption' => 'R&eacute;union modifi&eacute;e',
+ 'tpl_file' => 'mail_modif.php'
+ ),
+ 'annul' => array
+ (
+ 'caption' => 'R&eacute;union annul&eacute;e',
+ 'tpl_file' => 'mail_annul.php'
+ ),
+ 'fixee' => array
+ (
+ 'caption' => 'R&eacute;union fix&eacute;e',
+ 'tpl_file' => 'mail_fixee.php'
+ )
+ )
+ ),
+ 'SUPERUSERS' => array ('jeremie.denoyer', 'lpouzenc'),
+ 'UPLOAD' => array
+ (
+ 'accepted_files' => array
+ (
+ 'jpg', 'jpeg', 'gif', 'png', 'svg', 'pdf', 'ps', 'txt', 'rtf', 'csv', 'doc', 'docx', 'ppt', 'xls', 'sxw','sxp','sxd', 'odt', 'odg', 'odp', 'avi', 'mpg', 'mpeg', 'rm', 'flv', 'mp3', 'mp4', 'ogg','htm','html','zip', 'rar', 'tar', 'gz', 'bz2', 'ace'
+ ),
+ 'relative_path' => 'final/upload_files/'
+ )
+);
+?>
diff --git a/final/app/include/ludo/div_create_or_modif.php b/final/app/include/ludo/div_create_or_modif.php
new file mode 100644
index 0000000..34e81ca
--- /dev/null
+++ b/final/app/include/ludo/div_create_or_modif.php
@@ -0,0 +1,74 @@
+<?php
+require_once ('../tools.inc.php');
+
+$isModif=false;
+if ( isset ( $_GET['idR']) )
+{
+ if ( ! isset($_GET['objetR']) || ! isset($_GET['lieuR']) || ! isset($_GET['ordreJourR']) || ! isset($_GET['remarquesR']) )
+ {
+ $errmsg="Impossible de modifier la r&eacute;union : Param&egrave;tres incorrects\n";
+ return;
+ }
+ $idR=htmlentities(stripslashes_if_needed($_GET['idR']), ENT_QUOTES);
+ $objetR=htmlentities(stripslashes_if_needed($_GET['objetR']), ENT_QUOTES);
+ $lieuR=htmlentities(stripslashes_if_needed($_GET['lieuR']), ENT_QUOTES);
+ $ordreJourR=htmlentities(stripslashes_if_needed($_GET['ordreJourR']), ENT_QUOTES);
+ $remarquesR=htmlentities(stripslashes_if_needed($_GET['remarquesR']), ENT_QUOTES);
+
+ $isModif=true;
+}
+?>
+<form action="" method="post">
+ <input name="action" type="hidden" value="modif_detail_reunion" />
+<?php
+ echo ' <input name="idR" type="hidden" value="' . $idR . '" />'
+?>
+ <table class="detail_reunion" summary="D&eacute;tail de la r&eacute;union que vous avez s&eacute;lectionn&eacute;e">
+ <thead>
+ <tr>
+ <th colspan="2">
+ <?php if ($isModif) { echo 'Modification des d&eacute;tails de la r&eacute;union'; } else { echo 'Cr&eacute;ation d\'une r&eacute;union'; } ?>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>Objet :</strong></td>
+ <td>
+ <input name="objetR" type="text" size="40" <?php if ($isModif) { echo 'value="' . $objetR .'"'; } ?>></input>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Lieu :</strong></td>
+ <td>
+ <input name="lieuR" type="text" size="40" <?php if ($isModif) { echo 'value="' . $lieuR .'"'; } ?>></input>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Ordre du jour :</strong></td>
+ <td>
+ <textarea name="ordreJourR" cols="40" rows="3"><?php if ($isModif) { echo $ordreJourR; } ?></textarea>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Remarques :</strong></td>
+ <td>
+ <textarea name="remarquesR" cols="40" rows="3"><?php if ($isModif) { echo $remarquesR; } ?></textarea>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Etat :</strong></td>
+ <td>
+ <input name="isCancelled" type="checkbox">Annul&eacute;e</input>
+ <input name="isHidden" type="checkbox" checked="checked">Disponibilit&eacute;s masqu&eacute;es</input>
+ </td>
+ </tr>
+ <tr>
+ <!--<td>&nbsp;</td>-->
+ <td colspan="2">
+ <input name="Valider" type="submit" value="Valider"></input>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</form> \ No newline at end of file
diff --git a/final/app/include/ludo/fonctions.inc.php b/final/app/include/ludo/fonctions.inc.php
new file mode 100644
index 0000000..9124ac5
--- /dev/null
+++ b/final/app/include/ludo/fonctions.inc.php
@@ -0,0 +1,548 @@
+<?php
+/*
+ * Fonctions de g&eacute;n&eacute;ration de message d'erreur pour utilisateur (et le debuggueur !)
+ */
+// Fonction retournant un message d'erreur correspondant &agrave; une erreur mysql
+function mysql_generate_errmsg()
+{
+ if ( isset($_REQUEST['debug']) )
+ {
+ return 'Erreur SQL num&eacute;ro ' . mysql_errno() . ' : ' . mysql_error();
+ }else{
+ return 'Une erreur de base de donn&eacute;es s\'est produite, veuillez r&eacute;essayer ult&eacute;rieurement.';
+ }
+}
+
+// Fonction retournant un message d'erreur correspondant &agrave; un numero d'erreur de pop3_auth(...)
+function pop3_generate_errmsg($errno)
+{
+ require_once 'auth.inc.php';
+
+ if ( isset($_REQUEST['debug']) )
+ {
+ $msg = 'Erreur authentification POP3 de code ' . $errno;
+ }else{
+ switch ($errno)
+ {
+ case ERR_POP3_AUTH_BADUSER :
+ case ERR_POP3_AUTH_BADPASS :
+ $msg = 'Authentification rejet&eacute;e : V&eacute;rifiez votre identifiant et saisissez votre mot de passe &agrave; nouveau';
+ break;
+ case ERR_BAD_PARAMS :
+ $msg = 'Adresse email invalide, ou serveur mail non r&eacute;pertori&eacute;';
+ break;
+ default :
+ $msg = 'Une erreur de communication avec le service d\'authentification s\'est produite,' .
+ 'veuillez r&eacute;essayer ult&eacute;rieurement.';
+ break;
+ }
+ }
+ return $msg;
+}
+
+/*
+ * G&eacute;n&eacute;ration du code html d'une case du tableau crois&eacute; Cr&eacute;neau/Presonnes ayant comme personne $idP,
+ * comme cr&eacute;neau $idC. Si $idEditable est vrai je pourrai cliquer sur le bouton
+ * pour donner ma disponibilit&eacute;. $estDispo peut-&ecirc;tre 'oui', 'non', ou '' et signifie que la personne a d&eacute;j&agrave; r&eacute;pondu 'oui', non'
+ * ou n'a pas encore r&eacute;pondu.
+ */
+// G&eacute;n&eacute;ration d'une case
+function generate_html_dispo_case($idR, $idP, $idC, $isEditable, $estDispo, $withTD=false, $class='')
+{
+ // Alignement html
+ require_once('html_elements.inc.php');
+ if ( ! $isEditable )
+ {
+ if ( $withTD ) { echo " <td $class>\n "; }
+ // Cas g&eacute;n&eacute;ral, on n'est pas la personne concern&eacute;e
+ if ( ! isset($estDispo) || $estDispo == '' )
+ { // Dispo Inconnue (icone ?)
+ generate_html_dispo_inconnu($idP, $idC);
+ }
+ else
+ {
+ if ( $estDispo == 'oui' )
+ { // Disponible
+ generate_html_dispo_oui($idP, $idC);
+ }else
+ { // Non Disponible
+ generate_html_dispo_non($idP, $idC);
+ }
+ }
+ }
+ else
+ {
+ if ( $withTD ) { echo " <td id=\"dispo_idC${idC}\" $class>\n "; }
+ // On est la personne concern&eacute;e, on peut donc choisir le cr&eacute;neau
+ if ( ! isset($estDispo) || $estDispo == '' )
+ { // Dispo Inconnue
+ generate_html_dispo_dire_oui($idR, $idC);
+ //~ echo ' &nbsp;&nbsp;';
+ generate_html_dispo_dire_non($idR, $idC);
+ }
+ else
+ {
+ if ( $estDispo == 'oui' )
+ { // Disponible
+ generate_html_dispo_oui($idP, $idC);
+ //~ echo ' &nbsp;&nbsp;'."\n ";
+ generate_html_dispo_dire_non($idR, $idC);
+ }else
+ {
+ // Non Disponible
+ generate_html_dispo_dire_oui($idR, $idC);
+ //~ echo ' &nbsp;&nbsp;'."\n ";
+ generate_html_dispo_non($idP, $idC);
+ }
+ }
+ }
+ if ( $withTD ) { echo " </td>\n"; }
+}
+
+// G&eacute;n&eacute;ration du tableau complet
+// TODO : id&eacute;e : class du tableau diff&eacute;rnete quand annul&eacute;e -> tableau gris&eacute;...
+
+function generate_html_array_personnes_crenaux($idR)
+{
+ $idP_Self=$_SESSION['session_idP'];
+
+ // Connexion &agrave; la base et s&eacute;lection de la database
+ require_once 'include/connect.inc.php';
+
+ // R&eacute;cup&eacute;ration des param&egrave;tres de la r&eacute;union...
+ $montrerDispoR=$estAnnulee=$is_admin=$estFixee=false;
+ $idP_orga=null;
+ $query="SELECT r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, r.idL FROM AWOR_Reunion r WHERE r.idR='$idR'";
+ $result = @mysql_query($query);
+ if ( $result && ( mysql_num_rows($result) === 1 ) )
+ {
+ list($montrerDispoR, $estAnnulee, $idP_orga, $idC_Fixe, $idL_interne) = mysql_fetch_row($result);
+ $is_admin = ( $idP_Self == $idP_orga );
+ $montrerDispoR = ( ( $montrerDispoR === 'oui' ) || $is_admin ) ;
+ //echo "DEBUG : annul&eacute;e $estAnnulee\n";
+ $estAnnulee = ( $estAnnulee == 'oui' );
+ $estFixee = ( $idC_Fixe != null);
+ }
+ else
+ {
+ return "Impossible d'afficher le tableau de la réunion : Erreur de base de donnée\n";
+ }
+ // DEBUG : tests en forçant les variables
+ //$estAnnulee=true;
+
+ //~ echo "DEBUG : \nmontrerDispoR==$montrerDispoR\nestAnnulee==$estAnnulee\nestFixee==$estFixee\nis_admin==$is_admin\n";
+?>
+<form id="formmail" action="sendmail.php" method="post">
+ <table class="details" summary="Disponibilit&eacute; des personnes pour chaque cr&eacute;neau possible de la r&eacute;union">
+ <thead>
+ <tr>
+<?php
+ if ( $is_admin )
+ {
+ echo ' <th>Mail</th>' . "\n";
+ }
+ echo ' <th>' ."\n";
+ if ( $is_admin )
+ {
+ echo ' <a href="#poppersonne" onclick="loadid(\'poppersonne.php?idR=' . $idR;
+ echo '&amp;idL=' . $idL_interne . '&amp;idP_orga=' . $idP_orga . '\',\'poppersonne\',true);popon(\'poppersonne\');">' . "\n";
+ echo ' <img src="images/addP.gif" alt="Ajouter une personne" title="Ajouter une personne" height="17" width="19" />' . "\n";
+ echo ' </a>&nbsp;';
+ }
+ echo 'Personnes' . "\n";
+ echo ' </th>' . "\n";
+
+ // Remplissage des ent&ecirc;tes de colonnes (cr&eacute;neaux)
+ $query="SELECT idC, UNIX_TIMESTAMP(dateHeure), duree FROM AWOR_Creneau WHERE idR='$idR' ORDER BY dateHeure ASC;";
+ $creneaux=array();
+ $dispos=array();
+ if ( $result = @mysql_query($query) )
+ {
+ while ( list($idC, $date_deb, $duree) = mysql_fetch_row($result) )
+ {
+ // Calcul des dates
+ //echo $date_deb . "\n";
+ $date_fin = $date_deb + 60 * $duree;
+ if ( $idC != $idC_Fixe ) { echo ' <th>'; } else { echo ' <th class="selected">'; }
+ if ( $is_admin && ! $estFixee && ! $estAnnulee )
+ {
+ echo '<a href="#popfixer" onclick="loadid(\'popfixer.php?idC=' . $idC;
+ echo '&amp;idR=' . $idR . '\',\'popfixer\',true);popon(\'popfixer\');">';
+ }
+ echo date('d/m/y', $date_deb) . '<br />' . date('H:i', $date_deb) . ' - ' . date('H:i', $date_fin);
+ if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo '</a>'; }
+ echo "</th>\n";
+
+ // Comptage des personnes disponibles et indisponibles
+ $creneaux[] = $idC;
+ $dispos[$idC]['nbDispo']=0;
+ $dispos[$idC]['nbNonDispo']=0;
+ $dispo_max_id=-1;
+ $dispo_max_val=0;
+ }
+ }
+ if ( $is_admin && ! $estFixee && ! $estAnnulee )
+ {
+?>
+ <th>
+ <a href="#popcreneau" onclick="loadid('popcreneau.php?idR=<?php echo $idR; ?>','popcreneau',true);popon('popcreneau');">
+ <img src="./images/editCreneau2.gif" alt="Editer les creneaux" title="Editer les creneaux" height="21" width="22" />
+ </a>
+ </th>
+<?php
+ }
+ //print_r($creneaux);
+?>
+ </tr>
+ </thead>
+ <tbody>
+<?php
+ // Remplissage du tableau, ligne &agrave; ligne
+ // Requette &eacute;crivant les disponibilit&eacute;s dans un tableau associatif en une seule fois
+ if ( $montrerDispoR )
+ {
+ $query='SELECT ch.idC, ch.idP, ch.estDispo FROM AWOR_Choisir ch, AWOR_Creneau c, AWOR_Personne p, AWOR_Appartenir a, AWOR_Reunion r WHERE '
+ ."c.idR=$idR AND r.idR=$idR AND a.idL=r.idL AND p.idP=a.idP AND ch.idC = c.idC AND ch.idP = p.idP;";
+ }
+ else
+ {
+ $query='SELECT ch.idC, ch.idP, ch.estDispo FROM AWOR_Choisir ch, AWOR_Creneau c WHERE '
+ ."c.idR='$idR' AND ch.idC=c.idC AND ch.idP='$idP_Self';";
+ }
+ //echo $query . "\n";
+ if ( $result = @mysql_query($query) )
+ {
+ while ( list($idC, $idP, $estDispo) = mysql_fetch_row($result) )
+ {
+ //echo "idC == '$idC'\n";
+ $dispos[$idC][$idP]=$estDispo;
+ if ( $estDispo=='non' ) { $dispos[$idC]['nbNonDispo']++; }
+ if ( $estDispo=='oui' )
+ {
+ $dispos[$idC]['nbDispo']++;
+ if ( $dispos[$idC]['nbDispo'] > $dispo_max_val )
+ {
+ $dispo_max_id=$idC;
+ $dispo_max_val=$dispos[$idC]['nbDispo'];
+ }
+ }
+ }
+ }
+ //print_r($dispos);
+
+
+ $query='SELECT p.idP, p.prenomP, p.nomP FROM AWOR_Personne p, AWOR_Appartenir a, AWOR_Reunion r WHERE '
+ . "r.idR='$idR' AND a.idL=r.idL AND p.idP=a.idP ORDER BY p.nomP, p.prenomP;";
+
+ if ( $result = @mysql_query($query) )
+ {
+ // On &eacute;crit ligne &agrave; ligne les personnes et les disponibilit&eacute;s
+ while ( $p = mysql_fetch_array($result) ) // Boucle sur chaque personne
+ {
+ echo " <tr>\n";
+ // Colonne de checkbox pour envoi email si $is_admin == true
+ if ( $is_admin ) { echo ' <td><input name="mail_idP' . $p[0] . '" type="checkbox" checked="checked" /></td>' . "\n"; }
+ // Nom pr&eacute;nom
+ echo ' <td>' . htmlentities($p[1], ENT_QUOTES) . ' ' . htmlentities($p[2], ENT_QUOTES) . "</td>\n";
+ // Disponibilit&eacute;s
+ foreach ( $creneaux as $c_id ) // Pour chaque cr&eacute;neau
+ {
+ if (isset($dispos[$c_id][$p[0]]))
+ {
+ $estDispo=$dispos[$c_id][$p[0]];
+ }
+ else
+ {
+ $estDispo='';
+ }
+ //echo "DEBUG : generate_html_dispo_case($p[0], $c_id, ( $p[0]==$idP_Self ), $estDispo);\n";
+ if ( $c_id != $idC_Fixe ) { $class=''; } else { $class='class="selected"'; }
+
+ generate_html_dispo_case($idR, $p[0], $c_id, ( ! $estFixee && ! $estAnnulee && ( $p[0]==$idP_Self ) ),$estDispo, true, $class);
+ }
+ // Colonne vide pour l'ajout de personnes
+ if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " <td>&nbsp;</td>\n"; }
+ echo " </tr>\n";
+ }
+ // Si $is_admin, on met une ligne avec bouton envoyer pour les mails et icône ajout de personnes
+ if ( $is_admin )
+ {
+ echo " <tr>\n <td>\n";
+ echo ' <input name="idR" value="' . $idR . '" type="hidden" />' . "\n";
+?>
+ <input value="Envoyer" type="submit" />
+ </td>
+ <td>
+ <?php
+ echo '<a href="#poppersonne" onclick="loadid(\'poppersonne.php?idR=' . $idR;
+ echo '&amp;idL=' . $idL_interne . '&amp;idP_orga=' . $idP_orga . '\',\'poppersonne\',true);popon(\'poppersonne\');">' . "\n";
+ ?>
+ <img src="images/addP.gif" alt="Ajouter une personne" title="Ajouter une personne" height="17" width="19" />
+ </a>
+ </td>
+<?php
+ foreach ( $creneaux as $c ) { echo " <td>&nbsp;</td>\n"; }
+ if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " <td>&nbsp;</td>\n"; }
+ echo " </tr>\n";
+ }
+
+ // On inscrit les lignes de totaux si les disponibilit&eacute;s sont r&eacute;v&eacute;l&eacute;es
+ if ( $is_admin && ! $estFixee && ! $estAnnulee)
+ {
+ echo " <tr>\n";
+ echo " <td>&nbsp;</td>\n";
+ echo " <td>Personnes pr&eacute;sentes</td>\n";
+ foreach ( $creneaux as $c_id )
+ {
+ if ( $c_id == $dispo_max_id )
+ {
+ echo ' <td><em>' . $dispos[$c_id]['nbDispo'] . "</em></td>\n";
+ }
+ else
+ {
+ echo ' <td>' . $dispos[$c_id]['nbDispo'] . "</td>\n";
+ }
+ }
+ echo " <td>&nbsp;</td>\n";
+ echo " </tr>\n";
+
+ echo " <tr>\n";
+ echo " <td>&nbsp;</td>\n";
+ echo " <td>Personnes absentes</td>\n";
+ foreach ( $creneaux as $c_id )
+ {
+ echo ' <td>' . $dispos[$c_id]['nbNonDispo'] . "</td>\n";
+ }
+ echo " <td>&nbsp;</td>\n";
+ echo " </tr>\n";
+ }
+ }
+ echo " </tbody>\n";
+ echo " </table>\n</form>\n";
+}
+
+function traiter_formulaire_fixer_creneau()
+{
+ if ( ! isset($_GET['idR']) || !isset($_GET['idC']) )
+ {
+ $errmsg="Impossible de fixer la r&eacute;union : param&egrave;tres manquants ou erron&eacute;";
+ return $errmsg;
+ }
+ $idR=addslashes($_GET['idR']);
+ $idC=addslashes($_GET['idC']);
+
+ $query="UPDATE AWOR_Reunion SET idC_Fixe=$idC WHERE idR=$idR;";
+ if ( ! mysql_query($query) || mysql_affected_rows() != 1 )
+ {
+ $errmsg='Impossible de fixer la r&eacute;union : ' . mysql_generate_errmsg();
+ return $errmsg;
+ }
+ return;
+}
+
+function traiter_formulaire_creer_reunion()
+{
+ include_once('include/je.inc.php');
+ $idP=$_SESSION['session_idP'];
+
+ // Recherche d'une r&eacute;union vierge d&eacute;j&agrave; existante
+ $query='SELECT idR FROM AWOR_Reunion WHERE idP_Orga=' . "('$idP') AND objetR='Renseignez';";
+ if ( ( $result = mysql_query($query) ) && (mysql_num_rows($result) > 0) )
+ {
+ list($idR)=mysql_fetch_array($result);
+ }
+ else
+ {
+ // Cr&eacute;ation de la R&eacute;union sauf si une r&eacute;union vierge existe d&eacute;j&agrave;
+ $query='INSERT INTO AWOR_Reunion(idP_Orga, objetR) VALUES' . "('$idP', 'Renseignez');";
+ if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) )
+ {
+ // Cas d'erreur
+ $errmsg ='Erreur lors de la cr&eacute;ation de la liste de participants : ' . mysql_generate_errmsg();
+ return $errmsg;
+ }
+ $idR=mysql_insert_id();
+
+ // Cr&eacute;ation de la Liste des participants
+ if ( ! $idL=list_new("interne_idR_$idR","NULL",true) )
+ {
+ $errmsg ='Erreur lors de la cr&eacute;ation de la liste de participants : Erreur de base de donn&eacute;es';
+ return $errmsg;
+ }
+
+ $query="UPDATE AWOR_Reunion SET idL='$idL' WHERE idR='$idR'";
+ if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) )
+ {
+ // Cas d'erreur
+ $errmsg = 'Erreur lors de la cr&eacute;ation de la liste de participants : ' . mysql_generate_errmsg();
+ return $errmsg;
+ }
+ }
+
+ return (int) $idR;
+}
+
+function traiter_formulaire_modif_detail_reunion()
+{
+ require_once('include/tools.inc.php');
+ if ( ! isset($_REQUEST['idR']) || !isset($_POST['objetR']) || !isset($_POST['lieuR']) || !isset($_POST['ordreJourR']) || !isset($_POST['remarquesR']) )
+ {
+ $errmsg = 'Impossible de modifier de d&eacute;tail de la r&eacute;union : Param&egrave;tres manquants';
+ // DEBUG :
+ //echo "DEBUG : $query\n$errmsg\n";
+ return $errmsg;
+ }
+
+ $idR=addslashes_if_needed($_REQUEST['idR']);
+ $objetR=addslashes_if_needed($_POST['objetR']);
+ $lieuR=addslashes_if_needed($_POST['lieuR']);
+ $ordreJourR=addslashes_if_needed($_POST['ordreJourR']);
+ $remarquesR=addslashes_if_needed($_POST['remarquesR']);
+ $estAnnulee=( isset($_POST['isCancelled']) && ($_POST['isCancelled']==='on') )?'oui':'non';
+ $montrerDispoR=( isset($_POST['isHidden']) && ($_POST['isHidden']==='on') )?'non':'oui';
+
+ $query="UPDATE AWOR_Reunion SET objetR='$objetR', lieuR='$lieuR', ordreJourR='$ordreJourR', "
+ ." remarquesR='$remarquesR', estAnnulee='$estAnnulee', montrerDispoR='$montrerDispoR' WHERE idR='$idR'";
+ if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) )
+ {
+ // Cas d'erreur
+ $errmsg = 'Erreur lors de la modification de la r&eacute;union : ' . mysql_generate_errmsg();
+ // DEBUG :
+ //echo "DEBUG : $query\n$errmsg\n";
+ return $errmsg;
+ }
+ // DEBUG :
+ //echo "DEBUG : $query\n$errmsg\n";
+ return;
+}
+
+function generate_html_reunion_detail2($idR)
+{
+ $query='SELECT r.objetR, r.ordreJourR, r.lieuR, r.remarquesR, r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, p.nomP, p.prenomP'
+ . " FROM AWOR_Reunion r, AWOR_Personne p WHERE r.idR='$idR' AND p.idP=r.idP_Orga";
+ $result = @mysql_query($query);
+ if ( ! $result || ( mysql_num_rows($result) !== 1 ) )
+ {
+ $errmsg="Impossible de r&eacute;cupr&eacute;rer les informations de la r&eacute;union : Erreur de base de donn&eacute;es\n";
+ return $errmsg;
+ }
+
+ list($objetR, $ordreJourR, $lieuR, $remarquesR, $montrerDispoR, $estAnnulee, $idP_Orga, $idC_Fixe, $nomP, $prenomP) = mysql_fetch_row($result);
+ if ( $estAnnulee=='oui' ) { $etat = 'reunion_annulee'; } elseif ( $idC_Fixe!=null) { $etat ='reunion_fixee'; } else { $etat = 'reunion_en_cours'; }
+?>
+ <table class="detail_reunion" summary="D&eacute;tail de la r&eacute;union que vous avez s&eacute;lectionn&eacute;e">
+ <thead>
+ <tr>
+ <th colspan="2">
+ D&eacute;tails de la r&eacute;union
+<?php
+ //~ echo "DEBUG : SESSION['session_idP']==" . $_SESSION['session_idP'] . "\n" . "idP_Orga==" . $idP_Orga;
+ if ( isset($_SESSION['session_idP']) && ($_SESSION['session_idP'] == $idP_Orga ) )
+ {
+ echo ' ';
+ echo '<a href="#popfixer" onclick="loadid(\'include/ludo/div_create_or_modif.php?idR=';
+ echo $idR . '&amp;objetR=' . urlencode($objetR) . '&amp;lieuR=' . urlencode($lieuR) . '&amp;ordreJourR=';
+ echo urlencode($ordreJourR) . '&amp;remarquesR=' . urlencode($remarquesR);
+ echo "','details_reunion',false)\">(Editer)</a>\n";
+ }
+ $objetR=htmlentities($objetR, ENT_QUOTES);
+ $ordreJourR=htmlentities($ordreJourR, ENT_QUOTES);
+ $lieuR=htmlentities($lieuR, ENT_QUOTES);
+ $remarquesR=htmlentities($remarquesR, ENT_QUOTES);
+ $nomP=htmlentities($nomP, ENT_QUOTES);
+ $prenomP=htmlentities($prenomP, ENT_QUOTES);
+?>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>Objet :</strong></td>
+ <td>
+ <?php echo $objetR . "\n"; ?>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Organisateur :</strong></td>
+ <td>
+ <?php echo "$prenomP $nomP\n"; ?>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>Lieu :</strong></td>
+ <td>
+ <?php echo $lieuR . "\n"; ?>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Ordre du jour :</strong></td>
+ <td>
+ <?php echo $ordreJourR . "\n"; ?>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Remarques :</strong></td>
+ <td>
+ <?php echo $remarquesR . "\n"; ?>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>Etat :</strong></td>
+<?php
+ echo ' <td class="' . $etat .'">' ."\n";
+ switch($etat)
+ {
+ case 'reunion_fixee':
+ echo "Fix&eacute;e\n";
+ break;
+ case 'reunion_en_cours':
+ echo "En pr&eacute;paration\n";
+ break;
+ case 'reunion_annulee':
+ echo "Annul&eacute;e\n";
+ break;
+ }
+ if ( $montrerDispoR === 'non' ) { echo ', disponibilit&eacute;s masqu&eacute;es'; }
+?>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+<?php
+}
+
+function html_generate_MySQLTableSuppr($table, $key_name, $columns='*', $where_clause='')
+{
+ require_once('include/ludo/html_elements.inc.php');
+ require_once('include/connect.inc.php');
+
+ if ( $where_clause !== '' ) { $where_clause="WHERE $where_clause"; }
+ $query = "SELECT $columns FROM $table $where_clause;";
+ //~ echo "DEBUG : $query\n";
+ if ( ! $result = @mysql_query($query) )
+ {
+ return "Erreur de g&eacute;n&eacute;ration de la table $table\n";
+ }
+ else
+ {
+ $row = mysql_fetch_assoc($result);
+ // Affichage des ent&ecirc;tes du tableau et du pied de tableau
+ echo '<form action="" method="post">' . "\n" . '<table summary="Affichage des objets de la table ' . $table . ' pour la purger">' . "\n<thead>\n<tr>\n";
+ echo '<td colspan="' . ( count($row) + 1 ) . "\">$table</td>\n</tr>\n<tr>\n";
+ echo "<td></td><td>" . implode("</td>\n<td>",array_keys($row)) . "</td>\n";
+ echo "</tr>\n</thead>\n<tfoot><tr>\n";
+ echo '<td><input name="action" value="delete_from_' . $table . '" type="hidden" /><input value="Supprimer" type="submit" /></td>';
+ for ( $i=0; $i < count($row); $i++ ) { echo "<td></td>"; }
+ echo "</tr>\n</tfoot>\n<tbody>\n";
+
+ $num=0;
+ do
+ { if ( isset($row[$key_name]) ) { $num=$row[$key_name]; } else { $num=''; }
+ echo "<tr>\n<td><input name=\"${key_name}_${num}\" type=\"checkbox\" /></td>\n<td>" . implode("</td>\n<td>",$row) . "</td>\n</tr>\n";
+ } while ( $row = mysql_fetch_assoc($result) );
+ echo "</tbody>\n</table>\n</form>\n";
+ }
+}
+
+?>
diff --git a/final/app/include/ludo/html_elements.inc.php b/final/app/include/ludo/html_elements.inc.php
new file mode 100644
index 0000000..35eaa68
--- /dev/null
+++ b/final/app/include/ludo/html_elements.inc.php
@@ -0,0 +1,185 @@
+<?php
+/*
+ * Fonctions de g&eacute;n&eacute;ration de code HTML...
+ */
+ function generate_html_doctype_and_head($title)
+{
+echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n"
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
+ <head>
+ <?php echo "<title>AWOR - $title</title>\n"; ?>
+ <meta name="keywords" content="AWOR, Application Web, Organisation, R&eacute;union, Reunion" />
+ <meta name="description" content="Application Web d'Organisation de R&eacute;union (AWOR). Facilite la vie des organisateurs !" />
+ <meta name="author" content="J&eacute;r&eacute;mie D&eacute;noyer, Ludovic Pouzenc, Andriana Semouchtchak, Julien S&eacute;r&egrave;" />
+ <script type="text/javascript" src="script.js"></script>
+<?php
+ //print_r($_COOKIE['aworcustom_css']);
+ if ( /*isset($_COOKIE['aworcustom_css'])*/ false )
+ {
+ $cssfilemain = $_COOKIE['aworcustom_css'];
+ }
+ else
+ {
+ include 'config.inc.php';
+ $cssfilemain=$CONFIG['CSS']['CHOOSER_LIST']['standard'];
+ }
+ echo ' <link href="css/' . $cssfilemain . '.css" rel="stylesheet" type="text/css" />' . "\n";
+ echo ' <link href="css/' . $cssfilemain . '_nohelp.css" rel="stylesheet" type="text/css" title="nohelp" />' . "\n";
+
+ if ( isset($CONFIG['CSS']['CHOOSER_LIST']) )
+ {
+ foreach ( $CONFIG['CSS']['CHOOSER_LIST'] as $cssname => $cssfile )
+ {
+ if ( $cssfile != $cssfilemain )
+ {
+ echo ' <link href="css/' . $cssfile . '.css" rel="alternate stylesheet" type="text/css" title="'.$cssname.'"/>' . "\n";
+ echo ' <link href="css/' . $cssfile . '_nohelp.css" rel="alternate stylesheet" type="text/css" title="'.$cssname.'_nohelp"/>' . "\n";
+ }
+ }
+ }
+?>
+ <link href="css/print.css" rel="alternate stylesheet" type="text/css" title="print"/>
+ </head>
+<?php
+}
+
+function generate_html_divs_menu()
+{
+include 'config.inc.php';
+?>
+<div id="titre"><h2>AWOR</h2></div>
+<div id="main_menu">
+ <ul id="menu">
+ <li><a href="index.php">R&eacute;unions</a></li>
+ <li><a href="listes.php">Listes</a></li>
+ <li><a href="profil.php">Mon profil</a></li>
+ <li><a href="ical.php">iCal</a></li>
+ <li><a href="apropos.php">A Propos</a></li>
+<?php if ( isset($_SESSION['session_loginP']) && (is_integer(array_search($_SESSION['session_loginP'],$CONFIG['SUPERUSERS'],true))) )
+ { echo ' <li><a href="admin.php">Administration</a></li>' . "\n"; }
+?>
+ <li id="deconnection"><a href="deco.php">D&eacute;connexion</a></li>
+ </ul>
+</div>
+<?php
+}
+
+function generate_html_div_help($help_file='')
+{
+ //echo "DEBUG : function generate_html_div_help()\n";
+ if ($help_file=='' ) { $help_file='help/' . basename($_SERVER['PHP_SELF']) . '.hlp'; }
+ //$help_file='modele_page.php.hlp';
+ //echo "DEBUG : $help_file\n";
+ if ( is_readable($help_file) )
+ //if ( @fopen($help_file, 'r')!==false )
+ {
+ echo '<div id="no_help">' . "\n<h2><a href=\"#css_standard\" onclick=\"setActiveStyleSheet('standard');\">?</a></h2>\n" . "</div>\n";
+ echo '<div id="help">' . "\n";
+ readfile($help_file);
+ echo "</div>\n";
+ }
+}
+
+function generate_html_div_errmsg($errmsg)
+{
+ echo '<div class="errmsg">' . "\n" . '<span class="errmsg">' . $errmsg . "</span>\n";
+ require_once('config.inc.php');
+ if ( isset( $CONFIG['adminMail'] ) && ( ! isset($_REQUEST['debug'] ) ) )
+ {
+ echo '<span class="contactAdm">Si le probl&egrave;me persiste, vous pouvez contacter l\'administrateur par email &agrave; l\'adresse suivante : ';
+ echo '<a href="mailto:' . $CONFIG['adminMail'] . '">' . $CONFIG['adminMail'] . "</a></span>\n";
+ }
+ echo "</div>\n";
+}
+
+function generate_html_div_css_chooser()
+{
+ @include 'include/ludo/config.inc.php';
+ @include 'config.inc.php';
+
+ if ( ! is_array($CONFIG['CSS']['CHOOSER_LIST']) ) { return false; }
+
+ if ( isset($_COOKIE['aworcustom_css'] ) ) { $css_selected=$_COOKIE['aworcustom_css']; }else{$css_selected='';};
+ echo '<div class="css_chooser">' . "\n";
+ //print_r($_COOKIE);
+ echo ' <select id="switcherCSS" onchange="switchCSS();">' . "\n";
+ foreach ( $CONFIG['CSS']['CHOOSER_LIST'] as $file => $name )
+ {
+ echo ' <option value="' . $file . '"';
+ if ( $file == $css_selected ) { echo ' selected="selected"'; }
+ echo '>' . htmlentities($name, ENT_QUOTES) . '</option>' /*. "$DEBUG:file=$file, css_selected=$css_selected"*/ . "\n";
+ }
+ echo ' </select>'. "\n";
+ echo '</div>'. "\n";
+}
+
+function generate_html_div_footer()
+{
+?>
+<div id="footer">
+ <ul>
+ <li class="left">
+<?php generate_html_div_css_chooser(); ?>
+ </li>
+ <li class="center">
+ <a href="http://validator.w3.org/check/referer">
+ <img src="./images/vxhtml.gif" alt="Validate" height="31" width="88" />
+ </a>
+ <a href="http://jigsaw.w3.org/css-validator/check/referer">
+ <img src="./images/vcss.gif" alt="Validate" height="31" width="88" />
+ </a>
+ <a href="http://www.w3.org/WAI/WCAG1A-Conformance">
+ <img src="./images/wai.gif" alt="W3C-WAI level A conformance icon" height="31" width="88" />
+ </a>
+ </li>
+ <li class="right">
+ <span class="discret">Application r&eacute;alis&eacute;e par J&eacute;r&eacute;mie D&eacute;noyer,<br /> Ludovic Pouzenc, Julien S&eacute;r&eacute; et Andriana Semouchtchak</span>
+ </li>
+ </ul>
+</div>
+<?php
+}
+
+function generate_html_div_deconnect()
+{
+ echo '<div class="deco"><a href="deco.php">Deconnexion</a></div>'."\n";
+}
+function generate_html_div_back()
+{
+ echo '<div class="retour"><a href="index.php">Retour</a></div>'."\n";
+}
+
+function generate_html_dispo_inconnu($idP, $idC)
+{
+ echo '<img class="spacing" src="./images/question.gif" alt="Inconnu" height="15" width="15" />' . "\n";
+}
+
+function generate_html_dispo_oui($idP, $idC)
+{
+ echo '<img class="spacing" src="./images/ok.gif" alt="Disponible" height="16" width="16" />' . "\n";
+}
+
+function generate_html_dispo_non($idP, $idC)
+{
+ echo '<img class="spacing" src="./images/del.gif" alt="Non disponible" height="15" width="15" />' . "\n";
+}
+
+function generate_html_dispo_dire_oui($idR, $idC)
+{
+ //~ echo '<img src="./images/button_ok.png" alt="Dire que je suis disponible" height="25" width="25" />' . "\n";
+ echo "<a href=\"#dispo_idC${idC}\" onclick=\"loadid('include/ludo/majDispo.php?idR=$idR&amp;idC=$idC&amp;estDispo=oui','dispo_idC${idC}',false);\">";
+ echo '<img class="spacing" src="./images/button_ok.png" alt="Dire que je suis disponible" height="25" width="25" /></a>' . "\n";
+}
+
+function generate_html_dispo_dire_non($idR, $idC)
+{
+ echo "<a href=\"#dispo_idC${idC}\" onclick=\"loadid('include/ludo/majDispo.php?idR=$idR&amp;idC=$idC&amp;estDispo=non','dispo_idC${idC}',false);\">";
+ echo '<img class="spacing" src="./images/button_del.png" alt="Dire que je suis pas disponible" height="25" width="25" /></a>' . "\n";
+}
+
+function generate_html_reunion_detail_button($idR)
+{
+ echo '<a href="details_reunion.php?idR=' . $idR . '"><img src="images/details.png" alt="D&eacute;tails" width="20" height="20" /></a>';
+}
diff --git a/final/app/include/ludo/mail_textarea.php b/final/app/include/ludo/mail_textarea.php
new file mode 100644
index 0000000..6db990f
--- /dev/null
+++ b/final/app/include/ludo/mail_textarea.php
@@ -0,0 +1,45 @@
+<?php
+require_once('session_verify.inc.php');
+include('config.inc.php');
+require_once('../utils.inc.php');
+//~ require_once('/home/lud/shares/public_html/awor/appli_3_alpha/include/connect.inc.php');
+
+//include('include/connect.inc.php');
+
+if ( isset($_GET['model']) ) { $model=addslashes_if_needed($_GET['model']); } else { $model='empty'; }
+?>
+
+<textarea name="msgText" cols="80" rows="15">
+<?php
+ if ( $model != 'empty')
+ {
+ include('../connect.inc.php');
+ if ( ! isset($CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file']) )
+ {
+ echo 'D&eacute;sol&eacute;, mod&egrave;le indisponible...';
+ }
+ else
+ {
+ // On r&eacute;cup&egrave;re quelques information &agrave; propos de la r&eacute;union pour que les templates puissent &ecirc;tre customis&eacute;s
+ $objetR=$ordreJourR=$lieuR=$remarquesR="";
+ if (isset( $_GET['idR']) )
+ {
+ $idR=addslashes($_GET['idR']);
+ $result = mysql_query("SELECT objetR, ordreJourR, lieuR, remarquesR FROM AWOR_Reunion WHERE idR='$idR'");
+ if (mysql_num_rows($result)===1)
+ {
+ list($objetR, $ordreJourR, $lieuR, $remarquesR) = mysql_fetch_array($result);
+ }
+ }
+ //echo 'DEBUG : ../../templates/' . $CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file'] . "\n";
+ if (!@include('../../templates/' . $CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file']) )
+ {
+ echo 'D&eacute;sol&eacute;, impossible de charger le fichier mod&egrave;le...';
+ }
+ }
+ }
+ //print_r($_REQUEST);
+ //print_r($CONFIG);
+?>
+</textarea>
+
diff --git a/final/app/include/ludo/majDispo.php b/final/app/include/ludo/majDispo.php
new file mode 100644
index 0000000..febd9c3
--- /dev/null
+++ b/final/app/include/ludo/majDispo.php
@@ -0,0 +1,39 @@
+<?php
+require('../connect.inc.php');
+require('session_verify.inc.php');
+require('fonctions.inc.php');
+
+// TODO : v&eacute;rification que la r&eacute;union nous concerne bien !
+
+if ( /*!isset($_GET['idR']) ||*/ !isset($_GET['idC']) || !isset($_GET['estDispo']) || !isset($_SESSION['session_idP']) )
+{
+ $errmsg="Param&egrave;tres incorrects\n";
+}
+
+if ( isset( $errmsg ) )
+{
+ // TODO
+}
+else
+{
+ $idR=addslashes($_GET['idR']);
+ $idC=addslashes($_GET['idC']);
+ $estDispo=addslashes($_GET['estDispo']);
+ $idP=$_SESSION['session_idP'];
+
+ $query="UPDATE AWOR_Choisir SET estDispo = '$estDispo' WHERE idC='$idC' AND idP='$idP'";
+ $result = @mysql_query($query);
+ if ( ! $result || ( mysql_affected_rows() !== 1 ) )
+ {
+ $query="INSERT INTO AWOR_Choisir(idC,idP,estDispo) VALUES ('$idC', '$idP', '$estDispo')";
+ //echo "DEBUG :$query";
+ $result = mysql_query($query);
+ if ( ! $result || ( mysql_affected_rows() !== 1 ) )
+ {
+ echo "Erreur BD\n";
+ return;
+ }
+ }
+ generate_html_dispo_case($idR, $idP, $idC, true, $estDispo, false);
+}
+?> \ No newline at end of file
diff --git a/final/app/include/ludo/redir.inc.php b/final/app/include/ludo/redir.inc.php
new file mode 100644
index 0000000..2edec6e
--- /dev/null
+++ b/final/app/include/ludo/redir.inc.php
@@ -0,0 +1,20 @@
+<?php
+function html_redir($dest)
+{
+ header("Location: $dest");
+require_once('html_elements.inc.php');
+generate_html_doctype_and_head("Redirection");
+?>
+<body>
+ <h1>Redirection</h1>
+ <p>Si vous voyez cette page, merci de suivre le lien ci-dessous</p>
+<?php
+ // Ne respecte pas le XHTML s'il y a des param&egrave;tres les & doivent &ecirc;tre remplac&eacute;e par &amp;
+ echo '<p><a href="' . urlencode($dest) . '">' . htmlentities($dest, ENT_QUOTES) . '</a></p>' . "\n";
+?>
+</body>
+</html>
+<?php
+ exit();
+}
+?> \ No newline at end of file
diff --git a/final/app/include/ludo/session_verify.inc.php b/final/app/include/ludo/session_verify.inc.php
new file mode 100644
index 0000000..f1cea8b
--- /dev/null
+++ b/final/app/include/ludo/session_verify.inc.php
@@ -0,0 +1,9 @@
+<?php
+session_start();
+if ( ! isset($_SESSION['session_loginP']) )
+{
+ require('redir.inc.php');
+ $dest='auth_dialog.php?retour=' . $_SERVER['PHP_SELF'];
+ html_redir($dest);
+}
+?> \ No newline at end of file
diff --git a/final/app/include/tools.inc.php b/final/app/include/tools.inc.php
new file mode 100644
index 0000000..bf75d1f
--- /dev/null
+++ b/final/app/include/tools.inc.php
@@ -0,0 +1,25 @@
+<?php
+function addslashes_if_needed($texte)
+{
+ if(get_magic_quotes_gpc() == 0)
+ {
+ return addslashes($texte);
+ }
+ else
+ {
+ return $texte;
+ }
+}
+
+function stripslashes_if_needed($texte)
+{
+ if(get_magic_quotes_gpc() != 0)
+ {
+ return stripslashes($texte);
+ }
+ else
+ {
+ return $texte;
+ }
+}
+?> \ No newline at end of file