<?php /* * Fonctions de g�n�ration de message d'erreur pour utilisateur (et le debuggueur !) */ // Fonction retournant un message d'erreur correspondant � une erreur mysql function mysql_generate_errmsg() { if ( isset($_REQUEST['debug']) ) { return 'Erreur SQL num�ro ' . mysql_errno() . ' : ' . mysql_error(); }else{ return 'Une erreur de base de donn�es s\'est produite, veuillez r�essayer ult�rieurement.'; } } // Fonction retournant un message d'erreur correspondant � 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�e : V�rifiez votre identifiant et saisissez votre mot de passe � nouveau'; break; case ERR_BAD_PARAMS : $msg = 'Adresse email invalide, ou serveur mail non r�pertori�'; break; default : $msg = 'Une erreur de communication avec le service d\'authentification s\'est produite,' . 'veuillez r�essayer ult�rieurement.'; break; } } return $msg; } /* * G�n�ration du code html d'une case du tableau crois� Cr�neau/Presonnes ayant comme personne $idP, * comme cr�neau $idC. Si $idEditable est vrai je pourrai cliquer sur le bouton * pour donner ma disponibilit�. $estDispo peut-�tre 'oui', 'non', ou '' et signifie que la personne a d�j� r�pondu 'oui', non' * ou n'a pas encore r�pondu. */ // G�n�ration d'une case function generate_html_dispo_case($idR, $idP, $idC, $isEditable, $estDispo, $withTD) { // Alignement html require_once('html_elements.inc.php'); if ( ! $isEditable ) { if ( $withTD ) { echo " <td>\n"; } // Cas g�n�ral, on n'est pas la personne concern�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}\">\n"; } // On est la personne concern�e, on peut donc choisir le cr�neau if ( ! isset($estDispo) || $estDispo == '' ) { // Dispo Inconnue generate_html_dispo_dire_oui($idR, $idC); echo ' '; generate_html_dispo_dire_non($idR, $idC); } else { if ( $estDispo == 'oui' ) { // Disponible generate_html_dispo_oui($idP, $idC); echo ' '; generate_html_dispo_dire_non($idR, $idC); }else { // Non Disponible generate_html_dispo_dire_oui($idR, $idC); echo ' '; generate_html_dispo_non($idP, $idC); } } } if ( $withTD ) { echo " </td>\n"; } } // G�n�ration du tableau complet // TODO : id�e : class du tableau diff�rnete quand annul�e -> tableau gris�... function generate_html_array_personnes_crenaux($idR, $idP_Self) { // Connexion � la base et s�lection de la database require_once 'include/connect.inc.php'; // R�cup�ration des param�tres de la r�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 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); //echo "$is_admin = ( $idP_Self == $idP_orga );"; $is_admin = ( $idP_Self == $idP_orga ); $montrerDispoR = ( ( $montrerDispoR === 'oui' ) || $is_admin ) ; //echo "DEBUG : annul�� $estAnnulee\n"; $estAnnulee = ( $estAnnulee == 'oui' ); $estFixee = ( $idC_Fixe != null); } else { // TODO : erreur } // DEBUG : tests en for�ant les variables //$estAnnulee=true; echo "\nmontrerDispoR==$montrerDispoR\nestAnnulee==$estAnnulee\nestFixee==$estFixee\nis_admin==$is_admin\n"; ?> <table class="details" cellspacing="0" summary="Disponibilit� des personnes pour chaque cr�neau possible de la r�union"> <thead> <tr> <?php if ( $is_admin ) { echo ' <th>Mail</th>' . "\n"; } echo ' <th>Personnes</th>' . "\n"; // Remplissage des ent�tes de colonnes (cr�neaux) $query="SELECT idC, UNIX_TIMESTAMP(dateHeure), duree FROM 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; echo ' <th>'; if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo '<a href="#popfixer" onclick="loadid(\'popfixer.php?idC=' . $idC; echo '&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; } } 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> <form id="formmail" action="sendmail.php" method="get"> <tbody> <?php // Remplissage du tableau, ligne � ligne // Requette �crivant les disponibilit�s dans un tableau associatif en une seule fois if ( $montrerDispoR ) { $query='SELECT ch.idC, ch.idP, ch.estDispo FROM Choisir ch, Creneau c, Personne p, Appartenir a, 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 Choisir ch, 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=='oui' ) { $dispos[$idC]['nbDispo']++; } if ( $estDispo=='non' ) { $dispos[$idC]['nbNonDispo']++; } } } //print_r($dispos); $query='SELECT p.idP, p.prenomP, p.nomP FROM Personne p, Appartenir a, 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 �crit ligne � ligne les personnes et les disponibilit�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�nom echo " <td>$p[1] $p[2]</td>\n"; // Disponibilit�s foreach ( $creneaux as $c_id ) // Pour chaque cr�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"; generate_html_dispo_case($idR, $p[0], $c_id, ( ! $estFixee && ! $estAnnulee && ( $p[0]==$idP_Self ) ),$estDispo, true); } // Colonne vide pour l'ajout de personnes if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " <td> </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?idL='; echo $idL_interne . '&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> </td>'; } if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo "\n <td> </td>\n"; } echo " </tr>\n"; } // On inscrit les lignes de totaux si les disponibilit�s sont r�v�l�es if ( $is_admin && ! $estFixee && ! $estAnnulee) { echo " <tr>\n"; echo " <td> </td>\n"; echo " <td>Personnes pr�sentes</td>\n"; foreach ( $creneaux as $c_id ) { echo ' <td>' . $dispos[$c_id]['nbDispo'] . "</td>\n"; } echo " <td> </td>\n"; echo " </tr>\n"; echo " <tr>\n"; echo " <td> </td>\n"; echo " <td>Personnes absentes</td>\n"; foreach ( $creneaux as $c_id ) { echo ' <td>' . $dispos[$c_id]['nbNonDispo'] . "</td>\n"; } echo " <td> </td>\n"; echo " </tr>\n"; } } echo " </tbody>\n"; echo " </form>\n </table>\n"; } ?>