public function enregistreCommentaire()
 {
     $auth = new archiAuthentification();
     $fieldsCommentaires = $this->getCommentairesFields();
     $formulaire = new formGenerator();
     if ($auth->estConnecte()) {
         unset($fieldsCommentaires['captcha']);
     }
     $error = $formulaire->getArrayFromPost($fieldsCommentaires);
     if (count($error) == 0) {
         $idUtilisateur = 0;
         if ($auth->estConnecte()) {
             $idUtilisateur = $auth->getIdUtilisateur();
             // suite au SPAM mise en place d'un champ CommentaireValide 0/1 (by fabien 13/01/2012)
             $CommentaireValide = 1;
             $user = new archiUtilisateur();
             $userInfos = $user->getArrayInfosFromUtilisateur($idUtilisateur);
         } else {
             $CommentaireValide = 0;
         }
         // enregistrement du nouveau commentaire
         //$req = "insert into commentaires (nom,prenom,email,commentaire,idEvenementGroupeAdresse,date,idUtilisateur) values (\"".addslashes(strip_tags($this->variablesPost['nom']))."\",\"".addslashes(strip_tags($this->variablesPost['prenom']))."\",\"".addslashes(strip_tags($this->variablesPost['email']))."\",\"".addslashes(strip_tags($this->variablesPost['commentaire']))."\",'".$this->variablesPost['idEvenementGroupeAdresse']."',now(),'".$idUtilisateur."')";
         $nom = $auth->estConnecte() ? $userInfos["nom"] : $this->variablesPost['nom'];
         $prenom = $auth->estConnecte() ? $userInfos["prenom"] : $this->variablesPost['prenom'];
         $email = $auth->estConnecte() ? $user->getMailUtilisateur($idUtilisateur) : $this->variablesPost['email'];
         $uniqid = uniqid(null, true);
         $req = "INSERT INTO commentaires (nom, prenom, email, commentaire, idEvenementGroupeAdresse, date, idUtilisateur, CommentaireValide, uniqid) VALUES ('" . mysql_real_escape_string(strip_tags($nom)) . "', '" . mysql_real_escape_string(strip_tags($prenom)) . "', '" . mysql_real_escape_string(strip_tags($email)) . "', '" . mysql_real_escape_string(strip_tags($this->variablesPost['commentaire'])) . "', '" . mysql_real_escape_string($this->variablesPost['idEvenementGroupeAdresse']) . "', now(), '" . mysql_real_escape_string($idUtilisateur) . "'," . mysql_real_escape_string($CommentaireValide) . ", '" . mysql_real_escape_string($uniqid) . "')";
         $res = $this->connexionBdd->requete($req);
         $idCommentaire = mysql_insert_id();
         // retour a l'affichage de l'adresse
         $idAdresse = $this->getIdAdresseFromIdEvenementGroupeAdresse($this->variablesPost['idEvenementGroupeAdresse']);
         // ************************************************************************************************************************************************
         // envoi d'un mail a tous les participants pour le groupe d'adresse
         // ************************************************************************************************************************************************
         $mail = new mailObject();
         $utilisateur = new archiUtilisateur();
         $arrayUtilisateurs = $utilisateur->getParticipantsCommentaires($this->variablesPost['idEvenementGroupeAdresse']);
         $arrayCreatorAdresse = $utilisateur->getCreatorsFromAdresseFrom($this->variablesPost['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
         $arrayUtilisateurs = array_merge($arrayUtilisateurs, $arrayCreatorAdresse);
         $arrayUtilisateurs = array_unique($arrayUtilisateurs);
         $intituleAdresse = $this->getIntituleAdresseFrom($idAdresse, 'idAdresse');
         foreach ($arrayUtilisateurs as $indice => $idUtilisateurAdresse) {
             if ($idUtilisateurAdresse != $auth->getIdUtilisateur()) {
                 $infosUtilisateur = $utilisateur->getArrayInfosFromUtilisateur($idUtilisateurAdresse);
                 if ($infosUtilisateur['alerteCommentaires'] == '1' && $infosUtilisateur['compteActif'] == '1' && $infosUtilisateur['idProfil'] != '4') {
                     $message = "Un utilisateur a ajouté un commentaire sur une adresse ou vous avez participé.";
                     $message .= "Pour vous rendre sur l'adresse : <a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $idAdresse, 'archiIdEvenementGroupeAdresse' => $this->variablesPost['idEvenementGroupeAdresse'])) . '#commentaireAdresse' . $idCommentaire . "'>" . $intituleAdresse . "</a><br>";
                     $message .= $this->getMessageDesabonnerAlerteMail();
                     $mail->sendMail($mail->getSiteMail(), $infosUtilisateur['mail'], 'Ajout d\'un commentaire sur une adresse sur laquelle vous avez participé.', $message, true);
                 }
             }
         }
         // ************************************************************************************************************************************************
         // envoi d'un mail aux administrateur pour la moderation
         $message = "Merci d'avoir laissé un commentaire sur Archi-Strasbourg.<br>";
         $message .= "Afin qu'il soit publié, merci de le valider en cliquant sur ";
         $message .= "<a href='" . $this->getUrlRacine() . "script/validateEmail.php?uniqid=" . urlencode($uniqid) . "'>ce lien</a>.<br>";
         $message .= "<br/>Cordialement,</br>";
         $mail = new mailObject();
         $envoyeur['envoyeur'] = $mail->getSiteMail();
         $envoyeur['replyTo'] = strip_tags($this->variablesPost['email']);
         $u = new archiUtilisateur();
         if (!$CommentaireValide) {
             $mail->sendMail($envoyeur['envoyeur'], $this->variablesPost['email'], 'Votre commentaire sur Archi-Strasbourg', $message, true);
         } else {
             $message = "Un utilisateur a ajouté un commentaire sur archiV2 : <br>";
             $message .= "nom ou pseudo : " . strip_tags($this->variablesPost['nom']) . "<br>";
             $message .= "prenom : " . strip_tags($this->variablesPost['prenom']) . "<br>";
             $message .= "email : " . strip_tags($this->variablesPost['email']) . "<br>";
             $message .= "commentaire : " . stripslashes(strip_tags($this->variablesPost['commentaire'])) . "<br>";
             $message .= "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $this->variablesPost['idEvenementGroupeAdresse'], 'archiIdAdresse' => $idAdresse)) . '#commentaireAdresse' . $idCommentaire . "'>" . $intituleAdresse . "</a><br>";
             $mail->sendMailToAdministrators($envoyeur, 'Un utilisateur a ajouté un commentaire', $message, " AND alerteCommentaires='1' ", true, true);
             // envoi mail aussi au moderateur si ajout sur adresse de ville que celui ci modere
             $arrayVilles = array();
             $arrayVilles[] = $this->getIdVilleFrom($idAdresse, 'idAdresse');
             $arrayVilles = array_unique($arrayVilles);
             $arrayListeModerateurs = $u->getArrayIdModerateursActifsFromVille($arrayVilles[0], array("sqlWhere" => " AND alerteCommentaires='1' "));
             if (count($arrayListeModerateurs) > 0) {
                 foreach ($arrayListeModerateurs as $indice => $idModerateur) {
                     if ($auth->getIdUtilisateur() != $idModerateur) {
                         $mailModerateur = $u->getMailUtilisateur($idModerateur);
                         $mail->sendMail($mail->getSiteMail(), $mailModerateur, 'Un utilisateur a ajouté un commentaire', $message, true);
                     }
                 }
             }
         }
         // remise a zero des variables en post sinon on va reafficher les infos
         $_POST['commentaire'] = "";
         $_POST['email'] = "";
         $_POST['nom'] = "";
         $_POST['prenom'] = "";
         $this->variablesGet['archiIdEvenementGroupeAdresse'] = $this->variablesPost['idEvenementGroupeAdresse'];
         $idAdresse = $this->getIdAdresseFromIdEvenementGroupeAdresse($this->variablesGet['archiIdEvenementGroupeAdresse']);
         $this->messages->addConfirmation("Commentaire enregistré !");
         $this->messages->display();
         header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $idAdresse, 'archiIdEvenementGroupeAdresse' => $this->variablesGet['archiIdEvenementGroupeAdresse']), false, false) . '#commentaireAdresse' . $idCommentaire);
     } else {
         $this->messages->addError("Il y a une erreur dans le formulaire.");
         $this->messages->display();
         echo $this->getListeCommentaires($this->variablesPost['idEvenementGroupeAdresse']);
         echo $this->getFormulaireCommentaires($this->variablesPost['idEvenementGroupeAdresse'], $fieldsCommentaires);
     }
 }
 /**
  * Affichage de la page d'accueil
  *
  * @param array $params Paramètres
  *
  * @return string HTML
  * */
 function afficheAccueil($params = array())
 {
     $t = new Template($this->getCheminPhysique() . $this->cheminTemplates);
     $t->set_filenames(array('accueil' => 'accueil.tpl'));
     $html = '';
     $infos = "";
     $calque = new calqueObject();
     $date = new dateObject();
     $auth = new archiAuthentification();
     if ($auth->estConnecte()) {
         $t->assign_block_vars('estConnecte', array());
     }
     $t->assign_vars(array('urlAjoutAdresse' => $this->creerUrl('', 'ajoutNouveauDossier')));
     $adresses = new archiAdresse();
     if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage'] != '') {
         $modeAffichage = $this->variablesGet['modeAffichage'];
     } else {
         $modeAffichage = '';
     }
     switch ($modeAffichage) {
         // **********************************************************************************************************************************
         // PROFIL
         // **********************************************************************************************************************************
         case 'profil':
             $t->assign_block_vars('afficheProfil', array());
             $t->assign_vars(array('onglet1' => "<a href='" . $this->creerUrl('', 'afficheAccueil', array('modeAffichage' => '')) . "'><font color='#FFFFFF'>" . _("Nouveautés") . "</font></a>", 'onglet2' => _("Mon Profil"), 'onglet3' => "<a href='" . $this->creerUrl('', 'afficheAccueil', array('modeAffichage' => 'monArchi')) . "'><font color='#FFFFFF'>" . _("Mon Archi") . "</font></a>"));
             $u = new archiUtilisateur();
             $s = new objetSession();
             if ($s->isInSession('utilisateurConnecte' . $this->idSite)) {
                 $profil = $u->afficher(array(), $s->getFromSession('utilisateurConnecte' . $this->idSite), 'utilisateurProfil');
             } else {
                 //header('Location: ?archiAffichage=authentification&archiActionPrecedente=afficheProfil');
                 $authentification = new ArchiAuthentification();
                 echo $authentification->afficheFormulaireAuthentification();
             }
             $t->assign_vars(array('htmlProfil' => $profil));
             break;
             //Mon Archi
         //Mon Archi
         case 'monArchi':
             $t->assign_block_vars('afficheMonArchi', array());
             $t->assign_vars(array('onglet1' => "<a href='" . $this->creerUrl('', 'afficheAccueil', array('modeAffichage' => '')) . "'><font color='#FFFFFF'>" . _("Nouveautés") . "</font></a>", 'onglet2' => "<a href='" . $this->creerUrl('', 'afficheAccueil', array('modeAffichage' => 'profil')) . "'><font color='#FFFFFF'>" . _("Mon Profil") . "</font></a>", 'onglet3' => _("Mon Archi")));
             $utilisateur = new archiUtilisateur();
             $adresse = new archiAdresse();
             $arrayInfosConnexions = $utilisateur->getInfosConnexions($auth->getIdUtilisateur());
             $arrayInfosModifs = $utilisateur->getInfosModifsPerso($auth->getIdUtilisateur());
             $monArchi = "<table border=''><tr><td width=500><h2>" . _("Mon Archi") . "</h2></td></tr></table>";
             if (mysql_fetch_assoc($this->connexionBdd->requete("SELECT idImage FROM historiqueImage WHERE idUtilisateur = '" . $auth->getIdUtilisateur() . "' AND licence = '3'"))) {
                 $monArchi .= "<strong>" . _("Certaines de vos images ne sont pas librement réutilisables !") . "</strong>";
                 $monArchi .= "<br/>";
                 $monArchi .= _("Cliquez") . " <a href='" . $this->creerUrl("", "batchLicence") . "'>" . _("ici") . "</a> " . _("pour les publier sous licence libre.");
                 $monArchi .= "<br/><br/>";
             }
             $monArchi .= "<div style='font-size:12px;'>\n\t\t\t\t\t\t<b>" . _("En tant qu'utilisateur vous pouvez :") . "</b><ul>\n\t\t\t\t\t\t<li> <a href='" . $this->creerUrl('', 'ajoutNouveauDossier') . "' onmouseover=\"" . $calque->getJsContextHelpOnMouseOver(_("En ajoutant votre adresse vous contribuez au développement du site. Mais d\\'abord qu\\'entend t-on par \"votre adresse\" ? Et bien cela peut être l\\'immeuble ou la maison que vous occupez. Un immeuble que vous aimez mais que vous ne trouvez pas sur le site. Avec le développement des appareils photo numériques,  il devient très simple de prendre une photo,  et de la copier sur l\\'ordinateur. Ajouter une adresse dans www.archi-strasbourg.org ne prend pas plus de 20 secondes. Copier la photo 10 secondes de plus...")) . "\" onmouseout='" . $calque->getJSContextHelpOnMouseOut() . "'>" . _("ajouter des adresses") . "</a></li>\n\t\t\t\t\t\t<li> <span onmouseover=\"" . $calque->getJsContextHelpOnMouseOver(_("Vous pouvez ajouter des photos afin d'illustrer une adresse.")) . "\" onmouseout=\"" . $calque->getJSContextHelpOnMouseOut() . "\"> " . _("ajouter des photos à une adresse") . "</span></li>\n\t\t\t\t\t\t<li> <span onmouseover=\"" . $calque->getJsContextHelpOnMouseOver(_("Vous pouvez ajouter des évènements sur toute adresse qu'un autre utilisateur a créée.")) . "\" onmouseout=\"" . $calque->getJSContextHelpOnMouseOut() . "\">" . _("ajouter des évènements à une adresse") . "</span></li>\n\t\t\t\t\t\t<li> <span onmouseover=\"" . $calque->getJsContextHelpOnMouseOver(_("En activant votre alerte mail sur les adresses,  vous serez prevenu de toute modification sur une adresse dont vous êtes l'auteur")) . "\" onmouseout=\"" . $calque->getJSContextHelpOnMouseOut() . "\">" . _("être prévenu par mail d'une modification de vos participations") . "</span></li>\n\t\t\t\t\t\t<li> <span onmouseover=\"" . $calque->getJsContextHelpOnMouseOver(_("En acceptant de recevoir les mails concernant les nouvelles adresses,  vous serez prévenu de l'ajout d'une nouvelle adresse sur le site.")) . "\" onmouseout=\"" . $calque->getJSContextHelpOnMouseOut() . "\">" . _("être averti des nouvelles adresses") . "</span></li>\n\t\t\t\t\t\t<li> <span onmouseover=\"" . $calque->getJsContextHelpOnMouseOver(_("Grâce à l'alerte par mail sur les commentaires,  vous pouvez débattre avec les autres utilisateurs.")) . "\" onmouseout=\"" . $calque->getJSContextHelpOnMouseOut() . "\">" . _("être averti des nouveaux commentaires ajoutés sur une adresse que vous avez créée.") . "</span></li></ul>";
             $monArchi .= "<b>" . _("Vos statistiques :") . "</b><br>";
             $monArchi .= "" . _("Vous vous êtes connecté :") . " " . $arrayInfosConnexions['nbConnexions'] . " fois<br>";
             $monArchi .= "&nbsp;&nbsp;&nbsp;" . _("Date de votre dernière connexion :") . " " . $this->date->toFrench($arrayInfosConnexions['derniereConnexion']) . "<br>";
             $monArchi .= "<p>\n\t\t\t\t\t\t&nbsp;&nbsp;&nbsp;" . _("Nombre d'images modifiées :") . " " . $arrayInfosModifs['nbModifImage'] . "<br />\n\t\t\t\t\t\t&nbsp;&nbsp;&nbsp;" . _("Nombre d'images ajoutées :") . " " . $arrayInfosModifs['nbAjoutImage'] . "<br />\n\t\t\t\t\t\t&nbsp;&nbsp;&nbsp;" . _("Nombre d'évènements modifiés :") . " " . $arrayInfosModifs['nbModifEvenement'] . "<br />\n\t\t\t\t\t\t&nbsp;&nbsp;&nbsp;" . _("Nombre d'évènements ajoutés :") . " " . $arrayInfosModifs['nbAjoutEvenement'] . "</p>";
             // ******************************************************************************************************************************************
             // liste des evenements ajoutés ou modifiés par l'utilisateur
             // ******************************************************************************************************************************************
             $paginationEvenements = new paginationObject();
             // calcul du nombre d'evenements ajoutes ou modifies pour la pagination
             $req = "\n\t\t\t\t\t\tSELECT distinct ha1.idAdresse, he1.dateCreationEvenement as dateCreationEvenement\n\n\t\t\t\t\t\tFROM evenements he2,  evenements he1\n\t\t\t\t\t\tLEFT JOIN _evenementEvenement ee1 ON ee1.idEvenementAssocie = he1.idEvenement\n\t\t\t\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = ee1.idEvenement\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\n\t\t\t\t\t\tWHERE he2.idEvenement = he1.idEvenement\n\t\t\t\t\t\tAND he1.idUtilisateur = '" . $auth->getIdUtilisateur() . "'\n\t\t\t\t\t\t\t\tGROUP BY he1.idEvenement,  ha1.idAdresse,  ha1.idHistoriqueAdresse\n\t\t\t\t\t\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\t";
             $res = $this->connexionBdd->requete($req);
             //$fetchNbEvenements = mysql_fetch_assoc($res);
             $nbEnregistrementTotaux = mysql_num_rows($res);
             $nbEnregistrementsParPage = 5;
             $arrayPaginationEvenements = $paginationEvenements->pagination(array('nomParamPageCourante' => 'archiMonArchiEvenementPage', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
             $req = "\n\t\t\t\t\t\tSELECT distinct ha1.idAdresse as idAdresse, he1.dateCreationEvenement as dateCreationEvenement,  ha1.numero,  ha1.idRue,  ha1.idSousQuartier,  ha1.idQuartier,  ha1.idVille, ha1.idIndicatif,\n\n\t\t\t\t\t\tha1.idAdresse as idAdresse,  ha1.numero,  ha1.idQuartier,  ha1.idVille, ind.nom,\n\n\t\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\t\tha1.numero as numeroAdresse,\n\t\t\t\t\t\tha1.idRue,\n\t\t\t\t\t\tr.prefixe as prefixeRue,\n\t\t\t\t\t\tIF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,\n\t\t\t\t\t\tIF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,\n\t\t\t\t\t\tIF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,\n\t\t\t\t\t\tIF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays,\n\n\t\t\t\t\t\tha1.numero as numero,\n\t\t\t\t\t\tha1.idHistoriqueAdresse,\n\t\t\t\t\t\tha1.idIndicatif as idIndicatif\n\n\n\t\t\t\t\t\tFROM evenements he2,  evenements he1\n\t\t\t\t\t\tLEFT JOIN _evenementEvenement ee1 ON ee1.idEvenementAssocie = he1.idEvenement\n\t\t\t\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = ee1.idEvenement\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\n\t\t\t\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n\n\t\t\t\t\t\tLEFT JOIN rue r         ON r.idRue = ha1.idRue\n\t\t\t\t\t\tLEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )\n\t\t\t\t\t\tLEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )\n\t\t\t\t\t\tLEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )\n\t\t\t\t\t\tLEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )\n\n\n\t\t\t\t\t\tWHERE he2.idEvenement = he1.idEvenement\n\t\t\t\t\t\tAND he1.idUtilisateur = '" . $auth->getIdUtilisateur() . "'\n\t\t\t\t\t\t\t\tGROUP BY he1.idEvenement,  ha1.idAdresse,  ha1.idHistoriqueAdresse\n\t\t\t\t\t\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\tORDER BY he1.dateCreationEvenement DESC\n\n\t\t\t\t\t\t\t\t";
             $req = $paginationEvenements->addLimitToQuery($req);
             $res = $this->connexionBdd->requete($req);
             $monArchi .= "<b>" . _("Liste de vos derniers évènements créés :") . "</b><br>";
             $monArchi .= $arrayPaginationEvenements['html'];
             $tableauEvenements = new tableau();
             if (mysql_num_rows($res) == 0) {
                 $monArchi .= "<br>" . _("Vous n'avez pas encore ajouté d'évènement.") . "<br>";
             }
             while ($fetch = mysql_fetch_assoc($res)) {
                 $tableauEvenements->addValue($date->toFrench($fetch['dateCreationEvenement']));
                 $tableauEvenements->addValue("<a href='" . $this->creerUrl('', 'adresseDetail', array('archiIdAdresse' => $fetch['idAdresse'])) . "'>" . stripslashes($adresse->getIntituleAdresse($fetch)) . "</a>");
             }
             $monArchi .= $tableauEvenements->createHtmlTableFromArray(2, "font-size:12px;");
             // ******************************************************************************************************************************************
             // liste des adresses ajoutés par l'utilisateur
             // ******************************************************************************************************************************************
             $paginationAdresses = new paginationObject();
             $nbEnregistrementsParPage = 5;
             $req = "\n\t\t\t\t\t\tSELECT distinct ha1.idAdresse\n\t\t\t\t\t\tFROM historiqueAdresse ha2,  historiqueAdresse ha1\n\t\t\t\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n\t\t\t\t\t\tWHERE ha2.idAdresse = ha1.idAdresse\n\t\t\t\t\t\tAND ha1.idUtilisateur = '" . $auth->getIdUtilisateur() . "'\n\t\t\t\t\t\t\t\tGROUP BY ha1.idAdresse ,  ha1.idHistoriqueAdresse\n\t\t\t\t\t\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\tORDER BY ha1.date DESC\n\t\t\t\t\t\t\t\t";
             $res = $this->connexionBdd->requete($req);
             $nbEnregistrementTotaux = mysql_num_rows($res);
             $arrayPaginationAdresses = $paginationAdresses->pagination(array('nomParamPageCourante' => 'archiMonArchiAdressesPage', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
             $req = "\n\t\t\t\t\t\tSELECT distinct ha1.idAdresse as idAdresse, ha1.date as date,  ha1.numero,  ha1.idRue,  ha1.idSousQuartier,  ha1.idQuartier,  ha1.idVille, ha1.idIndicatif,\n\n\t\t\t\t\t\tha1.idAdresse as idAdresse,  ha1.numero,  ha1.idQuartier,  ha1.idVille, ind.nom,\n\n\t\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\t\tha1.numero as numeroAdresse,\n\t\t\t\t\t\tha1.idRue,\n\t\t\t\t\t\tr.prefixe as prefixeRue,\n\t\t\t\t\t\tIF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,\n\t\t\t\t\t\tIF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,\n\t\t\t\t\t\tIF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,\n\t\t\t\t\t\tIF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays,\n\n\t\t\t\t\t\tha1.numero as numero,\n\t\t\t\t\t\tha1.idHistoriqueAdresse,\n\t\t\t\t\t\tha1.idIndicatif as idIndicatif\n\n\n\t\t\t\t\t\tFROM historiqueAdresse ha2,  historiqueAdresse ha1\n\n\t\t\t\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n\n\t\t\t\t\t\tLEFT JOIN rue r         ON r.idRue = ha1.idRue\n\t\t\t\t\t\tLEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )\n\t\t\t\t\t\tLEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )\n\t\t\t\t\t\tLEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )\n\t\t\t\t\t\tLEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )\n\t\t\t\t\t\tWHERE ha2.idAdresse = ha1.idAdresse\n\t\t\t\t\t\tAND ha1.idUtilisateur = '" . $auth->getIdUtilisateur() . "'\n\t\t\t\t\t\t\t\tGROUP BY ha1.idAdresse ,  ha1.idHistoriqueAdresse\n\t\t\t\t\t\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\tORDER BY ha1.date DESC\n\t\t\t\t\t\t\t\t";
             $req = $paginationAdresses->addLimitToQuery($req);
             $res = $this->connexionBdd->requete($req);
             $monArchi .= "<br><b>" . _("Liste de vos adresses :") . " </b><br>";
             $monArchi .= $arrayPaginationAdresses['html'];
             $tableauAdresse = new tableau();
             if (mysql_num_rows($res) == 0) {
                 $monArchi .= "<br>" . _("Vous n'avez pas encore ajouté d'adresse.") . "<br>";
             }
             while ($fetch = mysql_fetch_assoc($res)) {
                 $tableauAdresse->addValue($date->toFrench($fetch['date']));
                 $tableauAdresse->addValue("<a href='" . $this->creerUrl('', 'adresseDetail', array('archiIdAdresse' => $fetch['idAdresse'])) . "'>" . stripslashes($adresse->getIntituleAdresse($fetch)) . "</a>");
             }
             $monArchi .= $tableauAdresse->createHtmlTableFromArray(2, "font-size:12px;");
             // ******************************************************************************************************************************************
             // liste des adresses ou l'utilisateur a ajouté un commentaire
             // ******************************************************************************************************************************************
             $paginationCommentaires = new paginationObject();
             $nbEnregistrementsParPage = 5;
             $req = "\n\n\t\t\t\t\t\tSELECT c.idCommentaire\n\t\t\t\t\t\tFROM commentaires c\n\t\t\t\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = c.idEvenementGroupeAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\t\t\t\t\t\tWHERE c.idUtilisateur = '" . $auth->getIdUtilisateur() . "' OR c.email='" . $utilisateur->getMailUtilisateur($auth->getIdUtilisateur()) . "'\n\t\t\t\t\t\t\t\tAND CommentaireValide=1\n\t\t\t\t\t\t\t\tGROUP BY ha1.idAdresse,  ha1.idHistoriqueAdresse\n\t\t\t\t\t\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\tORDER BY c.date DESC\n\t\t\t\t\t\t\t\t";
             $res = $this->connexionBdd->requete($req);
             $nbEnregistrementTotaux = mysql_num_rows($res);
             $arrayPaginationCommentaires = $paginationCommentaires->pagination(array('nomParamPageCourante' => 'archiMonArchiAdressesPage', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
             $req = "\n\n\t\t\t\t\t\tSELECT distinct ha1.idAdresse as idAdresse, c.date as dateCommentaire, ha1.date as date,  ha1.numero,  ha1.idRue,  ha1.idSousQuartier,  ha1.idQuartier,  ha1.idVille, ha1.idIndicatif,\n\n\t\t\t\t\t\tha1.idAdresse as idAdresse,  ha1.numero,  ha1.idQuartier,  ha1.idVille, ind.nom,\n\n\t\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\t\tha1.numero as numeroAdresse,\n\t\t\t\t\t\tha1.idRue,\n\t\t\t\t\t\tr.prefixe as prefixeRue,\n\t\t\t\t\t\tIF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,\n\t\t\t\t\t\tIF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,\n\t\t\t\t\t\tIF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,\n\t\t\t\t\t\tIF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays,\n\n\t\t\t\t\t\tha1.numero as numero,\n\t\t\t\t\t\tha1.idHistoriqueAdresse,\n\t\t\t\t\t\tha1.idIndicatif as idIndicatif\n\n\t\t\t\t\t\tFROM commentaires c\n\t\t\t\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = c.idEvenementGroupeAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\n\t\t\t\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n\n\t\t\t\t\t\tLEFT JOIN rue r         ON r.idRue = ha1.idRue\n\t\t\t\t\t\tLEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )\n\t\t\t\t\t\tLEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )\n\t\t\t\t\t\tLEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )\n\t\t\t\t\t\tLEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )\n\n\t\t\t\t\t\tWHERE c.idUtilisateur = '" . $auth->getIdUtilisateur() . "' OR c.email='" . $utilisateur->getMailUtilisateur($auth->getIdUtilisateur()) . "'\n\t\t\t\t\t\tAND CommentaireValide=1\n\t\t\t\t\t\tGROUP BY ha1.idAdresse,  ha1.idHistoriqueAdresse\n\t\t\t\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\tORDER BY c.date DESC\n\t\t\t\t\t\t\t\t";
             $req = $paginationCommentaires->addLimitToQuery($req);
             $res = $this->connexionBdd->requete($req);
             $monArchi .= "<br><b>" . _("Liste de vos derniers commentaires :") . " </b><br>";
             $monArchi .= $arrayPaginationCommentaires['html'];
             $tableauCommentaires = new tableau();
             if (mysql_num_rows($res) == 0) {
                 $monArchi .= "<br>" . _("Vous n'avez pas encore ajouté de commentaire.") . "<br>";
             }
             while ($fetch = mysql_fetch_assoc($res)) {
                 $tableauCommentaires->addValue($date->toFrench($fetch['dateCommentaire']));
                 $tableauCommentaires->addValue("<a href='" . $this->creerUrl('', 'adresseDetail', array('archiIdAdresse' => $fetch['idAdresse'])) . "'>" . stripslashes($adresse->getIntituleAdresse($fetch)) . "</a>");
             }
             $monArchi .= $tableauCommentaires->createHtmlTableFromArray(2, "font-size:12px;");
             $monArchi .= "<a href=" . $this->creerUrl('', 'mesInterets', array()) . ">Afficher mes interets </a>";
             $t->assign_vars(array('htmlMonArchi' => $monArchi));
             $t->assign_vars(array('calqueHelp' => $calque->getHtmlDivContextualHelp()));
             break;
             // **********************************************************************************************************************************
             // ACCUEIL
             // **********************************************************************************************************************************
         // **********************************************************************************************************************************
         // ACCUEIL
         // **********************************************************************************************************************************
         default:
             $params = array();
             $s = new objetSession();
             if (isset($this->variablesGet['archiIdVilleGeneral']) && $this->variablesGet['archiIdVilleGeneral'] != 0 && $this->variablesGet['archiIdVilleGeneral'] != '') {
                 $params['idVille'] = $this->variablesGet['archiIdVilleGeneral'];
                 $s->addToSession('archiIdVilleGeneral', $params['idVille']);
             } elseif ($s->isInSession('archiIdVilleGeneral') && $s->getFromSession('archiIdVilleGeneral')) {
                 $params['idVille'] = $s->getFromSession('archiIdVilleGeneral');
                 $s->addToSession('archiIdVilleGeneral', $params['idVille']);
             }
             if (isset($this->variablesGet['archiNomVilleGeneral']) && $this->variablesGet['archiNomVilleGeneral'] != '') {
                 $a = new archiAdresse();
                 $params['idVille'] = $a->getIdVilleFromNomVille($this->variablesGet['archiNomVilleGeneral']);
                 $_GET['archiIdVilleGeneral'] = $params['idVille'];
                 // on place la ville general dans la session ,  ca simplifiera pas mal de choses
                 $s->addToSession('archiIdVilleGeneral', $params['idVille']);
             }
             $news = $this->getLatestNewsInfo(1);
             //Simple templates
             $t->set_filenames(array('news' => 'accueil/news.tpl'));
             $t->set_filenames(array('derniereModfis' => 'accueil/lastmodifs.tpl'));
             $t->set_filenames(array('commentaire' => 'accueil/commentaire.tpl'));
             $t->set_filenames(array('favoris' => 'accueil/favoris.tpl'));
             $t->set_filenames(array('lastVisit' => 'accueil/lastVisit.tpl'));
             $news['titreCategory'] = 'Actualité de l\'association';
             $news['urlNewsList'] = $this->creerUrl('', 'toutesLesActualites', array());
             $t->assign_block_vars('newsAccueil', $news);
             //Gestion pour les commentaires
             $latestComments = $this->getLatestComments(2);
             $t->assign_vars(array('commentaireSectionTitle' => _("COMMENTAIRES RÉCENTS"), 'urlListCommentaire' => $this->creerUrl('', 'tousLesCommentaires')));
             foreach ($latestComments as $com) {
                 $e = new archiEvenement();
                 $commentaire = array('date' => $com['date'], 'nom' => $com['nom'], 'prenom' => $com['prenom'], 'adresse' => $com['adresse'], 'urlAdresse' => $com['urlAdresse'], 'urlPersonne' => $com['urlPersonne'], 'commentaire' => $com['commentaire']);
                 $t->assign_block_vars('commentaire', $commentaire);
             }
             $lastModifs = $this->getLatestModification(8);
             foreach ($lastModifs as $modif) {
                 if (isset($modif['idEvenement']) && $modif['idEvenement']) {
                     $idAdresse = $modif['idAdresse'];
                     $e = new archiEvenement();
                     $adresseArray = $e->getArrayAdresse($modif['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
                     // Adresse
                     $adresse = '';
                     $adresse = $e->getAddressText($adresseArray);
                     $infoImage = array();
                     // Image
                     $a = new archiAdresse();
                     $reqImageEvtRelated = "\t\t\t\t\n\t\t\t\t\t\t\tSELECT hi.idHistoriqueImage,hi.dateUpload,1 as priorite\n\t\t\t\t\t\t\tFROM historiqueImage hi\n\t\t\t\t\t\t\tLEFT JOIN _evenementImage ei on ei.idImage = hi.idImage\n\t\t\t\t\t\t\tWHERE ei.idEvenement = " . $modif['idEvenement'] . "\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tUNION\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tSELECT hi.idHistoriqueImage,hi.dateUpload,2 as priorite\n\t\t\t\t\t\t\tFROM `evenements` evt\n\t\t\t\t\t\t\tLEFT JOIN _evenementEvenement ee ON ee.idEvenementAssocie = evt.idEvenement\n\t\t\t\t\t\t\tLEFT JOIN evenements evt2 ON evt2.idEvenement = ee.idEvenement\n\t\t\t\t\t\t\tLEFT JOIN historiqueImage hi on hi.idImage = evt2.idImagePrincipale\n\t\t\t\t\t\t\tLEFT JOIN _evenementImage ei ON ei.idImage = hi.idImage\n\t\t\t\t\t\t\tWHERE ee.idEvenement IS NOT NULL\n\t\t\t\t\t\t\tAND evt.idEvenement IS NOT NULL\n\t\t\t\t\t\t\tAND evt.idEvenement != 0\n\t\t\t\t\t\t\tAND ei.idEvenement =" . $modif['idEvenement'] . "\n\t\t\t\t\t\t\tAND ee.idEvenement =" . $modif['idEvenementGroupeAdresse'] . "\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tORDER BY priorite DESC\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t";
                     $resImageEvtRelated = $this->connexionBdd->requete($reqImageEvtRelated);
                     $arrayImage = mysql_fetch_assoc($resImageEvtRelated);
                     if (isset($arrayImage) && $arrayImage != '') {
                         $infoImage = $arrayImage;
                     } else {
                         $reqImagePrincipale = "\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tSELECT hi.idHistoriqueImage,hi.dateUpload\n\t\t\t\t\t\t\tFROM historiqueImage hi\n\t\t\t\t\t\t\tLEFT JOIN evenements evt on evt.idImagePrincipale = hi.idImage\n\t\t\t\t\t\t\tWHERE evt.idEvenement =" . $modif['idEvenementGroupeAdresse'] . "\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t";
                         $resImagePrincipale = $this->connexionBdd->requete($reqImagePrincipale);
                         if (mysql_num_rows($reqImagePrincipale) >= 1) {
                             $infoImage = mysql_fetch_assoc($resImagePrincipale);
                         } else {
                             $reqOtherImage = "SELECT hi.idHistoriqueImage,hi.dateUpload\n\t\t\t\t\t\t\tFROM historiqueImage hi\n\t\t\t\t\t\t\tLEFT JOIN _evenementImage ei ON ei.idImage = hi.idImage\n\t\t\t\t\t\t\tLEFT JOIN _evenementEvenement ee on ee.idEvenementAssocie = ei.idEvenement\n\t\t\t\t\t\t\tWHERE ee.idEvenement IS NOT NULL\n\t\t\t\t\t\t\tAND ee.idEvenement =" . $modif['idEvenementGroupeAdresse'] . "\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t";
                             $resOtherImage = $this->connexionBdd->requete($reqOtherImage);
                             if (mysql_num_rows($resOtherImage) >= 1) {
                                 $infoImage = mysql_fetch_assoc($resOtherImage);
                             }
                         }
                     }
                     $urlImage = "";
                     $urlEvenement = "";
                     // Url Evenement
                     $idEvenementGroupeAdresses = $e->getIdGroupeEvenement($modif['idEvenement']);
                     if ($modif['type'] == 'adresse') {
                         $urlEvenement = $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $idAdresse, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses));
                         // $urlImage = "resizeImage.php?id=".$infoImage['idHistoriqueImage']."&height=200&width=200";
                         if (isset($infoImage['dateUpload']) && isset($infoImage['idHistoriqueImage']) && $infoImage['idHistoriqueImage'] != '' && $infoImage['dateUpload'] != '') {
                             $urlImage = "images/grand/" . $infoImage['dateUpload'] . "/" . $infoImage['idHistoriqueImage'] . ".jpg";
                         } else {
                             $urlImage = "images/placeholder.jpg";
                         }
                     } else {
                         $urlEvenement = $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $modif['idPersonne']));
                         $urlImage = ArchiPersonne::getImage($modif['idPersonne'], 'resized');
                     }
                     // Description
                     $so = new StringObject();
                     $bbcode = new bbCodeObject();
                     $description = $bbcode->stripBBCode($modif['description']);
                     $description = $so->truncateStringToWord($description, 130, ' ', '...');
                     $t->assign_block_vars('lastModif', array('miniatureLabelLeft' => $modif['typeEvenement'], 'miniatureLabelRight' => $modif['dateCreationEvenement'], 'adresse' => ucfirst($adresse), 'ville' => ucfirst($adresseArray[0]['nomVille']), 'urlMiniature' => $urlImage, 'urlEvenement' => $urlEvenement, 'description' => $description, 'titre' => $modif['titre']));
                 } else {
                 }
             }
             //Gestion des dernieres visites
             $t->assign_vars(array('lastVisitTitle' => _("Dernières visites")));
             $lastVisitArray = $_SESSION['lastVisited'];
             if (empty($lastVisitArray)) {
                 $visite = array('content' => _("Vous n'avez visité aucune adresse pour le moment"));
                 $t->assign_block_vars('lastVisitMessage', $visite);
             } else {
                 foreach ($lastVisitArray as $lastVisit) {
                     $titre = "";
                     if ($lastVisit['idAdresse'] != '' && $lastVisit['idEvenementGroupeAdresse'] != '') {
                         $idAdresse = $lastVisit['idAdresse'];
                         $e = new archiEvenement();
                         $adresseArray = $e->getArrayAdresse($lastVisit['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
                         //Adresse
                         $adresse = '';
                         $adresse = $e->getAddressText($adresseArray);
                         //Image
                         $requeteImage = "\n\t\t\t\t\t\t\t\t\tSELECT hi.idHistoriqueImage ,hi.dateUpload, e.idEvenement\n\t\t\t\t\t\t\t\t\tFROM historiqueImage hi\n\t\t\t\t\t\t\t\t\tLEFT JOIN evenements e on e.idImagePrincipale = hi.idImage\n\t\t\t\t\t\t\t\t\tWHERE e.idEvenement = " . $lastVisit['idEvenementGroupeAdresse'] . "\n\t\t\t\t\t\t\t\t\tAND e.idImagePrincipale !=0 \n\t\t\t\t\t\t\t\t\t";
                         $resultImage = $this->connexionBdd->requete($requeteImage);
                         $array_image = mysql_fetch_assoc($resultImage);
                         $a = new archiAdresse();
                         if ($array_image['idHistoriqueImage'] == 0 || !isset($array_image['idHistoriqueImage']) || $array_image['idHistoriqueImage'] == '') {
                             $infoImage = $a->getUrlImageFromAdresse($idAdresse, 'moyen');
                             $image = new archiImage();
                             $resImage = $image->getImagesEvenementsFromAdresse($idAdresse, $lastVisit);
                             $infoImage = mysql_fetch_assoc($resImage);
                         } else {
                             $infoImage = $array_image;
                         }
                         if (isset($infoImage['dateUpload']) && isset($infoImage['idHistoriqueImage']) && $infoImage['idHistoriqueImage'] != '' && $infoImage['dateUpload'] != '') {
                             $urlImage = "images/grand/" . $infoImage['dateUpload'] . "/" . $infoImage['idHistoriqueImage'] . ".jpg";
                         } else {
                             $urlImage = "images/placeholder.jpg";
                         }
                         //Url Evenement
                         $idEvenementGroupeAdresses = $lastVisit['idEvenementGroupeAdresse'];
                         $urlEvenement = $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $idAdresse, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses));
                         // Description
                         $requeteDescription = "\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tSELECT evt.description\n\t\t\t\t\t\t\t\t\tFROM evenements evt\n\t\t\t\t\t\t\t\t\tLEFT JOIN _evenementEvenement ee ON ee.idEvenementAssocie = evt.idEvenement\n\t\t\t\t\t\t\t\t\tLEFT JOIN positionsEvenements pe ON pe.idEvenementGroupeAdresse = ee.idEvenement\n\t\t\t\t\t\t\t\t\tWHERE ee.idEvenement =" . $lastVisit['idEvenementGroupeAdresse'] . "\n\t\t\t\t\t\t\t\t\tORDER BY pe.position\n\t\t\t\t\t\t\t\t\t\t\t";
                         $resDescription = $this->connexionBdd->requete($requeteDescription);
                         $arrayDescription = mysql_fetch_assoc($resDescription);
                         $so = new StringObject();
                         $description = $so->sansBalises($arrayDescription['description']);
                         $description = stripslashes($description);
                         $description = $so->truncateStringToWord($description, 80, ' ', '...');
                         if (isset($lastVisit) && !empty($lastVisit) && isset($lastVisit['idEvenementGroupeAdresse']) && !empty($lastVisit['idEvenementGroupeAdresse']) && isset($lastVisit['idAdresse']) && !empty($lastVisit['idAdresse'])) {
                             //Titre
                             $resTitre = $e->getIdEvenementTitre($lastVisit);
                             $requeteTitre = "\n\t\t\t\t\t\t\t\t\t\tSELECT evt.titre\n\t\t\t\t\t\t\t\t\t\tFROM evenements evt\n\t\t\t\t\t\t\t\t\t\tWHERE evt.idEvenement = " . $resTitre . "\n\t\t\t\t\t\t\t\t\t\t\t\t";
                             $resTitre = $this->connexionBdd->requete($requeteTitre);
                             $titreArray = mysql_fetch_array($resTitre);
                             if ($titreArray['titre'] != '') {
                                 //$titre = $adresse;
                                 $titre = $titreArray['titre'];
                             } else {
                             }
                         }
                         $visite = array('adresse' => $adresse, 'urlMiniature' => $urlImage, 'urlEvenement' => $urlEvenement, 'description' => $description, 'titre' => $titre);
                         $t->assign_block_vars('lastVisit', $visite);
                     }
                 }
             }
             $t->assign_vars(array('lastModifTitle' => _("Dernières modifications"), 'urlCustomNewsFeed' => $this->creerUrl('', 'mesInterets', array())));
             //Associate template to the general template
             $t->assign_var_from_handle('news', 'news');
             $t->assign_var_from_handle('dernieresModifs', 'derniereModfis');
             $t->assign_var_from_handle('commentaires', 'commentaire');
             $t->assign_var_from_handle('lastVisits', 'lastVisit');
             break;
     }
     ob_start();
     $t->pparse('accueil');
     $html .= ob_get_contents();
     ob_end_clean();
     return $html;
 }
 $messageHTML = "<!Doctype HTML>\n    <html>\n    <head>\n    <title>" . stripslashes($sujet) . "</title>\n    <meta charset='UTF-8' />\n    </head>\n    <body>";
 if (isset($_GET["modePrevisualisationAdmin"]) && !isset($_GET["testMail"])) {
     $messageHTML .= $messageIntro . $messageFin;
 } else {
     $messageHTML .= $messageIntro . $messageStrasbourg . $messageStrasModif . $messageAutres . $messageAutresModif . $messagePeople . $messageFin;
 }
 $messageHTML .= "</body></html>";
 if (isset($_SERVER["SERVER_NAME"]) && !isset($_GET["modePrevisualisationAdmin"]) || isset($_GET["preview"])) {
     print_r($messageHTML);
     if (isset($_GET["testMail"])) {
         include_once __DIR__ . "/../modules/archi/includes/archiAuthentification.class.php";
         include_once __DIR__ . "/../modules/archi/includes/archiUtilisateur.class.php";
         $auth = new archiAuthentification();
         $idUtilisateur = $auth->getIdUtilisateur();
         $u = new archiUtilisateur();
         $mailUtilisateur = $u->getMailUtilisateur($idUtilisateur);
         $mail->sendMail($mail->getSiteMail(), $mailUtilisateur, $sujet, $messageHTML, false);
     }
 } else {
     $reqUtilisateurs = "SELECT idUtilisateur,mail FROM utilisateur WHERE alerteMail='1' and compteActif='1'";
     $resUtilisateurs = $config->connexionBdd->requete($reqUtilisateurs);
     //         $mail->sendMail($mail->getSiteMail(),"*****@*****.**",$sujet,$messageHTML,true);
     //         $mail->sendMail($mail->getSiteMail(),"*****@*****.**",$sujet,$messageHTML,true);
     //$mail->sendMail($mail->getSiteMail(),"*****@*****.**",$sujet,$messageHTML,true);
     //$mail->sendMail($mail->getSiteMail(),"*****@*****.**",$sujet,$messageHTML,true);
     //$mail->sendMail($mail->getSiteMail(),"*****@*****.**",$sujet,$messageHTML,true);
     //$mail->sendMail($mail->getSiteMail(),"*****@*****.**",$sujet,$messageHTML,true);
     if (isset($_GET['debug']) && $_GET['debug'] == '1') {
         //          $mail->sendMail($mail->getSiteMail(),"*****@*****.**",$sujet,$messageHTML,true);
         //$mail->sendMail($mail->getSiteMail(),"*****@*****.**",$sujet,$messageHTML,true);
     } else {
 private function getUserCommentaires($userId)
 {
     $paginationCommentaires = new paginationObject();
     $utilisateur = new archiUtilisateur();
     $date = new dateObject();
     $adresse = new archiAdresse();
     $nbEnregistrementsParPage = 5;
     $req = "\n    \t\n    \t\t\t\n    \t\t\tSELECT * FROM (\n\t    \t\t\tSELECT c.idCommentaire as idCommentaire,\n\t    \t\t\t\t\tha1.idAdresse as idAdresse,\n\t    \t\t\t\t\tha1.idHistoriqueAdresse as idHistoriqueAdresse1,\n\t    \t\t\t\t\tha2.idHistoriqueAdresse as idHistoriqueAdresse2,\n\t    \t\t\t\t\tc.date as dateCom\t    \t\t\tFROM commentaires c\n\t    \t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = c.idEvenementGroupeAdresse\n\t    \t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t    \t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\t    \t\t\tWHERE c.idUtilisateur = '" . $userId . "' OR c.email='" . $utilisateur->getMailUtilisateur($userId) . "'\n\t    \t\t\tAND CommentaireValide=1\n\t    \t\t\tGROUP BY ha1.idAdresse,  ha1.idHistoriqueAdresse\n\t    \t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t    \t\t\tORDER BY c.date DESC\n\n    \t\t\t) as tmp1\n    \t\t\t\t\tUNION all\n\n\t    \t\tSELECT * FROM (\n\t    \t\t\tSELECT c.idCommentairesEvenement as idCommentaire,\n\t    \t\t\t\t\tha1.idAdresse as idAdresse,\n\t    \t\t\t\t\tha1.idHistoriqueAdresse as idHistoriqueAdresse1,\n\t    \t\t\t\t\tha2.idHistoriqueAdresse as idHistoriqueAdresse2,\n\t    \t\t\t\t\tc.date as dateCom\n\t    \t\t\t\t\n   \t\t\t\t\tFROM commentairesEvenement c\n\t\t\t\t\tLEFT JOIN _evenementEvenement ee on ee.idEvenementAssocie = c.idEvenement\n\t\t\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = ee.idEvenement\n\t    \t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t    \t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\t    \t\t\tWHERE c.idUtilisateur = '" . $userId . "' OR c.email='" . $utilisateur->getMailUtilisateur($userId) . "'\n\t    \t\t\tAND CommentaireValide=1\n\t    \t\t\tGROUP BY ha1.idAdresse,  ha1.idHistoriqueAdresse\n\t    \t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t    \t\t\tORDER BY c.date DESC\n\t\t\t\t) as tmp2\n    \t\t\t\tGROUP BY idAdresse,  idHistoriqueAdresse1\n\t    \t\t\tHAVING idHistoriqueAdresse1 = max(idHistoriqueAdresse2)\n\t    \t\t\tORDER BY dateCom DESC\n    \t\t\t\t\t\t\t";
     $res = $this->connexionBdd->requete($req);
     $nbEnregistrementTotaux = mysql_num_rows($res);
     $arrayPaginationCommentaires = $paginationCommentaires->pagination(array('nomParamPageCourante' => 'archiMonArchiAdressesPage', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
     $req = "\n\t\t    \t\t\tSELECT * FROM (\n\t\t    \t\t\t\n\t\t    \t\t\tSELECT \n\t\t    \t\t\t\n\t\t    \t\t\tdistinct ha1.idAdresse as idAdresse, \n\t\t    \t\t\tha1.date as date,  \n\t\t    \t\t\tha1.numero as numero, \n\t\t    \t\t\tha1.idRue as idRue,  \n\t\t    \t\t\tha1.idSousQuartier as idSousQuartier, \n\t\t    \t\t\tha1.idVille as idVille , \n\t\t    \t\t\tha1.idIndicatif as idIndicatif,\n\t\t    \t\t\tha1.idQuartier as idQuartier, \n\t\t\t\t\t\tha1.idPays AS idPays,\n\t\t\t\t\t\tha1.idHistoriqueAdresse as idHistoriqueAdresse1,\n\t\t\t\t\t\tha2.idHistoriqueAdresse as idHistoriqueAdresse2,\n    \t\t\t\t\tha1.numero as numeroAdresse,\n    \t\t\t\t\tind.nom as nomIndicatif,\n\t\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\t\tr.prefixe as prefixeRue,\n    \t\t\t\t\tc.date as dateCommentaire, \n    \t\t\t\t\tc.idEvenementGroupeAdresse as idEvenementGA\n    \t\n\t\t\t\t\t\tFROM commentaires c\n\t\t\t\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = c.idEvenementGroupeAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n    \t\n\t\t\t\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n    \t\n\t\t\t\t\t\tLEFT JOIN rue r         ON r.idRue = ha1.idRue\n\t\t\t\t\t\tLEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )\n\t\t\t\t\t\tLEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )\n\t\t\t\t\t\tLEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )\n\t\t\t\t\t\tLEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )\n    \t\n\t\t\t\t\t\tWHERE c.idUtilisateur = '" . $userId . "' OR c.email='" . $utilisateur->getMailUtilisateur($userId) . "'\n\t\t\t\t\t\tAND CommentaireValide=1) as tmp1\n\n\t\t\t\t\t\tUNION ALL\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM (\n\t    \t\t\t\tSELECT \n\t\t    \t\t\t\n\t\t    \t\t\tdistinct ha1.idAdresse as idAdresse, \n\t\t    \t\t\tha1.date as date,  \n\t\t    \t\t\tha1.numero as numero, \n\t\t    \t\t\tha1.idRue as idRue,  \n\t\t    \t\t\tha1.idSousQuartier as idSousQuartier, \n\t\t    \t\t\tha1.idVille as idVille , \n\t\t    \t\t\tha1.idIndicatif as idIndicatif,\n\t\t    \t\t\tha1.idQuartier as idQuartier, \n\t\t\t\t\t\tha1.idPays AS idPays,\n\t\t\t\t\t\tha1.idHistoriqueAdresse as idHistoriqueAdresse1,\n\t\t\t\t\t\tha2.idHistoriqueAdresse as idHistoriqueAdresse2,\n\t\t\t\t\t\tha1.numero as numeroAdresse,\n    \t\t\t\t\tind.nom as nomIndicatif,\n\t\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\t\tr.prefixe as prefixeRue,\n    \t\t\t\t\tc.date as dateCommentaire, \n\t\t\t\t\t\tee.idEvenement as idEvenementGA\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tFROM commentairesEvenement c\n\t\t\t\t\t\tLEFT JOIN _evenementEvenement ee on ee.idEvenementAssocie = c.idEvenement\n\t\t\t\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = ee.idEvenement\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t\t\t\t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\t\t\t\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n\t\t\t\t\t\tLEFT JOIN rue r         ON r.idRue = ha1.idRue\n\t\t\t\t\t\tLEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )\n\t\t\t\t\t\tLEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )\n\t\t\t\t\t\tLEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )\n\t\t\t\t\t\tLEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )\n\t\t\t\t\t\tWHERE c.idUtilisateur = '" . $userId . "' OR c.email='" . $utilisateur->getMailUtilisateur($userId) . "'\n\t\t\t\t\t\tAND CommentaireValide=1\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tAS tmp2\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tGROUP BY idAdresse,  idHistoriqueAdresse1, idEvenementGA\n\t\t\t\t\t\tHAVING idHistoriqueAdresse1 = max(idHistoriqueAdresse2)\n\t\t\t\t\t\tORDER BY dateCommentaire DESC\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t";
     $req = $paginationCommentaires->addLimitToQuery($req);
     $res = $this->connexionBdd->requete($req);
     $monArchi .= "<br><b>" . _("Liste de vos derniers commentaires :") . " </b><br>";
     $monArchi .= $arrayPaginationCommentaires['html'];
     $tableauCommentaires = new tableau();
     if (mysql_num_rows($res) == 0) {
         $monArchi .= "<br>" . _("Vous n'avez pas encore ajouté de commentaire.") . "<br>";
     }
     while ($fetch = mysql_fetch_assoc($res)) {
         $tableauCommentaires->addValue($date->toFrench($fetch['dateCommentaire']));
         $tableauCommentaires->addValue("<a href='" . $this->creerUrl('', 'adresseDetail', array('archiIdAdresse' => $fetch['idAdresse'])) . "'>" . stripslashes($adresse->getIntituleAdresse($fetch)) . "</a>");
     }
     $monArchi .= $tableauCommentaires->createHtmlTableFromArray(2, "font-size:12px;");
     return $monArchi;
 }
 /**
  * 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 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);
 }