diff options
Diffstat (limited to 'appli_3_alpha_old/include/ludo/fonctions.inc.php')
-rw-r--r-- | appli_3_alpha_old/include/ludo/fonctions.inc.php | 294 |
1 files changed, 294 insertions, 0 deletions
diff --git a/appli_3_alpha_old/include/ludo/fonctions.inc.php b/appli_3_alpha_old/include/ludo/fonctions.inc.php new file mode 100644 index 0000000..2914d50 --- /dev/null +++ b/appli_3_alpha_old/include/ludo/fonctions.inc.php @@ -0,0 +1,294 @@ +<?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 " input name=\"idR\" value=\"$idR\" type=\"hidden\"\n"; + echo " </form> </table>\n"; +} + +?>
\ No newline at end of file |