summaryrefslogtreecommitdiff
path: root/beta_accents/app/include/ludo/fonctions.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'beta_accents/app/include/ludo/fonctions.inc.php')
-rw-r--r--beta_accents/app/include/ludo/fonctions.inc.php550
1 files changed, 550 insertions, 0 deletions
diff --git a/beta_accents/app/include/ludo/fonctions.inc.php b/beta_accents/app/include/ludo/fonctions.inc.php
new file mode 100644
index 0000000..74b7ca7
--- /dev/null
+++ b/beta_accents/app/include/ludo/fonctions.inc.php
@@ -0,0 +1,550 @@
+<?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=false, $class='')
+{
+ // Alignement html
+ require_once('html_elements.inc.php');
+ if ( ! $isEditable )
+ {
+ if ( $withTD ) { echo " <td $class>\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}\" $class>\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 ' &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é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)
+{
+ if ( isset($_SESSION['session_idP']) )
+ {
+ $idP_Self=$_SESSION['session_idP'];
+ }
+ else
+ {
+ // TODO : Erreur
+ }
+
+ // 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 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ée $estAnnulee\n";
+ $estAnnulee = ( $estAnnulee == 'oui' );
+ $estFixee = ( $idC_Fixe != null);
+ }
+ else
+ {
+ // TODO : erreur
+ }
+ // 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é des personnes pour chaque créneau possible de la ré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êtes de colonnes (cré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 à 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 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 é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";
+ 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és sont révélées
+ if ( $is_admin && ! $estFixee && ! $estAnnulee)
+ {
+ echo " <tr>\n";
+ echo " <td>&nbsp;</td>\n";
+ echo " <td>Personnes pré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éunion : paramètres manquants ou erroné";
+ 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é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éunion vierge déjà 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éation de la Réunion sauf si une réunion vierge existe déjà
+ $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éation de la liste de participants : ' . mysql_generate_errmsg();
+ return $errmsg;
+ }
+ $idR=mysql_insert_id();
+
+ // Création de la Liste des participants
+ if ( ! $idL=list_new("interne_idR_$idR","NULL",true) )
+ {
+ $errmsg ='Erreur lors de la création de la liste de participants : Erreur de base de donné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éation de la liste de participants : ' . mysql_generate_errmsg();
+ return $errmsg;
+ }
+ }
+
+ return (int) $idR;
+}
+
+function traiter_formulaire_modif_detail_reunion()
+{
+ if ( ! isset($_REQUEST['idR']) || !isset($_POST['objetR']) || !isset($_POST['lieuR']) || !isset($_POST['ordreJourR']) || !isset($_POST['remarquesR']) )
+ {
+ $errmsg = 'Impossible de modifier de détail de la réunion : Paramètres manquants';
+ // DEBUG :
+ //echo "DEBUG : $query\n$errmsg\n";
+ return $errmsg;
+ }
+
+ $idR=addslashes($_REQUEST['idR']);
+ $objetR=addslashes($_POST['objetR']);
+ $lieuR=addslashes($_POST['lieuR']);
+ $ordreJourR=addslashes($_POST['ordreJourR']);
+ $remarquesR=addslashes($_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é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écuprérer les informations de la réunion : Erreur de base de donné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étail de la réunion que vous avez sélectionnée">
+ <thead>
+ <tr>
+ <th colspan="2">
+ Détails de la ré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";
+ }
+
+?>
+ </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ée\n";
+ break;
+ case 'reunion_en_cours':
+ echo "En préparation\n";
+ break;
+ case 'reunion_annulee':
+ echo "Annulée\n";
+ break;
+ }
+ if ( $montrerDispoR === 'non' ) { echo ', disponibilités masqué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énération de la table $table\n";
+ }
+ else
+ {
+ $row = mysql_fetch_assoc($result);
+ // Affichage des entê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";
+ }
+}
+
+?>