/**
  * Ajouter un événement à la BDD
  * 
  * @param string $type             Type (adresse ou personne)
  * @param array  $arrayNewAdresses Contenu lié
  * 
  * @return void
  * */
 function addEvent($type = "adresse", $arrayNewAdresses = array())
 {
     // ******************************************************
     // ensuite on ajoute l'evenement
     // ******************************************************
     $evenement = new archiEvenement();
     $idEvenementGroupeAdresses = 0;
     $idSousEvenement = 0;
     if ($type == "personne") {
         $linkTable = "_personneEvenement";
         $field = "idPersonne";
     } else {
         $linkTable = "_adresseEvenement";
         $field = "idAdresse";
     }
     $table = array('table' => $linkTable, 'field' => $field);
     //debug($arrayNewAdresses);
     //$arrayRetourEvenementNouveauDossier=$evenement->ajouterEvenementNouveauDossier();
     foreach ($arrayNewAdresses as $newAddress) {
         if (isset($newAddress['newAdresse']) && !empty($newAddress['newAdresse']) || $newAddress['newAdresse'] == 1) {
             //debug("full ajout");
             $arrayRetourEvenementNouveauDossier = $evenement->ajouterEvenementNouveauDossier();
         } else {
             //debug("ajout simple id : ".$newAddress['idAdresse']);
             $arrayRetourEvenementNouveauDossier = $evenement->ajouterEvenementNouveauDossier($newAddress['idAdresse']);
         }
     }
     //debug($arrayRetourEvenementNouveauDossier);
     // s'il n'y a pas eu d'erreurs ,  on peut faire l'ajout des liaisons entre evenement et adresses
     if (count($arrayRetourEvenementNouveauDossier['errors']) == 0 && count($arrayNewAdresses) > 0) {
         $idEvenementGroupeAdresses = $arrayRetourEvenementNouveauDossier['idEvenementGroupeAdresse'];
         $idSousEvenement = $arrayRetourEvenementNouveauDossier['idSousEvenement'];
         // liaison entre les adresses et l'evenement groupe d'adresses
         $resSupp = $this->connexionBdd->requete("delete from {$linkTable} where idEvenement = '" . $idEvenementGroupeAdresses . "'");
         // on rend la liste des identifiants unique
         $arrayNewIdAdresses = array();
         foreach ($arrayNewAdresses as $indice => $value) {
             $arrayNewIdAdresses[] = $value['idAdresse'];
         }
         $arrayNewIdAdresses = array_unique($arrayNewIdAdresses);
         foreach ($arrayNewIdAdresses as $indice => $idAdresse) {
             $reqLiaisons = "INSERT INTO {$linkTable} ({$field}, idEvenement)\n                                VALUES ('" . $idAdresse . "', '" . $idEvenementGroupeAdresses . "')\n                ";
             //debug($reqLiaisons);
             $resLiaisons = $this->connexionBdd->requete($reqLiaisons);
         }
         // on relie l'evenement pere (groupe d'adresse ) à l'evenement fils
         if (isset($newAddress['newAdresse']) && !empty($newAddress['newAdresse']) || $newAddress['newAdresse'] == 1) {
             $sqlAssociationNettoie = "delete from _evenementEvenement where idEvenement = '" . $arrayRetourEvenementNouveauDossier['idEvenementGroupeAdresse'] . "'";
             //debug($sqlAssociationNettoie);
             $resAssociationNettoie = $this->connexionBdd->requete($sqlAssociationNettoie);
         }
         $sqlAssociation = "insert into _evenementEvenement (idEvenement,idEvenementAssocie) values ('" . $arrayRetourEvenementNouveauDossier['idEvenementGroupeAdresse'] . "','" . $arrayRetourEvenementNouveauDossier['idSousEvenement'] . "')";
         //debug($sqlAssociation);
         $resAssociation = $this->connexionBdd->requete($sqlAssociation);
         if ($type == "personne") {
         } else {
             // *************************************************************************************************************************************************************
             // envoi d'un mail aux administrateur pour la moderation
             $utilisateur = new archiUtilisateur();
             $message = "L'utilisateur suivant a créé un nouveau dossier : ";
             $message .= $utilisateur->getMailUtilisateur($this->session->getFromSession('utilisateurConnecte' . $this->idSite)) . "<br>";
             $message .= "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $arrayNewIdAdresses[0], 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses)) . "'>lien vers l'article</a><br>";
             $message .= "Adresses liées au nouveau dossier :<br>";
             $i = 0;
             $adressePourSujetMail = "";
             foreach ($arrayNewAdresses as $indice => $value) {
                 if ($i == 0) {
                     $adressePourSujetMail = $this->getIntituleAdresseFrom($value['idAdresse'], 'idAdresse');
                 }
                 if ($value['newAdresse'] == true) {
                     // cette adresse a été créée avec le dossier
                     $message .= "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses, 'archiIdAdresse' => $value['idAdresse'])) . "'>" . $this->getIntituleAdresseFrom($value['idAdresse'], 'idAdresse') . " (nouvelle adresse)</a><br>";
                 } else {
                     /* cette adresse a été créée précédemment
                      * et est utilisée sur ce dossier
                      * */
                     $message .= "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses, 'archiIdAdresse' => $value['idAdresse'])) . "'>" . $this->getIntituleAdresseFrom($value['idAdresse'], 'idAdresse') . " (cette adresse existait déjà " . "avant la création du dossier)" . "</a><br>";
                 }
             }
             $mail = new mailObject();
             $mail->sendMailToAdministrators($mail->getSiteMail(), "archi-strasbourg.org : " . "un utilisateur a créé un nouveau dossier - " . $adressePourSujetMail, $message, " and alerteMail='1' ", true);
             $u = new archiUtilisateur();
             $u->ajouteMailEnvoiRegroupesAdministrateurs(array('contenu' => $message, 'idTypeMailRegroupement' => 3, 'criteres' => " and alerteMail='1' "));
             /* envoi mail aussi au moderateur si ajout
              * sur adresse de ville que celui ci modere
              * */
             $arrayListeModerateurs = $u->getArrayIdModerateursActifsFromVille($this->variablesPost['ville'], array("sqlWhere" => " AND alerteMail='1' "));
             if (count($arrayListeModerateurs) > 0) {
                 foreach ($arrayListeModerateurs as $indice => $idModerateur) {
                     if ($this->session->getFromSession("utilisateurConnecte" . $this->idSite) != $idModerateur) {
                         $mailModerateur = $u->getMailUtilisateur($idModerateur);
                         if ($u->isMailEnvoiImmediat($idModerateur)) {
                             $mail->sendMail($mail->getSiteMail(), $mailModerateur, "archi-strasbourg.org : " . "un utilisateur a créé un nouveau dossier - " . $adressePourSujetMail, $message, true);
                         } else {
                             // envoi regroupé
                             $u->ajouteMailEnvoiRegroupes(array('contenu' => $message, 'idDestinataire' => $idModerateur, 'idTypeMailRegroupement' => 3));
                         }
                     }
                 }
             }
         }
         //echo $retourEvenement["html"];
         if ($type == "personne") {
             header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idAdresse), false, false));
         } else {
             header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses, 'archiIdAdresse' => $value['idAdresse']), false, false));
         }
     }
 }
 public function modifier($id)
 {
     $aAuthentification = new archiAuthentification();
     $u = new archiUtilisateur();
     $html = "<script src='js/confirm.js'></script>";
     $ajoutOk = false;
     $formulaire = new formGenerator();
     $mail = new mailObject();
     // *************************************************************************************************************************************
     // recuperation de l'idHistoriqueEvenement Courant pour le renvoyer en tant que idHistoriquePrecedent a la fin de la modification ( visualisation de l'administrateur de l'ancien evenement)
     // *************************************************************************************************************************************
     $reqIdHistoriqueEvenementAvantModif = "\n                SELECT he1.idHistoriqueEvenement as idHistoriqueEvenementAvantModif\n                FROM historiqueEvenement he2,historiqueEvenement he1\n\n                WHERE he2.idEvenement = he1.idEvenement\n                AND he1.idEvenement = '" . $id . "'\n                GROUP BY he1.idEvenement,he1.idHistoriqueEvenement\n                HAVING he1.idHistoriqueEvenement=max(he2.idHistoriqueEvenement)\n        ";
     $resIdHistoriqueEvenementAvantModif = $this->connexionBdd->requete($reqIdHistoriqueEvenementAvantModif);
     $fetchIdHistoriqueEvenementAvantModif = mysql_fetch_assoc($resIdHistoriqueEvenementAvantModif);
     $idHistoriqueEvenementAvantModif = $fetchIdHistoriqueEvenementAvantModif['idHistoriqueEvenementAvantModif'];
     // *************************************************************************************************************************************
     //$idHistoriqueEvenementAvantModif =$id;
     // *************************************************************************************************************************************
     $idHistoriqueEvenementNouveau = 0;
     // cette variable va contenir le nouvel idHistoriqueEvenement une fois celui ci créé
     $idProfilUtilisateur = $u->getIdProfilFromUtilisateur($aAuthentification->getIdUtilisateur());
     if (!$formulaire->estChiffre($id)) {
         $this->erreurs->ajouter('Modification d\'un événement : l\'identifiant est incorrect !');
     }
     if ($aAuthentification->estConnecte() != true) {
         $this->erreurs->ajouter('Modification d\'un événement : vous n\'etes pas connecté !');
     } elseif (isset($this->variablesPost['evenementSimple'])) {
         // evenementSimple correspond au nom du bouton submit du formulaire, on enregistre les modifications
         // modification de l'evnement
         $afficheFormulaire = true;
         $tabForm = $this->getEvenementFields('nouveauDossier');
         // memes champs qu'un ajout
         $erreur = $formulaire->getArrayFromPost($tabForm);
         if (count($erreur) == 0) {
             $this->connexionBdd->getLock(array('evenements'));
             $ajoutOk = true;
             $nouvelEnregistrement = false;
             $nouvelleLiaison = false;
             $tabAncien = $this->recupTableauTravail($id);
             //$tabForm['idEvenement']['value']
             // ****************************************************************************************
             // ici on va chercher s'il existe des differences entre l'enregistrement de l'evenement précédent et les nouvelles données,
             // s'il n'y a pas de différences , on ne modifie rien
             // s'il y a des différences , on ajoute un nouvel historique a l'evenement existant
             // ****************************************************************************************
             $tabDesChampEntrainantNouveauEvenement = array('titre', 'description', 'dateDebut', 'dateFin', 'source', 'typeStructure', 'typeEvenement', 'nbEtages', 'ISMH', 'MH', 'isDateDebutEnviron', 'numeroArchive');
             foreach ($tabDesChampEntrainantNouveauEvenement as $champ) {
                 if ($tabForm[$champ]['value'] != $tabAncien[$champ]['value']) {
                     $nouvelEnregistrement = true;
                 }
             }
             // ****************************************************************************************
             // ici on cherche s'il y a des différences au niveau des tables qui sont liées
             // ****************************************************************************************
             $tabDesChampDeLiaison = array('courant', 'personnes');
             //'adresses', 'evenements'
             foreach ($tabDesChampDeLiaison as $champ) {
                 if (is_array($tabForm[$champ]['value'])) {
                     $taille_intersection = count(array_intersect($tabForm[$champ]['value'], $tabAncien[$champ]['value']));
                     $taille_ancien = count($tabAncien[$champ]['value']);
                     $taille_nouveau = count($tabForm[$champ]['value']);
                     if ($taille_intersection != $taille_ancien or $taille_intersection != $taille_nouveau) {
                         $isModifLiaison[$champ] = 1;
                         $nouvelleLiaison = true;
                     }
                 }
             }
             if ($nouvelEnregistrement == true) {
                 //********************************************
                 //**  AJOUT d'un nouvel historique a l'evenement existant **
                 //********************************************
                 $titre = mysql_escape_string($tabForm['titre']['value']);
                 $description = mysql_escape_string($tabForm['description']['value']);
                 $dateDebut = $this->date->toBdd($this->date->convertYears($tabForm['dateDebut']['value']));
                 if ($idProfilUtilisateur == 3 || $idProfilUtilisateur == 2 || $idProfilUtilisateur == 1) {
                     //$dateFin = $this->date->toBdd($tabAncien['dateFin']['value']);
                     $idSource = $tabAncien['source']['value'];
                     $nbEtages = $tabAncien['nbEtages']['value'];
                 } else {
                     //$dateFin     = $this->date->toBdd($this->date->convertYears($tabForm['dateFin']['value']));
                     $idSource = $tabForm['source']['value'];
                     $nbEtages = $tabForm['nbEtages']['value'];
                 }
                 $dateFin = $this->date->toBdd($this->date->convertYears($tabForm['dateFin']['value']));
                 $idUtilisateur = $aAuthentification->getIdUtilisateur();
                 $idTypeStructure = $tabForm['typeStructure']['value'];
                 $idTypeEvenement = $tabForm['typeEvenement']['value'];
                 $ISMH = $tabForm['ISMH']['value'];
                 $MH = $tabForm['MH']['value'];
                 $isDateDebutEnviron = $tabForm['isDateDebutEnviron']['value'];
                 $numeroArchive = $tabForm['numeroArchive']['value'];
                 debug($idHistoriqueEvenementNouveau);
                 // debug
                 if ($nbEtages == '') {
                     $nbEtages = 0;
                 }
                 $idEvenement = $id;
                 //$tabForm['idEvenement']['value'];
                 $sqlHistoriqueEvenement = "INSERT INTO evenements ( titre, description, dateDebut, dateFin, idSource, idUtilisateur, idTypeStructure, idTypeEvenement, dateCreationEvenement,nbEtages, ISMH , MH, isDateDebutEnviron,numeroArchive)\n\t\t\t\t\t\t\tVALUES (\"" . $titre . "\", \"" . $description . "\", '" . $dateDebut . "', '" . $dateFin . "', " . $idSource . ", " . $idUtilisateur . ", '" . $idTypeStructure . "', '" . $idTypeEvenement . "', NOW(),'" . $nbEtages . "','" . $ISMH . "','" . $MH . "','" . $isDateDebutEnviron . "',\"" . $numeroArchive . "\")";
                 $sqlHistoriqueEvenement = "\n\t\t\t\t\t\t\tUPDATE evenements\n\t\t\t\t\t\t\tSET titre= '" . $titre . "',\n\t\t\t\t\t\t\tdescription = '" . $description . "',\n\t\t\t\t\t\t\tdateDebut = '" . $dateDebut . "',\n\t\t\t\t\t\t\tdateFin = '" . $dateFin . "',\n\t\t\t\t\t\t\tidSource = '" . $idSource . "',\n\t\t\t\t\t\t\tidUtilisateur = '" . $idUtilisateur . "',\n\t\t\t\t\t\t\tidTypeStructure = '" . $idTypeStructure . "',\n\t\t\t\t\t\t\tidTypeEvenement = '" . $idTypeEvenement . "',\n\t\t\t\t\t\t\tdateCreationEvenement = NOW(),\n\t\t\t\t\t\t\tnbEtages = '" . $nbEtages . "',\n\t\t\t\t\t\t\tISMH ='" . $ISMH . "',\n\t\t\t\t\t\t\tMH = '" . $MH . "',\n\t\t\t\t\t\t\tisDateDebutEnviron='" . $isDateDebutEnviron . "',\n\t\t\t\t\t\t\tnumeroArchive='" . $numeroArchive . "'\n\t\t\t\t\t\t\tWHERE idEvenement = " . $idEvenement . "\n\n\n\t\t\t\t\t\t\t";
                 $this->connexionBdd->requete($sqlHistoriqueEvenement);
                 $requeteNouvelIdHistoriqueEvenement = "\n\t\t\t\t\t\t\tSELECT idHistoriqueEvenement\n\t\t\t\t\t\t\tFROM historiqueEvenement\n\t\t\t\t\t\t\tWHERE idEvenement = " . $idEvenement . "\n\t\t\t\t\t\t\tORDER BY idHistoriqueEvenement DESC\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t";
                 $resNouvelIdHistoEvt = $this->connexionBdd->requete($requeteNouvelIdHistoriqueEvenement);
                 $fetchIdHistoEvt = mysql_fetch_assoc($resNouvelIdHistoEvt);
                 $idHistoriqueEvenementNouveau = $fetchIdHistoEvt['idHistoriqueEvenement'];
                 debug(array($sqlHistoriqueEvenement, $sqlHistoriqueEvenement, $requeteNouvelIdHistoriqueEvenement));
                 // recuperation de l'idEvenementGroupeAdresse
                 $idEvGA = $this->getIdEvenementGroupeAdresseFromIdEvenement($idEvenement);
                 // mise a jour des positions (la fonction verifiera d'abord si la date a ete changé avant de mettre a jour , sinon c'est pas la peine
                 $this->majPositionsEvenements(array("idEvenementGroupeAdresse" => $idEvGA, "idEvenementModifie" => $idEvenement));
             }
             /*if ($nouvelleLiaison == true)
             	 {*/
             $idEvenement = $id;
             //$tabForm['idEvenement']['value'];
             // ********************************************************************************************************
             // GESTION DES COURANTS ARCHITECTURAUX
             if (is_array($tabForm['courant']['value']) && count($tabForm['courant']['value']) > 0) {
                 $sqlNettoyeCourantArchitectural = 'DELETE FROM _evenementCourantArchitectural WHERE idEvenement=' . $idEvenement;
                 $sqlEvenementCourantArchitectural = 'INSERT INTO _evenementCourantArchitectural (idCourantArchitectural, idEvenement) VALUES ';
                 foreach (array_unique($tabForm['courant']['value']) as $idCourant) {
                     $sqlEvenementCourantArchitectural .= '(' . $idCourant . ', ' . $idEvenement . '),';
                 }
                 $sqlEvenementCourantArchitectural = pia_substr($sqlEvenementCourantArchitectural, 0, -1);
                 $this->connexionBdd->requete($sqlNettoyeCourantArchitectural);
                 $this->connexionBdd->requete($sqlEvenementCourantArchitectural);
             } elseif (isset($tabForm['courant']['value']) && !is_array($tabForm['courant']['value'])) {
                 $sqlNettoyeCourantArchitectural = 'DELETE FROM _evenementCourantArchitectural WHERE idEvenement=' . $idEvenement;
                 $this->connexionBdd->requete($sqlNettoyeCourantArchitectural);
             }
             // ********************************************************************************************************
             // ********************************************************************************************************
             // GESTION DES PERSONNES
             if ($idProfilUtilisateur == 2 || $idProfilUtilisateur == 1) {
                 // la modif des personnes est authorisee seulement pour les moderateurs et les admins
             } else {
                 if (is_array($tabForm['personnes']['value']) && count($tabForm['personnes']['value']) > 0) {
                     $sqlNettoyePersonne = 'DELETE FROM _evenementPersonne WHERE idEvenement=' . $idEvenement;
                     $this->connexionBdd->requete($sqlNettoyePersonne);
                     if (isset($tabForm['personnes']['value']) && count($tabForm['personnes']['value']) > 0) {
                         $sqlEvenementPersonne = 'INSERT INTO _evenementPersonne (idPersonne, idEvenement) VALUES ';
                         foreach (array_unique($tabForm['personnes']['value']) as $idPersonne) {
                             $sqlEvenementPersonne .= '(' . $idPersonne . ', ' . $idEvenement . '),';
                         }
                         $sqlEvenementPersonne = pia_substr($sqlEvenementPersonne, 0, -1);
                         $this->connexionBdd->requete($sqlEvenementPersonne);
                     }
                 } else {
                     // de toute facon on nettoie les valeurs si le champ est vide
                     $sqlNettoyePersonne = 'DELETE FROM _evenementPersonne WHERE idEvenement=' . $idEvenement;
                     $this->connexionBdd->requete($sqlNettoyePersonne);
                 }
             }
             // ********************************************************************************************************
             /*
             				 if (isset($isModifLiaison['adresses']))
             				 {
             				$sqlNettoyeAdresse = 'DELETE FROM _adresseEvenement WHERE idEvenement='.$idEvenement;
             				$this->connexionBdd->requete($sqlNettoyeAdresse);
             
             				if (!empty($tabForm['adresses']['value']))
             				{
             				$sqlAdresseEvenement = 'INSERT INTO _adresseEvenement (idAdresse, idEvenement) VALUES ';
             				foreach ( array_unique($tabForm['adresses']['value']) AS $idAdresse)
             				{
             				$sqlAdresseEvenement .= '('.$idAdresse.', '.$idEvenement.'),';
             				}
             				$sqlAdresseEvenement = pia_substr( $sqlAdresseEvenement, 0, -1);
             				$this->connexionBdd->requete($sqlAdresseEvenement);
             				}
             				}
             
             				if (isset($isModifLiaison['evenements']))
             				{
             				$sqlNettoyeEvenement = 'DELETE FROM _evenementEvenement WHERE idEvenement='.$idEvenement;
             				$this->connexionBdd->requete($sqlNettoyeEvenement);
             
             				if (!empty($tabForm['evenements']['value']))
             				{
             				$sqlEvenementEvenement = 'INSERT INTO _evenementEvenement (idEvenementAssocie, idEvenement) VALUES ';
             				foreach ( array_unique($tabForm['evenements']['value']) AS $idEvenementParent)
             				{
             				$sqlEvenementEvenement .= '('.$idEvenement.', '.$idEvenementParent.'),';
             				}
             				$sqlEvenementEvenement = pia_substr( $sqlEvenementEvenement, 0, -1);
             				$this->connexionBdd->requete($sqlEvenementEvenement);
             				}
             				}*/
             //}
             $this->connexionBdd->freeLock(array('historiqueEvenement'));
         }
     } elseif (isset($this->variablesPost['evenementGroupeAdresse']) && $this->variablesPost['evenementGroupeAdresse'] != '') {
         // on est connecté
         $this->connexionBdd->getLock(array('_adresseEvenement'));
         // cas d'un groupe d'adresse ( le formulaire d'ou l'on provient ne comporte que des listes d'adresses
         // on enregistre les adresses liees
         $idEvenementGroupeAdresse = $this->variablesPost['evenementGroupeAdresse'];
         // ajout des nouvelles adresses liées
         if (isset($this->variablesPost['adresses'])) {
             // on supprime d'abord les anciennes adresses liées
             $resSupprimer = $this->connexionBdd->requete("delete from _adresseEvenement where idEvenement = '" . $idEvenementGroupeAdresse . "'");
             // et on lie les nouvelles adresses
             foreach ($this->variablesPost['adresses'] as $indice => $idAdresse) {
                 $resInsert = $this->connexionBdd->requete("insert into _adresseEvenement (idEvenement,idAdresse) values ('" . $idEvenementGroupeAdresse . "','" . $idAdresse . "') ");
             }
         }
         $ajoutOk = true;
         $this->connexionBdd->freeLock(array('_adresseEvenement'));
     }
     if ($ajoutOk === true) {
         // ************************************************************************************************************************************************
         // envoi d'un mail a l'auteur de l'adresse
         // ************************************************************************************************************************************************
         $utilisateur = new archiUtilisateur();
         $arrayUtilisateurs = $utilisateur->getCreatorsFromAdresseFrom($idHistoriqueEvenementNouveau, 'idHistoriqueEvenement');
         $adresse = new archiAdresse();
         $intituleAdresse = $adresse->getIntituleAdresseFrom($id, 'idEvenement');
         $idEvenementGroupeAdresse = $this->getIdEvenementGroupeAdresseFromIdEvenement($id);
         if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
             header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson), false, false));
         }
         $reqAdresses = $adresse->getIdAdressesFromIdEvenement(array('idEvenement' => $id));
         $resAdresses = $this->connexionBdd->requete($reqAdresses);
         $fetchAdresses = mysql_fetch_assoc($resAdresses);
         foreach ($arrayUtilisateurs as $indice => $idUtilisateurAdresse) {
             if ($idUtilisateurAdresse != $aAuthentification->getIdUtilisateur()) {
                 $infosUtilisateur = $utilisateur->getArrayInfosFromUtilisateur($idUtilisateurAdresse);
                 if ($infosUtilisateur['alerteAdresses'] == '1' && $infosUtilisateur['idProfil'] != '4' && $infosUtilisateur['compteActif'] == '1') {
                     $messageDebut = "Un utilisateur a modifié une adresse dont vous êtes l'auteur.";
                     $messageDebut .= "Pour vous rendre sur l'événement : <a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $fetchAdresses['idAdresse'], 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse)) . "'>" . $intituleAdresse . "</a><br>";
                     $messageFin = $this->getMessageDesabonnerAlerteMail();
                     if ($utilisateur->isMailEnvoiImmediat($idUtilisateurAdresse)) {
                         $mail->sendMail($mail->getSiteMail(), $infosUtilisateur['mail'], 'Mise a jour d\'un événement d\'une adresse dont vous êtes l\'auteur. - ' . $intituleAdresse, $messageDebut . $messageFin, true);
                     } else {
                         $utilisateur->ajouteMailEnvoiRegroupes(array('contenu' => $messageDebut, 'idDestinataire' => $idUtilisateurAdresse, 'idTypeMailRegroupement' => 11));
                     }
                 }
             }
         }
         // ************************************************************************************************************************************************
         //
         $message = "Un événement a été édité.<br> Il concerne l'adresse : {$intituleAdresse}<br> <a href='" . $this->creerUrl('', 'comparaisonEvenement', array('idHistoriqueEvenementNouveau' => $idHistoriqueEvenementNouveau, 'idHistoriqueEvenementAncien' => $idHistoriqueEvenementAvantModif)) . "'>Comparer les deux versions</a></br>";
         // recuperation des infos sur l'utilisateur qui fais la modif
         $utilisateur = new archiUtilisateur();
         $arrayInfosUtilisateur = $utilisateur->getArrayInfosFromUtilisateur($this->session->getFromSession('utilisateurConnecte' . $this->idSite));
         $message .= "<br>" . $arrayInfosUtilisateur['nom'] . " - " . $arrayInfosUtilisateur['prenom'] . " - " . $arrayInfosUtilisateur['mail'] . "<br>";
         $mail->sendMailToAdministrators($mail->getSiteMail(), "Edition d'un événement - " . $intituleAdresse, $message, " AND alerteAdresses='1' ", true);
         $utilisateur->ajouteMailEnvoiRegroupesAdministrateurs(array('contenu' => $message, 'idTypeMailRegroupement' => 11, 'criteres' => " and alerteAdresses='1' "));
         // affichage du detail de l'adresse
         $reqAdresse = $adresse->getIdAdressesFromIdEvenement(array('idEvenement' => $id));
         $resAdresse = $this->connexionBdd->requete($reqAdresse);
         $fetchAdresse = mysql_fetch_assoc($resAdresse);
         if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
             header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson), false, false));
         } else {
             header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $fetchAdresse['idAdresse'], 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse), false, false));
         }
         // *************************************************************************************************************************************************************
         // envoi mail aussi au moderateur si ajout sur adresse de ville que celui ci modere
         $u = new archiUtilisateur();
         if ($idHistoriqueEvenementNouveau != 0) {
             $reqAdresses = $adresse->getIdAdressesFromIdEvenement(array('idEvenement' => $id));
             $resAdresses = $this->connexionBdd->requete($reqAdresses);
             $arrayVilles = array();
             while ($fetchAdresses = mysql_fetch_assoc($resAdresses)) {
                 $arrayVilles[] = $adresse->getIdVilleFrom($fetchAdresses['idAdresse'], 'idAdresse');
             }
             $arrayVilles = array_unique($arrayVilles);
             $arrayListeModerateurs = $u->getArrayIdModerateursActifsFromVille($arrayVilles[0], array("sqlWhere" => " AND alerteAdresses='1' "));
             if (count($arrayListeModerateurs) > 0) {
                 foreach ($arrayListeModerateurs as $indice => $idModerateur) {
                     if ($idModerateur != $this->session->getFromSession('utilisateurConnecte' . $this->idSite)) {
                         if ($u->isMailEnvoiImmediat($idModerateur)) {
                             $mailModerateur = $u->getMailUtilisateur($idModerateur);
                             $mail->sendMail($mail->getSiteMail(), $mailModerateur, "Edition d'un événement - " . $intituleAdresse, $message, true);
                         } else {
                             $u->ajouteMailEnvoiRegroupes(array('contenu' => $message, 'idDestinataire' => $idModerateur, 'idTypeMailRegroupement' => 11));
                         }
                     }
                 }
             }
         }
         // *************************************************************************************************************************************************************
         // on libere l'element
         $this->connexionBdd->freeLock(array('evenement' . $id), array('idUtilisateur' => $aAuthentification->getIdUtilisateur()));
     } else {
         // est ce que l'element est deja en cours d'edition
         if ($this->connexionBdd->isLocked('evenement' . $id, $aAuthentification->getIdUtilisateur())) {
             $this->erreurs->ajouter(_("Cet événement est déjà en cours d'édition. Veuillez retenter dans quelques minutes."));
             //echo $this->erreurs->afficher();
         } else {
             // reservation de l'element
             $this->connexionBdd->getLock(array('evenement' . $id), array('minutes' => 10, 'idUtilisateur' => $aAuthentification->getIdUtilisateur()));
             // affichage du formulaire de modifications
             // pour eviter les problemes d'affichage d'erreur si l'utilisateur utilise le bouton de retour du navigateur quand l'evenement a été supprimé , on va afficher un message si l'evenement n'existe pas
             $reqVerif = "SELECT 0 FROM evenements WHERE idEvenement = '{$id}'";
             $resVerif = $this->connexionBdd->requete($reqVerif);
             if (mysql_num_rows($resVerif) > 0) {
                 $tabForm = $this->recupTableauTravail($id);
                 $html .= $this->afficheFormulaire($tabForm, $id);
             } else {
                 $html .= "L'événement n'existe pas.";
             }
         }
     }
     return $html;
 }
 public function ajouter()
 {
     // ON LOCK LA TABLE historique image pour qu'il n'y ai pas d'ajout d'image qui se chevauche entre utilisateur
     $this->connexionBdd->getLock(array('historiqueImage'));
     $dateDuJour = date("Y-m-d");
     $listeIdNouvellesImages = array();
     // ce tableau contient la liste des idImages des nouvelles photos ajoutée,  ce tableau est simplement transmis au formulaire de modification qui s'affiche a la fin de l'ajout
     $rapportTransfert = array();
     // ce tableau contient le resultat du retour de la fonction de redimensionnement ,  ok ou pas
     // creation des repertoires datés
     if (!is_dir($this->getCheminPhysiqueImage("mini") . $dateDuJour)) {
         mkdir($this->getCheminPhysiqueImage("originaux") . $dateDuJour);
         chmod($this->getCheminPhysiqueImage("originaux") . $dateDuJour, 0777);
         mkdir($this->getCheminPhysiqueImage("mini") . $dateDuJour);
         chmod($this->getCheminPhysiqueImage("mini") . $dateDuJour, 0777);
         mkdir($this->getCheminPhysiqueImage("moyen") . $dateDuJour);
         chmod($this->getCheminPhysiqueImage("moyen") . $dateDuJour, 0777);
         mkdir($this->getCheminPhysiqueImage("grand") . $dateDuJour);
         chmod($this->getCheminPhysiqueImage("grand") . $dateDuJour, 0777);
     }
     // ************************************************************************************************************************************************************************************
     if (isset($this->variablesPost['typeAjout']) && $this->variablesPost['typeAjout'] == 'simple') {
         // *******************************************************************************************************************************************************************************
         if (isset($_FILES['fichier']['name']) && $_FILES['fichier']['error'] == UPLOAD_ERR_OK && isset($this->variablesPost['idCourant']) && isset($this->variablesPost['liaisonImage'])) {
             // on analyse le nom de fichier pour voir s'il y a une date a extraire et a inclure dans la base de données
             $dateCliche = "0000-00-00";
             $dateObj = new dateObject();
             $retourAnalyseNomFichier = $dateObj->extractDateFromString($_FILES['fichier']['name']);
             if ($retourAnalyseNomFichier['isDate']) {
                 $dateCliche = $retourAnalyseNomFichier["dateExtracted"];
             }
             // creation d'un nouvel id d'image
             // recuperation de l'id le plus haut
             $this->idImage = $nouveauIdImage = $this->getNewIdImage();
             $listeIdNouvellesImages[] = $nouveauIdImage;
             $authentifie = new archiAuthentification();
             if (extension_loaded('gd')) {
                 // nommage de l'image en fonction de l'id
                 // recuperation du type de fichier
                 // et conversion en jpg s'il le faut
                 // ajout d'un nouvel id dans l'historique image
                 $resAjout = $this->connexionBdd->requete('
                     insert into historiqueImage (idImage, dateUpload, dateCliche, idUtilisateur)
                     values ("' . $nouveauIdImage . '",  "' . $dateDuJour . '",  "' . $dateCliche . '",  "' . $authentifie->getIdUtilisateur() . '")
                     ');
                 $nouvelIdHistoriqueImage = mysql_insert_id();
                 $erreurRedimension = false;
                 // conversion en jpeg quelque soit le format géré
                 // 1- l'image est sauvegardee tel quel  (0 pour le redimensionnement)
                 if (!$this->redimension($_FILES['fichier']['tmp_name'], pia_substr(strtolower($_FILES['fichier']['name']), -3), $this->getCheminPhysiqueImage("originaux") . $dateDuJour . "/" . $nouvelIdHistoriqueImage . ".jpg", 0)) {
                     $erreurRedimension = true;
                 }
                 // 2- redimensionnement au format mini
                 if (!$this->redimension($_FILES['fichier']['tmp_name'], pia_substr(strtolower($_FILES['fichier']['name']), -3), $this->getCheminPhysiqueImage("mini") . $dateDuJour . "/" . $nouvelIdHistoriqueImage . ".jpg", $this->getFormatImageMini())) {
                     $erreurRedimension = true;
                 }
                 // 3- redimensionnement au format moyen
                 if (!$this->redimension($_FILES['fichier']['tmp_name'], pia_substr(strtolower($_FILES['fichier']['name']), -3), $this->getCheminPhysiqueImage("moyen") . $dateDuJour . "/" . $nouvelIdHistoriqueImage . ".jpg", $this->getFormatImageMoyen())) {
                     $erreurRedimension = true;
                 }
                 // 4- redimensionnement au format grand
                 if (!$this->redimension($_FILES['fichier']['tmp_name'], pia_substr(strtolower($_FILES['fichier']['name']), -3), $this->getCheminPhysiqueImage("grand") . $dateDuJour . "/" . $nouvelIdHistoriqueImage . ".jpg", $this->getFormatImageGrand())) {
                     $erreurRedimension = true;
                 }
                 unlink($_FILES['fichier']['tmp_name']);
                 $rapportTransfert[$nouveauIdImage] = array("erreurRedimension" => $erreurRedimension);
                 // ajout a la table _adresseImage
                 switch ($this->variablesPost['liaisonImage']) {
                     case 'adresse':
                         $resLiaison = $this->connexionBdd->requete('insert into _adresseImage (idImage, idAdresse, seSitue, prisDepuis, etage, hauteur) values ("' . $nouveauIdImage . '",  "' . $this->variablesPost['idCourant'] . '",  0,  0,  0,  0)');
                         break;
                     case 'evenement':
                         $resLiaison = $this->connexionBdd->requete('insert into _evenementImage (idImage, idEvenement) values ("' . $nouveauIdImage . '",  "' . $this->variablesPost['idCourant'] . '")');
                         break;
                     default:
                         // cas ou l'on upload simplement dans la bibliotheque des images sans préciser si l'image concerne un evenement ou une adresse
                         break;
                 }
             } else {
                 echo "Il s'est produit une erreur lors de l'upload,  la session est terminée ou la bibliothèque gd n'est pas installé sur le serveur.<br>";
             }
         } else {
             switch ($_FILES['fichier']['error']) {
                 case 0:
                     echo "Aucune erreur détectée";
                     break;
                 case 1:
                     echo "Erreur lors de l'upload : archiImage::ajouter() : Taille du fichier trop importante (php.ini)";
                     break;
                 case 2:
                     echo "Erreur lors de l'upload : archiImage::ajouter() : Taille du fichier trop importante (formulaire html)";
                     break;
                 case 3:
                     echo "Erreur lors de l'upload : archiImage::ajouter() : Téléchargement partiel.";
                     break;
                 case 4:
                     echo "Erreur lors de l'upload : archiImage::ajouter() : Aucun fichier n'a été téléchargé";
                     break;
                 case 6:
                     echo "Erreur lors de l'upload : archiImage::ajouter() : Un dossier temporaire est manquant";
                     break;
                 case 7:
                     echo "Erreur lors de l'upload : archiImage::ajouter() : Echec de l'écriture sur le disque";
                     break;
                 case 8:
                     echo "Erreur lors de l'upload : archiImage::ajouter() : Une extension PHP a annulé l'upload";
                     break;
                 default:
                     echo "Erreur lors de l'upload : archiImage::ajouter() ";
                     break;
             }
             echo "<br/>";
         }
         // *******************************************************************************************************************************************************************************
     } elseif (isset($this->variablesPost['typeAjout']) && $this->variablesPost['typeAjout'] == 'multi') {
         // *******************************************************************************************************************************************************************************
         // traitement des fichiers uploades par FTP
         if (isset($this->variablesPost['idCourant']) && isset($this->variablesPost['liaisonImage'])) {
             //echo "cheminUploadMultiple=".$this->variablesPost["cheminUploadMultiple"]."<br>";
             //echo "idCourant=".$this->variablesPost["idCourant"]."<br>";
             //echo "liaisonImage=".$this->variablesPost["liaisonImage"]."<br>";
             $repertoireUpload = $this->variablesPost["cheminUploadMultiple"];
             // conversion des noms de fichier en utf8 de tout le repertoire
             exec("convmv -f iso-8859-1 -t utf-8 -r " . $this->getCheminPhysique() . "/images/uploadMultiple/" . $repertoireUpload . "/* --notest", $retourExec);
             $authentifie = new archiAuthentification();
             $nbSuppression = 0;
             if ($directory = opendir($this->getCheminPhysique() . "/images/uploadMultiple/" . $repertoireUpload)) {
                 // parcours du repertoire
                 while ($fichier = readdir($directory)) {
                     if ($fichier != "." && $fichier != ".." && !is_dir($fichier)) {
                         // on analyse le nom de fichier pour voir s'il y a une date a extraire et a inclure dans la base de données
                         $dateCliche = "0000-00-00";
                         $dateObj = new dateObject();
                         $retourAnalyseNomFichier = $dateObj->extractDateFromString($fichier);
                         if ($retourAnalyseNomFichier['isDate']) {
                             $dateCliche = $retourAnalyseNomFichier["dateExtracted"];
                         }
                         // recuperation de l'id le plus haut ( on le fait a chaque fois pour etre sur de ne pas
                         $nouveauIdImage = $this->getNewIdImage();
                         // tableau transmis a la fonction de modifications pour savoir quelles ont ete les nouvelles images ajoutees
                         $listeIdNouvellesImages[] = $nouveauIdImage;
                         if (extension_loaded('gd')) {
                             $resAjout = $this->connexionBdd->requete('
                                 insert into historiqueImage (idImage, dateUpload, dateCliche, idUtilisateur,  idSource)
                                 values ("' . $nouveauIdImage . '",  "' . $dateDuJour . '",  "' . $dateCliche . '",  "' . $authentifie->getIdUtilisateur() . '",  0)
                                 ');
                             $nouvelIdHistoriqueImage = mysql_insert_id();
                             // on ajoute le chemin de l'image uploadee du repertoire uploadMultiple pour pouvoir regenerer les fichiers a partir de celle ci ,  au cas ou des images redimensionnees sont corrompues
                             // les images uploadees ne seront donc plus effacees
                             $reqAjoutImageUploadee = "\n                                    INSERT INTO imagesUploadeesPourRegeneration\n                                        (idImage, idHistoriqueImage, cheminImageUploadee)\n                                    VALUES ('" . $nouveauIdImage . "',  '" . $nouvelIdHistoriqueImage . "', \"" . $repertoireUpload . "/" . $fichier . "\") ";
                             $resAjoutImageUploadee = $this->connexionBdd->requete($reqAjoutImageUploadee);
                             //redimensionnement
                             //echo "debug ".$fichier." ==> ".pia_substr(strtolower($fichier),  -3)."<br>";
                             // originaux
                             $erreurRedimension = false;
                             if (!$this->redimension($this->getCheminPhysique() . "/images/uploadMultiple/" . $repertoireUpload . "/" . $fichier, pia_substr(strtolower($fichier), -3), $this->getCheminPhysiqueImage("originaux") . $dateDuJour . "/" . $nouvelIdHistoriqueImage . ".jpg", 0)) {
                                 $erreurRedimension = true;
                             }
                             //mini
                             if (!$this->redimension($this->getCheminPhysique() . "/images/uploadMultiple/" . $repertoireUpload . "/" . $fichier, pia_substr(strtolower($fichier), -3), $this->getCheminPhysiqueImage("mini") . $dateDuJour . "/" . $nouvelIdHistoriqueImage . ".jpg", $this->getFormatImageMini())) {
                                 $erreurRedimension = true;
                             }
                             //moyen
                             if (!$this->redimension($this->getCheminPhysique() . "/images/uploadMultiple/" . $repertoireUpload . "/" . $fichier, pia_substr(strtolower($fichier), -3), $this->getCheminPhysiqueImage("moyen") . $dateDuJour . "/" . $nouvelIdHistoriqueImage . ".jpg", $this->getFormatImageMoyen())) {
                                 $erreurRedimension = true;
                             }
                             //grand
                             if (!$this->redimension($this->getCheminPhysique() . "/images/uploadMultiple/" . $repertoireUpload . "/" . $fichier, pia_substr(strtolower($fichier), -3), $this->getCheminPhysiqueImage("grand") . $dateDuJour . "/" . $nouvelIdHistoriqueImage . ".jpg", $this->getFormatImageGrand())) {
                                 $erreurRedimension = true;
                             }
                             //unlink($this->getCheminPhysique()."/images/uploadMultiple/".$repertoireUpload."/".$fichier);
                             // suppression des fichiers du repertoire upload ,  suppression du repertoire
                             $nbSuppression++;
                             $rapportTransfert[$nouveauIdImage] = array("erreurRedimension" => $erreurRedimension);
                             // ajout a la table _adresseImage
                             switch ($this->variablesPost['liaisonImage']) {
                                 case 'adresse':
                                     $resLiaison = $this->connexionBdd->requete('insert into _adresseImage (idImage, idAdresse, description, seSitue, prisDepuis, etage, hauteur) values ("' . $nouveauIdImage . '",  "' . $this->variablesPost['idCourant'] . '",  "",  0,  0,  0,  0)');
                                     break;
                                 case 'evenement':
                                     $resLiaison = $this->connexionBdd->requete('insert into _evenementImage (idImage, idEvenement) values ("' . $nouveauIdImage . '",  "' . $this->variablesPost['idCourant'] . '")');
                                     break;
                                 default:
                                     break;
                             }
                         }
                     }
                 }
             }
             if ($nbSuppression > 0) {
                 // on supprime le repertoire (si des fichiers ont ete ajoutés)
                 //rmdir($this->getCheminPhysique()."/images/uploadMultiple/".$repertoireUpload);
             }
         }
     }
     //$this->afficherListe($id ,  $type)
     // on libere la table
     $this->connexionBdd->freeLock(array('historiqueImage'));
     // envoi du mail au administrateur
     $message = "De nouvelles images ont été uploadées : <br>";
     $intituleAdresse = "";
     switch ($this->variablesPost['liaisonImage']) {
         case 'evenement':
             $a = new archiAdresse();
             $reqAdresse = $a->getIdAdressesFromIdEvenement(array('idEvenement' => $this->variablesPost['idCourant']));
             $resAdresse = $this->connexionBdd->requete($reqAdresse);
             $fetchAdresse = mysql_fetch_assoc($resAdresse);
             // on prend la premiere adresse qui vient
             $intituleAdresse = $a->getIntituleAdresseFrom($fetchAdresse['idAdresse'], 'idAdresse');
             foreach ($listeIdNouvellesImages as $idImageNouvelle) {
                 $msgErreur = "";
                 if ($rapportTransfert[$idImageNouvelle]['erreurRedimension'] == true) {
                     $msgErreur = " ATTENTION : il y a eu un problème avec cette image (format incorrect) ";
                 }
                 $message .= "<a href='" . $this->creerUrl('', 'imageDetail', array('archiIdImage' => $idImageNouvelle, 'archiRetourAffichage' => 'evenement', 'archiRetourIdName' => 'idEvenement', 'archiRetourIdValue' => $this->getIdEvenementGroupeAdresseFromImage(array('idImage' => $idImageNouvelle)))) . "'>Image " . $idImageNouvelle . "</a>{$msgErreur}<br>";
             }
             $evenement = new archiEvenement();
             $idEvenementGroupeAdresse = $evenement->getIdEvenementGroupeAdresseFromIdEvenement($this->variablesPost['idCourant']);
             $message .= "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'archiIdAdresse' => $fetchAdresse['idAdresse'])) . "'>" . $intituleAdresse . "</a><br>";
             break;
         case 'adresse':
             $a = new archiAdresse();
             $intituleAdresse = $a->getIntituleAdresseFrom($this->variablesPost['idCourant'], 'idAdresse');
             foreach ($listeIdNouvellesImages as $idImageNouvelle) {
                 $msgErreur = "";
                 if ($rapportTransfert[$idImageNouvelle]['erreurRedimension'] == true) {
                     $msgErreur = " ATTENTION : il y a eu un problème avec cette image (format incorrect) ";
                 }
                 $message .= "<a href='" . $this->creerUrl('', 'imageDetail', array('archiIdImage' => $idImageNouvelle, 'archiRetourAffichage' => 'evenement', 'archiRetourIdName' => 'idEvenement', 'archiRetourIdValue' => $this->getIdEvenementGroupeAdresseFromImage(array('idImage' => $idImageNouvelle)))) . "'>Image " . $idImageNouvelle . "</a>{$msgErreur}<br>";
             }
             $arrayUrl = array();
             if (isset($idImageNouvelle)) {
                 $idEvenementGroupeAdresse = $this->getIdEvenementGroupeAdresseFromImage(array('idImage' => $idImageNouvelle));
                 $arrayUrl = array('archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse);
             }
             $message .= "<a href='" . $this->creerUrl('', '', array_merge($arrayUrl, array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $this->variablesPost['idCourant']))) . "'>" . $intituleAdresse . "</a><br>";
             break;
         default:
             $message .= "De nouvelle images ont été ajoutées à la bibliothèque :<br>";
             foreach ($listeIdNouvellesImages as $idImageNouvelle) {
                 $msgErreur = "";
                 if ($rapportTransfert[$idImageNouvelle]['erreurRedimension'] == true) {
                     $msgErreur = " ATTENTION : il y a eu un problème avec cette image (format incorrect) ";
                 }
                 $message .= "<a href='" . $this->creerUrl('', 'imageDetail', array('archiIdImage' => $idImageNouvelle, 'archiRetourAffichage' => 'evenement', 'archiRetourIdName' => 'idEvenement', 'archiRetourIdValue' => $this->getIdEvenementGroupeAdresseFromImage(array('idImage' => $idImageNouvelle)))) . "'>Image " . $idImageNouvelle . "</a>{$msgErreur}<br>";
             }
             break;
     }
     $mail = new mailObject();
     // recuperation des infos sur l'utilisateur qui fais la modif
     $utilisateur = new archiUtilisateur();
     $arrayInfosUtilisateur = $utilisateur->getArrayInfosFromUtilisateur($this->session->getFromSession('utilisateurConnecte' . $this->idSite));
     $message .= "<br>" . $arrayInfosUtilisateur['nom'] . " - " . $arrayInfosUtilisateur['prenom'] . " - " . $arrayInfosUtilisateur['mail'] . "<br>";
     $mail->sendMailToAdministrators($mail->getSiteMail(), 'Nouvelles images ajoutées - ' . $intituleAdresse, $message, " AND alerteAdresses = '1' ", true);
     $utilisateur->ajouteMailEnvoiRegroupesAdministrateurs(array('contenu' => $message, 'idTypeMailRegroupement' => 13, 'criteres' => " and alerteAdresses='1' "));
     // ************************************************************************************************************************************************
     // envoi d'un mail pour l'auteur de l'adresse
     // ************************************************************************************************************************************************
     $mail = new mailObject();
     $utilisateur = new archiUtilisateur();
     $auth = new archiAuthentification();
     $arrayUtilisateurs = $utilisateur->getCreatorsFromAdresseFrom($this->variablesPost['idCourant'], 'idEvenement');
     // a modifier quand on pourra ajouter des photos sur une adresse
     $adresse = new archiAdresse();
     $intituleAdresse = $adresse->getIntituleAdresseFrom($this->variablesPost['idCourant'], 'idEvenement');
     $evenement = new archiEvenement();
     foreach ($arrayUtilisateurs as $indice => $idUtilisateurAdresse) {
         if ($idUtilisateurAdresse != $auth->getIdUtilisateur()) {
             $infosUtilisateur = $utilisateur->getArrayInfosFromUtilisateur($idUtilisateurAdresse);
             if ($infosUtilisateur['alerteAdresses'] == '1' && $infosUtilisateur['compteActif'] == '1' && $infosUtilisateur['idProfil'] != '4') {
                 $messageIntro = "Un utilisateur a ajouté une ou plusieurs images sur une adresse dont vous êtes l'auteur.<br>";
                 $idEvenementGroupeAdresse = $evenement->getIdEvenementGroupeAdresseFromIdEvenement($this->variablesPost['idCourant']);
                 $adresse = new archiAdresse();
                 $reqAdresses = $adresse->getIdAdressesFromIdEvenement(array('idEvenement' => $this->variablesPost['idCourant']));
                 $resAdresses = $this->connexionBdd->requete($reqAdresses);
                 $fetchAdresses = mysql_fetch_assoc($resAdresses);
                 $message = "Pour vous rendre sur l'évènement : <a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $fetchAdresses['idAdresse'], 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse)) . "'>" . $intituleAdresse . "</a><br>";
                 $messageFin = $this->getMessageDesabonnerAlerteMail();
                 if ($utilisateur->isMailEnvoiImmediat($idUtilisateurAdresse)) {
                     $mail->sendMail($mail->getSiteMail(), $infosUtilisateur['mail'], 'Ajout de photos sur une adresse dont vous êtes l\'auteur.', $messageIntro . $message . $messageFin, true);
                 } else {
                     $utilisateur->ajouteMailEnvoiRegroupes(array('contenu' => $message, 'idDestinataire' => $idUtilisateurAdresse, 'idTypeMailRegroupement' => 13));
                 }
             }
         }
     }
     // ************************************************************************************************************************************************
     // *************************************************************************************************************************************************************
     // envoi mail aussi au moderateur si ajout sur adresse de ville que celui ci modere
     $u = new archiUtilisateur();
     $arrayVilles = array();
     $arrayVilles[] = $adresse->getIdVilleFrom($this->variablesPost['idCourant'], 'idEvenement');
     $arrayVilles = array_unique($arrayVilles);
     $arrayListeModerateurs = $u->getArrayIdModerateursActifsFromVille($arrayVilles[0], array("sqlWhere" => " AND alerteAdresses='1' "));
     if (count($arrayListeModerateurs) > 0) {
         foreach ($arrayListeModerateurs as $indice => $idModerateur) {
             if ($idModerateur != $this->session->getFromSession('utilisateurConnecte' . $this->idSite)) {
                 if ($u->isMailEnvoiImmediat($idModerateur)) {
                     $mailModerateur = $u->getMailUtilisateur($idModerateur);
                     $mail->sendMail($mail->getSiteMail(), $mailModerateur, 'Nouvelles images ajoutées -' . $intituleAdresse, $message, true);
                 } else {
                     $u->ajouteMailEnvoiRegroupes(array('contenu' => $message, 'idDestinataire' => $idModerateur, 'idTypeMailRegroupement' => 13));
                 }
             }
         }
     }
     // *************************************************************************************************************************************************************
     // on appelle le formulaire permettant de mettre a jour les infos concernant les photos
     echo $this->afficherFormulaireModification(0, '', $listeIdNouvellesImages);
 }