public function afficherDetail($idAdresse = 0, $idEvenementGroupeAdresse = 0)
 {
     // attention s'il y a plusieurs evenement distinct (pas associes entre eux) reliés a l'adresse on les affichera a la suite
     if (isset($_GET["archiIdAdresse"])) {
         $address = $this->getArrayAdresseFromIdAdresse($_GET["archiIdAdresse"]);
     }
     $reqTitre = "\n\t\t\t\tSELECT he1.titre as titre\n\t\t\t\tFROM _adresseEvenement ae\n\t\t\t\tLEFT JOIN _evenementEvenement ee ON ee.idEvenement = ae.idEvenement\n\t\t\t\tLEFT JOIN evenements he1 ON he1.idEvenement = ee.idEvenementAssocie\n\t\t\t\tLEFT JOIN evenements he2 ON he2.idEvenement = he1.idEvenement\n\t\t\t\tWHERE he1.titre!=''\n\t\t\t\tAND ae.idAdresse = '" . $idAdresse . "'\n\t\t\t\tAND he1.idTypeEvenement <>'6'\n\t\t\t\tGROUP BY he1.idEvenement\n\t\t\t\tORDER BY he1.dateDebut,he1.idEvenement\n\t\t\t\tLIMIT 1\n\n\t\t\t\t";
     $resTitre = $this->connexionBdd->requete($reqTitre);
     if (mysql_num_rows($resTitre) == 1) {
         $fetchTitre = mysql_fetch_assoc($resTitre);
         $titre = stripslashes($fetchTitre['titre']);
         if (trim($fetchTitre['titre']) == '') {
             $noTitreDetected = true;
             $titre = '';
         }
     }
     //    }
     $html = "<div class='social_widgets'><div class='fb-like right' data-send='false' data-layout='button_count' data-show-faces='true' data-action='recommend'></div>\n        <a href='https://twitter.com/share' class='twitter-share-button right' data-via='ArchiStrasbourg' data-lang='fr' data-related='ArchiStrasbourg'>Tweeter</a>\n        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src='//platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','twitter-wjs');</script></div>";
     $html .= "<h2>";
     $e = new archiEvenement();
     $archiIdEvenementGroupeAdresse = isset($_GET['archiIdEvenementGroupeAdresse']) ? $_GET['archiIdEvenementGroupeAdresse'] : $e->getIdEvenementGroupeAdresseFromIdEvenement($_GET["archiIdEvenement"]);
     $titre = $intituleAdresse = $this->getIntituleAdresseFrom($archiIdEvenementGroupeAdresse, "idEvenementGroupeAdresse", array("afficheTitreSiTitreSinonRien" => true, "noHTML" => true));
     if (isset($titre) && !empty($titre)) {
         if (isset($_GET['archiAffichage']) && $_GET['archiAffichage'] == 'adresseDetail') {
             $html .= "<span itemprop='name'>";
         }
         $html .= $titre;
         if (isset($_GET['archiAffichage']) && $_GET['archiAffichage'] == 'adresseDetail') {
             $html .= "</span>";
         }
         if (!empty($address["nomRue"])) {
             $html .= "&nbsp;-&nbsp;";
         }
     }
     if (isset($address)) {
         if (isset($_GET['archiAffichage']) && $_GET['archiAffichage'] == 'adresseDetail') {
             $html .= "<span itemprop='address' itemscope itemtype='http://schema.org/PostalAddress'><span itemprop='streetAddress'>";
         }
         if ($address["numero"] . " " != 0) {
             $html .= $address["numero"];
             if (isset($address['nomIndicatif'])) {
                 $html .= $address["nomIndicatif"];
             }
             $html .= ' ';
         }
         $html .= $address["prefixeRue"] . " " . $address["nomRue"];
         if (isset($_GET['archiAffichage']) && $_GET['archiAffichage'] == 'adresseDetail') {
             $html .= "</span>\n\t\t\t\t\t\t<meta itemprop='addressLocality' content='" . $address["nomVille"] . "'/>\n\t\t\t\t\t\t<meta itemprop='addressCountry' content='" . $address["nomPays"] . "'/>\n\t\t\t\t\t\t</span>";
         }
     }
     $html .= "</h2>";
     $evenement = new archiEvenement();
     // si le groupe d'adresse est precisé dans l'url , on ne va afficher que celui ci
     if (isset($this->variablesGet['archiIdEvenementGroupeAdresse']) && $this->variablesGet['archiIdEvenementGroupeAdresse'] != '') {
         if (isset($this->variablesGet['modeAffichage'])) {
             $modeAffichage = $this->variablesGet['modeAffichage'];
         } else {
             $modeAffichage = '';
         }
         $retourEvenement = $evenement->afficher($this->variablesGet['archiIdEvenementGroupeAdresse'], '', null, array());
         // cette fonction va afficher les evenements liés au groupe d'adresse
         $html .= $retourEvenement['html'];
         if (!archiPersonne::isPerson($this->variablesGet['archiIdEvenementGroupeAdresse']) && $this->variablesGet['archiIdEvenementGroupeAdresse'] != 0) {
             $html .= $evenement->getFormComment($this->variablesGet['archiIdEvenementGroupeAdresse'], $this->getCommentairesFields(), '');
             $html .= $this->getListeCommentaires($this->variablesGet['archiIdEvenementGroupeAdresse']);
         }
     } elseif ($idEvenementGroupeAdresse != '' && $idEvenementGroupeAdresse != '0') {
         $retourEvenement = $evenement->afficher($idEvenementGroupeAdresse, '', null, array());
         $html .= $retourEvenement['html'];
         if (!ArchiPersonne::isPerson($idEvenementGroupeAdresse)) {
             $html .= $evenement->getFormComment($this->variablesGet['archiIdEvenementGroupeAdresse'], $this->getCommentairesFields(), '');
             $html .= $this->getListeCommentaires($idEvenementGroupeAdresse);
         }
     } else {
         $resEvenements = $this->getIdEvenementsFromAdresse($idAdresse);
         //c'est l'evenement groupe d'adresse qui est relié a l'idAdresse donc on recupere un idEvenementGroupeAdresse en fait
         if (mysql_num_rows($resEvenements) == 1) {
             // un seul evenement groupe d'adresse correspond a l'adresse cliquée
             $fetchEvenements = mysql_fetch_assoc($resEvenements);
             $retourEvenement = $evenement->afficher($fetchEvenements['idEvenement'], '', null, array());
             // cette fonction va afficher les evenements liés au groupe d'adresse
             $html .= $retourEvenement['html'];
             if (!ArchiPersonne::isPerson($fetchEvenements['idEvenement'])) {
                 $html .= $evenement->getFormComment($fetchEvenements['idEvenement'], $this->getCommentairesFields(), '');
                 $html .= $this->getListeCommentaires($fetchEvenements['idEvenement']);
             }
         } else {
             // il y a plusieurs evenements groupes d'adresses qui correspondent a la meme adresse
             // on n'affiche que les evenements qui concernent la recherche
             // archiIdEvenementGroupeAdresse , correspond au groupe d'adresse de l'adresse resultat de la recherche
             if (isset($this->variablesGet['recherche_motcle'])) {
                 // on refait une recherche sur les evenements concernés par l'adresse correspondant a plusieurs evenements groupe adresse
                 $req = "\n\t\t\t\t\t\t\tSELECT ee.idEvenement as idEvenementGroupeAdresse, he1.idEvenement as idEvenement\n\t\t\t\t\t\t\tFROM evenements he2, evenements he1\n\t\t\t\t\t\t\tRIGHT JOIN _adresseEvenement ae ON ae.idAdresse = '" . $idAdresse . "'\n\t\t\t\t\t\t\tRIGHT JOIN _evenementEvenement ee ON ee.idEvenement = ae.idEvenement\n\t\t\t\t\t\t\tWHERE he2.idEvenement = he1.idEvenement\n\t\t\t\t\t\t\tAND he1.idEvenement = ee.idEvenementAssocie\n\t\t\t\t\t\t\tAND CONCAT_WS('',lower(he1.titre),lower(he1.description)) like \"%" . strtolower($this->variablesGet['recherche_motcle']) . "%\"\n\t\t\t\t\t\t\tGROUP BY he1.idEvenement\n\t\t\t\t\t\t\t";
                 $res = $this->connexionBdd->requete($req);
                 while ($fetch = mysql_fetch_assoc($res)) {
                     $retourEvenement = $evenement->afficher($fetch['idEvenementGroupeAdresse'], '', null, array(), array());
                     // cette fonction va afficher les evenements liés au groupe d'adresse
                     //'rechercheAdresseCalqueObject'=>$c
                     $html .= $retourEvenement['html'];
                 }
             } else {
                 $nbGroupesAdressesAffiches = 0;
                 while ($fetchEvenements = mysql_fetch_assoc($resEvenements)) {
                     $retourEvenement = $evenement->afficher($fetchEvenements['idEvenement'], '', null, array());
                     // cette fonction va afficher les evenements liés au groupe d'adresse
                     $html .= $retourEvenement['html'];
                     $nbGroupesAdressesAffiches += count($retourEvenement['listeGroupeAdressesAffichees']);
                     if (isset($retourEvenement['listeGroupeAdressesAffichees'][0])) {
                         $groupeAdresse = $retourEvenement['listeGroupeAdressesAffichees'][0];
                     }
                 }
                 if ($nbGroupesAdressesAffiches == 1) {
                     if (!ArchiPersonne::isPerson($groupeAdresse)) {
                         debug($groupeAdresse);
                         $html .= $evenement->getFormComment($groupeAdresse, $this->getCommentairesFields(), '');
                         $html .= $this->getListeCommentaires($groupeAdresse);
                     }
                 }
             }
         }
     }
     // popup pour la description de la source
     $s = new archiSource();
     $html .= $s->getPopupDescriptionSource();
     return $html;
 }
 public function getLatestModification($nbElts)
 {
     $interest = new archiInterest();
     $auth = new ArchiAuthentification();
     $whereSimple = "WHERE ae.idAdresse IS NOT NULL ";
     $whereSimpleArray = array();
     if ($auth->estConnecte()) {
         $arrayInterest = $interest->getFavorisByCategories();
         if (!empty($arrayInterest)) {
             if (isset($arrayInterest['rue'])) {
                 $fieldRue = implode(',', $arrayInterest['rue']);
                 $subClause[] = "ha.idRue in ({$fieldRue})";
                 foreach ($arrayInterest['rue'] as $idRue) {
                     $whereSimpleArray[] = "ha.idRue = " . $idRue . " ";
                 }
             }
             if (isset($arrayInterest['sousQuartier'])) {
                 $fieldSousQuartier = implode(',', $arrayInterest['sousQuartier']);
                 $subClause[] = "ha.idSousQuartier in ({$fieldSousQuartier})";
                 foreach ($arrayInterest['sousQuartier'] as $idSousQuartier) {
                     $whereSimpleArray[] = " ha.idSousQuartier = " . $idSousQuartier . " ";
                 }
             }
             if (isset($arrayInterest['quartier'])) {
                 $fieldQuartier = implode(',', $arrayInterest['quartier']);
                 $subClause[] = "ha.idQuartier in ({$fieldQuartier})";
                 foreach ($arrayInterest['quartier'] as $idQuartier) {
                     $whereSimpleArray[] = " ha.idQuartier = " . $idQuartier . " ";
                 }
             }
             if (isset($arrayInterest['ville'])) {
                 $fieldVille = implode(',', $arrayInterest['ville']);
                 $subClause[] = "ha.idVille in ({$fieldVille})";
                 foreach ($arrayInterest['ville'] as $idVille) {
                     $whereSimpleArray[] = " ha.idVille = " . $idVille . " ";
                 }
             }
             if (isset($arrayInterest['pays'])) {
                 $fieldPays = implode(',', $arrayInterest['pays']);
                 $subClause[] = "ha.idPays in ({$fieldPays})";
                 foreach ($arrayInterest['pays'] as $idPays) {
                     $whereSimpleArray[] = " ha.idPays = " . $idPays . " ";
                 }
             }
             if (!empty($subClause)) {
                 $whereClause .= " AND (" . implode(' OR ', $subClause) . ")";
             }
             if (!empty($whereSimpleArray)) {
                 $whereSimple .= " AND (" . implode(' OR ', $whereSimpleArray) . ")";
             }
             $leftjoinCondition = "AND " . implode(' AND ', $whereSimpleArray);
         }
     }
     $requeteElements = "select * from (\n   \t\t\t\t\t SELECT\n\t\t\t\t\t ee.idEvenement as idEvenementGroupeAdresse,\n\t\t\t\t\tevt.idEvenement AS idEvenement,\n\t\t\t\t\tae.idAdresse,\n\t\t\t\t\tnull as idPersonne,\n\t\t\t\t\tevt.idEvenementRecuperationTitre ,\n\t\t\t\t\tevt.idImagePrincipale AS idHistoriqueImage,\n\t\t\t\t\tte.nom as typeEvenement,\n\t\t\t\t\tdate_format(evt.dateCreationEvenement," . _('"%e/%m/%Y"') . ") as dateCreationEvenement,\n\t\t\t\t\tDATE_FORMAT(evt.dateCreationEvenement, '%Y%m%d%H%i%s') as DateTri,\n\t\t\t\t\tevt.description,\n\t\t\t\t\t'adresse' as type\n\t\t\n\t\t\t\t\tFROM evenements evt\n\t\t\t\t\tLEFT JOIN _evenementEvenement ee on ee.idEvenementAssocie = evt.idEvenement\n\t\t\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idEvenement = ee.idEvenement\n\t\t\t\t\tLEFT JOIN historiqueAdresse ha on ha.idAdresse = ae.idAdresse\n\t\t\t\t\tLEFT JOIN typeEvenement te ON te.idTypeEvenement = evt.idTypeEvenement\n\t\t\n\t\t\t\t\tWHERE ae.idAdresse IS NOT NULL\n\t\t \t\t\t" . $whereClause . "\n\t\t\n\t\t\t\t    UNION\n\t\t\t\t    SELECT\n\t\t\t\t    ee.idEvenement as idEvenementGroupeAdresse,\n\t\t\t\t    evt.idEvenement AS idEvenement,\n\t\t\t\t\tNULL as idAdresse,\n\t\t\t\t\tp.idPersonne,\n\t\t\t\t    evt.idEvenementRecuperationTitre ,\n\t\t\t\t    evt.idImagePrincipale AS idHistoriqueImage,\n\t\t\t\t    'Personne' as typeEvenement,\n\t\t\t\t\tdate_format(evt.dateCreationEvenement," . _('"%e/%m/%Y"') . ") as dateCreationEvenement,\n\t\t\t\t\tDATE_FORMAT(evt.dateCreationEvenement, '%Y%m%d%H%i%s') as DateTri,\n\t\t\t\t    evt.description,\n\t\t\t\t    'personne' as type\n\t\t\n\t\t\t\t    FROM evenements evt\n\t\t\t\t    LEFT JOIN _evenementEvenement ee on ee.idEvenementAssocie = evt.idEvenement\n\t\t\t\t    LEFT JOIN _personneEvenement pe ON pe.idEvenement = ee.idEvenement\n\t\t\t\t    LEFT JOIN personne p on p.idPersonne = pe.idPersonne\n\t\t\t\t\tLEFT JOIN _evenementPersonne ep on ep.idPersonne = p.idPersonne\n\t\t\t\t\tLEFT JOIN _evenementEvenement ee2 on ee2.idEvenementAssocie = ep.idEvenement\n\t\t\t\t\tLEFT JOIN _adresseEvenement ae on ae.idEvenement = ee2.idEvenement\n\t\t\t\t\tLEFT JOIN historiqueAdresse ha on ha.idAdresse = ae.idAdresse\n\t\t\n\t\t\t\t    WHERE p.idPersonne IS NOT NULL\n\t\t\t\t\t" . $whereClause . "\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\n\t\t\t\t) as tmp\n\t\t\n\t\t\t\tWHERE tmp.DateTri = (\n\t\t\t\t    SELECT max(DATE_FORMAT(evt2.dateCreationEvenement, '%Y%m%d%H%i%s'))\n\t\t\t\t    FROM evenements evt2\n\t\t\t\t    LEFT JOIN _evenementEvenement ee2 on ee2.idEvenementAssocie = evt2.idEvenement\n\t\t\t\t    WHERE ee2.idEvenement = tmp.idEvenementGroupeAdresse\n\t\t\t\t)\n\t\t\t\tGROUP BY tmp.idEvenement\n\t\t\t\tORDER BY tmp.DateTri DESC\n\t\t\t\tLIMIT 8\n\t\t\n\t\t\t\t";
     $resultIdAdresse = $this->connexionBdd->requete($requeteElements);
     $arrayIdEvenement = array();
     $arrayEvenement = array();
     while ($lastModif = mysql_fetch_assoc($resultIdAdresse)) {
         $tmp = $lastModif;
         if ($lastModif['type'] == 'adresse') {
             $requeteTitre = "SELECT e1.titre , e2.idImagePrincipale\n\t\t\t\t\t\tFROM evenements e1,evenements e2\n\t\t\t\t\t\tWHERE e2.idEvenement = " . $lastModif['idEvenementGroupeAdresse'] . "\n\t\t\t\t\t\tAND e1.idEvenement = e2.idEvenementRecuperationTitre\n\t\t\t\t\t\t\t\t";
             $restitre = $this->connexionBdd->requete($requeteTitre);
             $titreArray = mysql_fetch_assoc($restitre);
             $evenement = new archiEvenement();
             $idTitre = $evenement->getIdEvenementTitre($lastModif);
             $requeteTitreLegacy = "SELECT titre from evenements where idEvenement = {$idTitre}";
             $resTitreLegacy = $this->connexionBdd->requete($requeteTitreLegacy);
             $titreArray = mysql_fetch_assoc($resTitreLegacy);
             $tmp['titre'] = $titreArray['titre'];
             $idImagePrincipale = $titreArray['idImagePrincipale'];
             if (isset($idImagePrincipale) && !empty($idImagePrincipale)) {
                 $requeteIdHistoImage = "\n\t\t\t\t\t\t\tSELECT idHistoriqueImage\n\t\t\t\t\t\t\tFROM historiqueImage hi \n\t\t\t\t\t\t\tWHERE idImage = {$idImagePrincipale}\n\t\t\t\t\t\t\tORDER BY idHistoriqueImage DESC\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t";
                 $resIdImg = $this->connexionBdd->requete($requeteIdHistoImage);
                 $arrayIdHistoImg = mysql_fetch_assoc($resIdImg);
                 $tmp['idHistoriqueImage'] = $arrayIdHistoImg['idHistoriqueImage'];
             }
         } else {
             $p = new ArchiPersonne($tmp['idPersonne']);
             $tmp['titre'] = $p->getPersonneLibelle($tmp['idPersonne']);
         }
         $arrayLastModif[] = $tmp;
     }
     return $arrayLastModif;
 }
    /**
     * Execute command
     *
     * @param InputInterface  $input  Input
     * @param OutputInterface $output Output
     *
     * @return void
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        parent::setup($input, $output);
        global $config;
        $config = new \Config();
        $id = $input->getArgument('id');
        @($person = new \ArchiPersonne($id));
        if (!isset($person->nom)) {
            $this->output->writeln('<error>Personne introuvable</error>');
            return;
        }
        $pageName = 'Personne:' . $person->prenom . ' ' . $person->nom;
        $this->output->writeln('<info>Exporting "' . $pageName . '"…</info>');
        $this->loginAsAdmin();
        $this->deletePage($pageName);
        $this->login('aw2mw bot');
        $events = $person->getEvents($id);
        $content = '';
        $sections = array();
        $sections[0] = $content;
        //Create page structure
        foreach ($events as $event) {
            $sql = 'SELECT  hE.idEvenement,
                    hE.titre, hE.idSource,
                    hE.idTypeStructure,
                    hE.idTypeEvenement,
                    hE.description,
                    hE.dateDebut,
                    hE.dateFin,
                    hE.dateDebut,
                    hE.dateFin,
                    tE.nom AS nomTypeEvenement,
                    tS.nom AS nomTypeStructure,
                    s.nom AS nomSource,
                    u.nom AS nomUtilisateur,
                    u.prenom as prenomUtilisateur,
                    tE.groupe,
                    hE.ISMH,
                    hE.MH,
                    date_format(hE.dateCreationEvenement,"' . _("%e/%m/%Y à %kh%i") . '") as dateCreationEvenement,
                    hE.isDateDebutEnviron as isDateDebutEnviron,
                    u.idUtilisateur as idUtilisateur,
                    hE.numeroArchive as numeroArchive

                    FROM historiqueEvenement hE
                    LEFT JOIN source s      ON s.idSource = hE.idSource
                    LEFT JOIN typeStructure tS  ON tS.idTypeStructure = hE.idTypeStructure
                    LEFT JOIN typeEvenement tE  ON tE.idTypeEvenement = hE.idTypeEvenement
                    LEFT JOIN utilisateur u     ON u.idUtilisateur = hE.idUtilisateur
                    WHERE hE.idEvenement = ' . mysql_real_escape_string($event["idEvenementAssocie"]) . '
            ORDER BY hE.idHistoriqueEvenement DESC';
            $res = $this->e->connexionBdd->requete($sql);
            $event = mysql_fetch_assoc($res);
            if (!empty($event['titre'])) {
                $title = $event['titre'];
            } elseif ($event['dateDebut'] != '0000-00-00') {
                $title = substr($event['dateDebut'], 0, 4);
            } else {
                $title = 'Biographie';
            }
            $title = stripslashes($title);
            $content .= '==' . $title . '==' . PHP_EOL;
        }
        $relatedPeople = $person->getRelatedPeople($id);
        if (!empty($relatedPeople)) {
            $relatedPeopleContent = '==Personnes liées==' . PHP_EOL;
        }
        foreach ($relatedPeople as $relatedId) {
            $relatedPerson = new \ArchiPersonne($relatedId);
            $relatedPeopleContent .= '* [[Personne:' . $relatedPerson->prenom . ' ' . $relatedPerson->nom . '|' . $relatedPerson->prenom . ' ' . $relatedPerson->nom . ']]' . PHP_EOL;
        }
        $content .= $relatedPeopleContent;
        $references = PHP_EOL . '==Références==' . PHP_EOL . '<references />' . PHP_EOL;
        $content .= $references;
        $this->savePage($pageName, $content, 'Sections importées depuis Archi-Wiki');
        foreach ($events as $section => $event) {
            $req = "SELECT idHistoriqueEvenement\n                    FROM historiqueEvenement\n                    WHERE idEvenement=" . mysql_real_escape_string($event["idEvenementAssocie"]) . "\n                    order by dateCreationEvenement ASC";
            $res = $this->e->connexionBdd->requete($req);
            while ($fetch = mysql_fetch_assoc($res)) {
                $sql = 'SELECT  hE.idEvenement,
                        hE.titre, hE.idSource,
                        hE.idTypeStructure,
                        hE.idTypeEvenement,
                        hE.description,
                        hE.dateDebut,
                        hE.dateFin,
                        hE.dateDebut,
                        hE.dateFin,
                        tE.nom AS nomTypeEvenement,
                        tS.nom AS nomTypeStructure,
                        s.nom AS nomSource,
                        u.nom AS nomUtilisateur,
                        u.prenom as prenomUtilisateur,
                        tE.groupe,
                        hE.ISMH ,
                        hE.MH,
                        date_format(hE.dateCreationEvenement,"' . _("%e/%m/%Y à %kh%i") . '") as dateCreationEvenement,
                        hE.isDateDebutEnviron as isDateDebutEnviron,
                        u.idUtilisateur as idUtilisateur,
                        hE.numeroArchive as numeroArchive

                        FROM historiqueEvenement hE
                        LEFT JOIN source s      ON s.idSource = hE.idSource
                        LEFT JOIN typeStructure tS  ON tS.idTypeStructure = hE.idTypeStructure
                        LEFT JOIN typeEvenement tE  ON tE.idTypeEvenement = hE.idTypeEvenement
                        LEFT JOIN utilisateur u     ON u.idUtilisateur = hE.idUtilisateur
                        WHERE hE.idHistoriqueEvenement = ' . mysql_real_escape_string($fetch['idHistoriqueEvenement']) . '
                ORDER BY hE.idHistoriqueEvenement DESC';
                $eventInfo = mysql_fetch_assoc($this->e->connexionBdd->requete($sql));
                $user = $this->u->getArrayInfosFromUtilisateur($eventInfo['idUtilisateur']);
                //Login as user
                if (!empty($user['nom'])) {
                    $this->login($user['prenom'] . ' ' . $user['nom']);
                } else {
                    $this->login('aw2mw bot');
                }
                $content = '';
                $date = $this->convertDate($eventInfo['dateDebut'], $eventInfo['dateFin'], $eventInfo['isDateDebutEnviron']);
                if (!empty($eventInfo['titre'])) {
                    $title = $eventInfo['titre'];
                } elseif (!empty($eventInfo['nomTypeEvenement'])) {
                    $title = $eventInfo['nomTypeEvenement'];
                } else {
                    $title = 'Biographie';
                }
                if ($eventInfo['idSource'] > 0) {
                    $sourceName = $this->s->getSourceLibelle($event['idSource']);
                    $title .= '<ref>[[Source:' . $sourceName . '|' . $sourceName . ']]</ref>';
                }
                if (!empty($eventInfo['numeroArchive'])) {
                    $sourceName = $this->s->getSourceLibelle(24);
                    $title .= '<ref>[[Source:' . $sourceName . '|' . $sourceName . ']] - Cote ' . $event['numeroArchive'] . '</ref>';
                }
                $title = ucfirst(stripslashes($title));
                $content .= '==' . $title . '==' . PHP_EOL;
                $html = $this->convertHtml($this->bbCode->convertToDisplay(array('text' => $eventInfo['description'])));
                $content .= trim($html) . PHP_EOL . PHP_EOL;
                $this->api->postRequest(new Api\SimpleRequest('edit', array('title' => $pageName, 'md5' => md5($content), 'text' => $content, 'section' => $section + 1, 'bot' => true, 'summary' => 'Révision du ' . $eventInfo['dateCreationEvenement'] . ' importée depuis Archi-Wiki', 'token' => $this->api->getToken())));
                $sections[$section + 1] = $content;
            }
            $linkedEvents = $person->getEvenementsLies($id, $eventInfo['dateDebut'], 3000);
            if (!empty($linkedEvents)) {
                $html = '=== Adresses liées ===' . PHP_EOL;
            }
            foreach ($linkedEvents as $linkedEvent) {
                $req = "\n                    SELECT titre, dateDebut, dateFin, idTypeEvenement\n                    FROM historiqueEvenement\n                    WHERE idEvenement = '" . $linkedEvent . "'\n                    ORDER BY idHistoriqueEvenement DESC\n                ";
                $resEvent = $config->connexionBdd->requete($req);
                $linkedEventInfo = mysql_fetch_object($resEvent);
                $linkedEventAddress = $this->a->getIntituleAdresseFrom($linkedEvent, "idEvenement", array('noHTML' => true, 'noQuartier' => true, 'noSousQuartier' => true, 'noVille' => true, 'displayFirstTitreAdresse' => true, 'setSeparatorAfterTitle' => '_'));
                if (!empty($linkedEventAddress)) {
                    $req = "\n                            SELECT  idAdresse\n                            FROM _adresseEvenement\n                            WHERE idEvenement = " . $this->e->getIdEvenementGroupeAdresseFromIdEvenement($linkedEvent);
                    $resAddress = $config->connexionBdd->requete($req);
                    $fetchAddress = mysql_fetch_object($resAddress);
                    if (isset($fetchAddress->idAdresse)) {
                        $linkedEventIdAddress = $fetchAddress->idAdresse;
                        $address = $this->a->getArrayAdresseFromIdAdresse($input->getArgument('id'));
                        $city = $address['nomVille'];
                    }
                }
                $linkedEventImg = $this->a->getUrlImageFromEvenement($linkedEvent, "mini");
                if ($linkedEventImg["url"] == $config->getUrlImage("", "transparent.gif")) {
                    $linkedEventImg = $this->a->getUrlImageFromAdresse($linkedEventIdAddress, "mini");
                }
                $linkedEventUrl = $config->creerUrl("", "adresseDetail", array("archiIdAdresse" => $linkedEventIdAddress, "archiIdEvenementGroupeAdresse" => $linkedEvent));
                $html .= '{{Adresse liée
                    |adresse=' . $this->getAddressName($linkedEventIdAddress) . PHP_EOL;
                $reqImage = 'SELECT idImage FROM historiqueImage
                    WHERE idHistoriqueImage = ' . mysql_real_escape_string($linkedEventImg['idHistoriqueImage']) . '
                    ORDER BY idHistoriqueImage DESC LIMIT 1';
                $resImage = $config->connexionBdd->requete($reqImage);
                $imageInfo = mysql_fetch_object($resImage);
                if (isset($imageInfo->idImage)) {
                    $command = $this->getApplication()->find('export:image');
                    $command->run(new ArrayInput(array('id' => $imageInfo->idImage)), $this->output);
                    $filename = $this->getImageName($imageInfo->idImage);
                    $html .= '|photo=' . $filename . PHP_EOL;
                }
                if ($linkedEventInfo->dateDebut != "0000-00-00") {
                    if ($linkedEventInfo->dateFin != "0000-00-00") {
                        $linkedDate = $linkedEventInfo->dateFin;
                    } else {
                        $linkedDate = $linkedEventInfo->dateDebut;
                    }
                    $html .= '|date=' . $config->date->toFrench($linkedDate) . PHP_EOL;
                }
                $html .= '}}' . PHP_EOL;
            }
            $this->api->postRequest(new Api\SimpleRequest('edit', array('title' => $pageName, 'md5' => md5($html), 'text' => $html, 'section' => $section + 1, 'bot' => true, 'summary' => 'Importation des adresses liées depuis Archi-Wiki', 'token' => $this->api->getToken())));
            $sections[$section + 1] .= $html;
        }
        $sections[] = $relatedPeopleContent;
        $sections[] = $references;
        //Login with bot
        $this->login('aw2mw bot');
        $content = implode('', $sections);
        //Replace <u/> with ===
        $content = $this->replaceSubtitles($content);
        $this->savePage($pageName, $content, 'Conversion des titres de section');
    }
    public function afficher($idEvenement = null, $modeAffichage = '', $idHistoriqueEvenement = null, $paramChampCache = array(), $params = array())
    {
        $authentification = new ArchiAuthentification();
        $estConnecte = $authentification->estConnecte();
        $estAdmin = $authentification->estAdmin();
        $estModerateur = $authentification->estModerateur();
        $userId = $authentification->getIdUtilisateur();
        $html = '';
        $erreurObject = new objetErreur();
        $t = new Template('modules/archi/templates/');
        $t->set_filenames(array('ev' => 'evenement.tpl'));
        $isMH = false;
        $isISMH = false;
        $isAffichageSingleEvenement = false;
        $listeGroupeAdressesAffichees = array();
        // liste des groupes d'adresses reellement affichés , donc dans cette liste ne figure pas les groupe d'adresses ou il n'y a pas d'evenements liés
        $u = new archiUtilisateur();
        // on renvoi le nom de type de structure ( ceci sert a voir si on affiche aussi le type de structure sur l'evenement suivant du groupe d'adresse (pour eviter les redondances) )
        $retourIdTypeStructure = "";
        // on renvoi le titre de l'evenement pour l'affichage des ancres
        $retourTitreAncre = "";
        $retourNomTypeEvenement = "";
        $retourDate = "";
        $retourDateFin = "";
        $nomTable = "evenements";
        $adresse = new archiAdresse();
        $imageObject = new imageObject();
        // objet image du framework
        $idAdresseCourante = 0;
        if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse'] != '') {
            $idAdresseCourante = $this->variablesGet['archiIdAdresse'];
        }
        $t->assign_vars(array("divDisplayMenuAction" => "none"));
        if (!isset($idEvenement) || $idEvenement == null || $idEvenement == '') {
            if (isset($this->variablesGet['archiIdEvenement']) && $this->variablesGet['archiIdEvenement'] != '') {
                if ($modeAffichage != 'consultationHistoriqueEvenement') {
                    $idEvenement = $this->variablesGet['archiIdEvenement'];
                }
            }
        }
        // fabrication de la requete en fonction des parametres
        $sqlEvenementsAdressesLiees = "";
        if (empty($idEvenement)) {
            if ($modeAffichage == 'consultationHistoriqueEvenement') {
                // on affiche les idHistoriqueEvenement de l'evenement choisi
                $isAffichageSingleEvenement = true;
                $sqlWhere = 'hE.idHistoriqueEvenement=' . $idHistoriqueEvenement;
                $nomTable = "historiqueEvenement";
            }
            if (isset($this->variablesGet['modeAffichage']) && $this->variablesGet['modeAffichage'] == 'comparaisonEvenement') {
                // debug pour eviter un message d'erreur si l'evenement n'existe pas dans l'affichage de la comparaison d'evenement ancien/nouveau
            }
        } else {
            if ($modeAffichage == 'simple') {
                // l'idEvenement en parametre correspond a l'evenement enfant a afficher
                $sqlWhere = 'hE.idEvenement=' . $idEvenement;
            } else {
                // l'idEvenement en parametres correspond a un evenement enfant on va donc chercher l'evenement parent qui correspond au groupe d'adresses
                $sqlWhere = '(hE.idEvenement=
						IF (
						(SELECT _eE.idEvenement FROM _evenementEvenement _eE
						LEFT JOIN evenements USING (idEvenement)
						LEFT JOIN typeEvenement tE USING (idTypeEvenement) WHERE idEvenementAssocie=' . $idEvenement . ' LIMIT 1),
						(SELECT _eE.idEvenement FROM _evenementEvenement _eE
						LEFT JOIN evenements USING (idEvenement)
						LEFT JOIN typeEvenement tE USING (idTypeEvenement) WHERE idEvenementAssocie=' . $idEvenement . ' LIMIT 1),
						' . $idEvenement . ')) ';
                // si on est en mode de deplacement d'image
                // ou de selection de titre
                // on rajoute le formulaire sur la page
                if ($estConnecte && (isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1' || isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1')) {
                    $html .= "<form action='' name='formulaireEvenement' method='POST' enctype='multipart/form-data' id='formulaireEvenement'>\n\t\t\t\t\t\t\t<input type='hidden' name='actionFormulaireEvenement' id='actionFormulaireEvenement' value=''>";
                }
            }
        }
        if (isset($sqlWhere)) {
            /*
             **  REQUÊTE
             */
            // recuperation des données de l'evenement groupe d'adresses
            // on ne fait pas de group by   having
            // on prend simplement le dernier enregistrement classé selon l'idHistoriqueEvenement
            // et donc le nombre de resultats de la requete permet de recuperer le nombre d'historiques sur l'evenement dans la foulée
            $sql = 'SELECT  hE.idEvenement,
					hE.titre, hE.idSource,
					hE.idTypeStructure,
					hE.idTypeEvenement,
					hE.description,
					hE.dateDebut,
					hE.dateFin,
					hE.dateDebut,
					hE.dateFin,
					tE.nom AS nomTypeEvenement,
					tS.nom AS nomTypeStructure,
					s.nom AS nomSource,
					u.nom AS nomUtilisateur,
					u.prenom as prenomUtilisateur,
					tE.groupe,
					hE.ISMH ,
					hE.MH,
					date_format(hE.dateCreationEvenement,"' . _("%e/%m/%Y à %kh%i") . '") as dateCreationEvenement,
					hE.isDateDebutEnviron as isDateDebutEnviron,
					u.idUtilisateur as idUtilisateur,
					hE.numeroArchive as numeroArchive

					FROM ' . $nomTable . ' hE
					LEFT JOIN source s      ON s.idSource = hE.idSource
					LEFT JOIN typeStructure tS  ON tS.idTypeStructure = hE.idTypeStructure
					LEFT JOIN typeEvenement tE  ON tE.idTypeEvenement = hE.idTypeEvenement
					LEFT JOIN utilisateur u     ON u.idUtilisateur = hE.idUtilisateur
					WHERE ' . $sqlWhere . '
			ORDER BY hE.idEvenement DESC';
            $rep = $this->connexionBdd->requete($sql);
        } else {
            echo "<p><strong>Cette fiche n'existe plus, merci de <a href='" . $this->creerUrl("", "contact") . "'>contacter un administrateur</a>.</strong></p>";
        }
        // lien vers le formulaire d'ajout d'une adresse pour un evenement parent
        // recherche de l'evenement parent
        $idEvenementGroupeAdresse = $this->getParent($idEvenement);
        if ($idEvenementGroupeAdresse == 0) {
            $idEvenementGroupeAdresse = $idEvenement;
            // pas de parent trouvé , donc l'evenement est lui meme un parent
        }
        // ***************************
        // gestion mode deplacement d'images
        // ***************************
        $styleColorDeplacementActif = "";
        $afficheSelectionImages = 1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1') {
            $styleColorDeplacementActif = "color:red;";
            $afficheSelectionImages = 0;
        }
        $t->assign_vars(array('urlLierAdresseAEvenement' => $this->creerUrl('', 'formulaireGroupeAdresses', array('archiIdEvenementGroupeAdresses' => $idEvenementGroupeAdresse)), 'urlAjouterEvenement' => $this->creerUrl('', 'ajouterSousEvenement', array('archiIdEvenement' => $idEvenementGroupeAdresse)), 'urlDeplacerImages' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'afficheSelectionImage' => $afficheSelectionImages)), 'styleModeDeplacementImageActif' => "{$styleColorDeplacementActif};"));
        // **********************************
        // gestion selection du titre du groupe d'adresse
        // **********************************
        $styleColorSelectionTitreActif = "";
        $afficheSelectionTitre = 1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1') {
            $styleColorSelectionTitreActif = "color:red;";
            $afficheSelectionTitre = 0;
        }
        $t->assign_vars(array('urlSelectionTitreAdresse' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'afficheSelectionTitre' => $afficheSelectionTitre)), 'styleModeChoixTitre' => $styleColorSelectionTitreActif));
        // *******************************************
        // gestion selection de l'image principale du groupe d'adresse
        // *******************************************
        $styleColorSelectionImagePrincipaleActif = "";
        $afficheSelectionImagePrincipale = 1;
        if ($estConnecte && isset($this->variablesGet['afficheSelectionImagePrincipale']) && $this->variablesGet['afficheSelectionImagePrincipale'] == '1') {
            $styleColorSelectionImagePrincipaleActif = "color:red";
            $afficheSelectionImagePrincipale = 0;
        }
        $t->assign_vars(array('urlSelectionImagePrincipale' => $this->creerUrl('', 'evenement', array('idEvenement' => $idEvenementGroupeAdresse, 'afficheSelectionImagePrincipale' => $afficheSelectionImagePrincipale)), 'styleModeSelectionImagePrincipale' => $styleColorSelectionImagePrincipaleActif));
        // *******************************************
        // gestion positionnement evenements
        // *******************************************
        $styleColorPositionnementEvenements = "";
        $affichePositionnementEvenements = 1;
        if ($estConnecte && isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
            $styleColorPositionnementEvenements = "color:red";
            $affichePositionnementEvenements = 0;
            $this->addToJsHeader($imageObject->getJSFunctionsDragAndDrop(array('withBalisesScript' => true)));
            // rajoute les fonctions de deplacement d'elements dans le header du formulaire
        }
        $t->assign_vars(array('urlPositionnementEvenements' => $this->creerUrl('', 'evenement', array('archiIdAdresse' => $idAdresseCourante, 'idEvenement' => $idEvenementGroupeAdresse, 'affichePositionnementEvenements' => $affichePositionnementEvenements)), 'styleModePositionnementEvenements' => $styleColorPositionnementEvenements));
        if (isset($sqlWhere) && mysql_num_rows($rep) > 0) {
            $nbHistorique = mysql_num_rows($rep) - 1;
            // on ne compte pas le groupe d'adresse qui a le meme idEvenement
            $res = mysql_fetch_object($rep);
            $idEvenement = $res->idEvenement;
            // si c'est un groupe d'adresse, on n'affiche pas le détail de l'événement, juste ses événements enfants
            if ($res->groupe != 3) {
                if ($modeAffichage === 'simple' || $modeAffichage == 'consultationHistoriqueEvenement') {
                    $t->assign_block_vars('simple', array());
                    // si l'evenement est un evenement externe au groupe d'adresse , on affiche un menu different a droite
                    if (isset($params['isLieFromOtherAdresse']) && $params['isLieFromOtherAdresse'] == true) {
                        // on recupere d'abord l'idAdresse de cet evenement externe
                        $reqAdresses = $adresse->getIdAdressesFromIdEvenement(array('idEvenement' => $idEvenement));
                        $resAdresses = $this->connexionBdd->requete($reqAdresses);
                        $fetchAdressesExternes = mysql_fetch_assoc($resAdresses);
                        $intituleAdresse = $adresse->getIntituleAdresseFrom($fetchAdressesExternes['idAdresse'], 'idAdresse');
                        //$t->assign_vars(array("divDisplayMenuAction"=>"none"));
                        $ancrePositionAdresseLiee = "";
                        $positionSurAdresseOrigine = $adresse->getPositionFromEvenement($idEvenement);
                        if ($positionSurAdresseOrigine != '' && $positionSurAdresseOrigine != '0') {
                            $ancrePositionAdresseLiee = "#" . $positionSurAdresseOrigine;
                        }
                        $t->assign_vars(array("urlEvenementExterne" => "<small>" . _("Adresse d'origine :") . " <a href='" . $this->creerUrl('', 'adresseDetail', array('archiIdAdresse' => $fetchAdressesExternes['idAdresse'])) . $ancrePositionAdresseLiee . "'>" . $intituleAdresse . "</a></small>"));
                    } else {
                        if ($modeAffichage != 'consultationHistoriqueEvenement') {
                            $t->assign_vars(array("divDisplayMenuAction" => "table"));
                        }
                    }
                    if ($estConnecte) {
                        $t->assign_block_vars('simple.menuAction', array());
                        if ($modeAffichage != 'consultationHistoriqueEvenement') {
                            if (isset($params['isLieFromOtherAdresse']) && $params['isLieFromOtherAdresse'] == true) {
                                $t->assign_vars(array("divDisplayMenuAction" => "none"));
                                // si un utilisateur est connecté , et que l'evenement est un evenement lie , on affiche pas le menu d'action
                            } else {
                                $t->assign_vars(array("divDisplayMenuAction" => "table"));
                                // si un utilisateur est connecté et que l'evenement n'est pas un evenement lié, on affiche le menu d'action
                            }
                        } else {
                            $t->assign_vars(array("divDisplayMenuAction" => "none"));
                            // si on est en mode d'affichage de l'historique d'un evenement, on ne propose pas de menu action
                        }
                        if ($u->isAuthorized('evenement_lier_adresses', $userId)) {
                            if (!archiPersonne::isPerson($idEvenementGroupeAdresse) && ($u->getIdProfil($userId) == 4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse'))) {
                                $t->assign_block_vars('simple.menuAction.afficheElementMenuLierAdresse', array());
                            }
                        }
                    }
                    if ($estAdmin) {
                        $t->assign_block_vars('simple.menuAction.isAdmin', array());
                    }
                    if ($u->isAuthorized('evenement_supprimer', $userId)) {
                        $isModerateurFromVilleCourante = false;
                        if ($authentification->getIdProfil() == 3) {
                            //moderateur
                            $arrayVillesModerees = $u->getArrayVillesModereesPar($userId);
                            $idVilleAdresseCourante = $adresse->getIdVilleFrom($idEvenement, 'idEvenement');
                            if (in_array($idVilleAdresseCourante, $arrayVillesModerees)) {
                                $isModerateurFromVilleCourante = true;
                            }
                        }
                        if ($authentification->getIdProfil() == 4 || $isModerateurFromVilleCourante) {
                            // est on administrateur ou moderateur de la ville ?
                            $t->assign_block_vars('simple.menuAction.isAdminOrModerateurFromVille', array());
                            if ($estConnecte && $estAdmin && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1') {
                                $t->assign_block_vars('simple.menuAction.isAdmin.isAffichageSelectionImages', array());
                            }
                        }
                    }
                    if (!archiPersonne::isPerson($idEvenementGroupeAdresse) && $u->isAuthorized('evenement_deplacer', $userId)) {
                        $t->assign_block_vars('simple.menuAction.afficheElementMenuDeplacerEvenement', array());
                    }
                    if ($estConnecte && $estAdmin && isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1') {
                        //$t->assign_block_vars('simple.menuAction.isAdminOrModerateurFromVille',array());
                    }
                }
                // ******************************************************************************************************
                // Affichage des dates
                $dateTxt = "";
                $environDateDebutTxt = "";
                if ($res->isDateDebutEnviron == '1') {
                    $environDateDebutTxt = "environ ";
                }
                switch (strtolower($res->nomTypeEvenement)) {
                    case 'information (nouveautés)':
                    case 'extension':
                    case 'inauguration':
                    case 'exposition':
                        $articleAvantTypeEvenement = "de l'";
                        break;
                    default:
                        $articleAvantTypeEvenement = "de";
                        break;
                }
                if (substr($res->dateDebut, 5) == "00-00") {
                    $datetime = substr($res->dateDebut, 0, 4);
                } else {
                    $datetime = $res->dateDebut;
                }
                if ($res->nomTypeEvenement == 'Construction') {
                    if ($res->dateDebut != '0000-00-00') {
                        $dateTxt = _("Année de construction :") . " <time itemprop='startDate' datetime='" . $datetime . "'>" . $environDateDebutTxt . $this->date->toFrenchAffichage($res->dateDebut) . "</time>";
                    }
                    if ($res->dateFin != '0000-00-00') {
                        $dateTxt .= " (-> " . $this->date->toFrenchAffichage($res->dateFin) . ")";
                        $retourDateFin = " (-> " . $this->date->toFrenchAffichage($res->dateFin) . ")";
                    }
                } else {
                    if ($res->dateDebut != '0000-00-00') {
                        if ($res->MH != '1' && $res->ISMH != '1') {
                            if (pia_strlen($this->date->toFrench($res->dateDebut)) <= 4) {
                                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                                    $nomTypeEvenement = "début";
                                } else {
                                    $nomTypeEvenement = strtolower($res->nomTypeEvenement);
                                }
                                $dateTxt = _("Année") . " " . $articleAvantTypeEvenement . " <time itemprop='startDate' datetime='" . $datetime . "'>" . $nomTypeEvenement . " : {$environDateDebutTxt}" . $this->date->toFrenchAffichage($res->dateDebut) . "</time>";
                            } else {
                                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                                    $typeEvenement = "";
                                } else {
                                    $typeEvenement = $articleAvantTypeEvenement . " " . strtolower($res->nomTypeEvenement);
                                }
                                $dateTxt = _("Date") . " <time itemprop='startDate' datetime='" . $datetime . "'>" . $typeEvenement . " : {$environDateDebutTxt}" . $this->date->toFrenchAffichage($res->dateDebut) . "</time>";
                            }
                        }
                        if ($res->MH == '1') {
                            $dateTxt = "<b>" . _("Classement Monument Historique") . "</b> {$environDateDebutTxt} le " . $this->date->toFrenchAffichage($res->dateDebut);
                            $isMH = true;
                        }
                        if ($res->ISMH == '1') {
                            $dateTxt = "<b>" . _("Inscription à l'Inventaire Supplémentaire des Monuments Historiques") . "</b> {$environDateDebutTxt} : " . $this->date->toFrenchAffichage($res->dateDebut);
                            if ($res->MH == '1') {
                                $dateTxt .= "<br><b>" . _("Classement Monument Historique") . "</b> {$environDateDebutTxt} : " . $this->date->toFrenchAffichage($res->dateDebut);
                            }
                            $isISMH = true;
                        }
                    }
                    if ($res->dateFin != '0000-00-00') {
                        if (pia_strlen($this->date->toFrench($res->dateFin)) <= 4) {
                            $dateTxt .= " " . _("à") . " " . $this->date->toFrenchAffichage($res->dateFin);
                        } else {
                            $dateTxt .= " " . _("au") . " " . $this->date->toFrenchAffichage($res->dateFin);
                        }
                    }
                }
                // ******************************************************************************************************
                // on renseigne la variable nomTypeStructure pour la renvoyer au retour de la fonction
                $retourIdTypeStructure = $res->idTypeStructure;
                // idem pour le titre qui sera affiché en resume pour le tableau de liens
                $retourTitreAncre = "";
                if (stripslashes($res->titre) != '') {
                    $retourTitreAncre .= htmlspecialchars(stripslashes($res->titre));
                } else {
                    $retourTitreAncre .= _("Sans titre");
                }
                $retourNomTypeEvenement = $res->nomTypeEvenement;
                $retourDate = $environDateDebutTxt . " " . $this->date->toFrench($res->dateDebut);
                $dateDebut = $res->dateDebut;
                if (isset($paramChampCache['idTypeStructurePrecedent']) && $res->idTypeStructure == $paramChampCache['idTypeStructurePrecedent']) {
                    $typeStructure = '';
                } else {
                    if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                        $typeStructure = "";
                    } else {
                        $typeStructure = "Structure : <a href='" . $this->creerUrl('', 'evenementListe', array('selection' => 'typeStructure', 'id' => $res->idTypeStructure)) . "'>" . $res->nomTypeStructure . "</a><br>";
                    }
                }
                $source = "";
                if ($res->idSource != 0) {
                    $source = "Source : <a href='" . $this->creerUrl('', 'listeAdressesFromSource', array('source' => $res->idSource, 'submit' => 'Rechercher')) . "' onmouseover=\"document.getElementById('calqueDescriptionSource').style.top=(getScrollHeight()+150)+'px';\n\t\t\t\t\t\t\t\t\tdocument.getElementById('calqueDescriptionSource').style.display='block';\n\t\t\t\t\t\t\t\t\tdocument.getElementById('iframe').src='" . $this->creerUrl('', 'descriptionSource', array('archiIdSource' => $res->idSource, 'noHeaderNoFooter' => 1)) . "';\"\n\t\t\t\t\t\t\t\t\t>" . stripslashes($res->nomSource) . "</a><br>";
                } else {
                    // exception temporaire (?)
                    if ($res->numeroArchive != '') {
                        // s'il y a un numero d'archive et pas de source précisée , on dit que la source est "archives municipales" (voir fabien)
                        $reqSourceStatic = "SELECT nom as nomSource FROM source WHERE idSource='24'";
                        $resSourceStatic = $this->connexionBdd->requete($reqSourceStatic);
                        $fetchSourceStatic = mysql_fetch_assoc($resSourceStatic);
                        $source = "Source : <a href='" . $this->creerUrl('', 'listeAdressesFromSource', array('submit' => 'Rechercher', 'source' => 24)) . "' onmouseover=\"document.getElementById('calqueDescriptionSource').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDescriptionSource').style.display='block';document.getElementById('iframe').src='" . $this->creerUrl('', 'descriptionSource', array('archiIdSource' => 24, 'noHeaderNoFooter' => 1)) . "';\" onmouseout=\"document.getElementById('calqueDescriptionSource').style.display='none';\">" . stripslashes($fetchSourceStatic['nomSource']) . "</a><br>";
                    }
                }
                // DESCRIPTION ---
                $bbCode = new bbCodeObject();
                $description = $bbCode->convertToDisplay(array('text' => $res->description));
                $description = empty($description) ? "" : "<div itemprop='description' class='desc'>" . $description . "</div>";
                // --
                // numeroArchive
                $numeroArchive = "";
                if ($res->numeroArchive != '') {
                    // modif fabien du 15/04/2011 suite mail directrice Archives de Strasbourg Mme Perry Laurence
                    $numeroArchive = "Cote Archives de Strasbourg : " . $res->numeroArchive . "<br>";
                }
                $adressesLieesHTML = $this->getAdressesLieesAEvenement(array('modeRetour' => 'affichageSurDetailEvenement', 'idEvenement' => $idEvenement));
                if ($adressesLieesHTML != '') {
                    $adressesLieesHTML = "<b>" . _("Liste des adresses liées :") . "</b> <br>" . $adressesLieesHTML;
                }
                // recherche s'il y a un historique sur l'evenement courant ( plusieurs mises à jour)
                $lienHistoriqueEvenementCourant = "";
                $labelHistorique = "";
                if ($estConnecte && $this->getNbEvenementsInHistorique(array('idEvenement' => $idEvenement)) > 1 && $modeAffichage != 'consultationHistoriqueEvenement' && (!isset($params['isLieFromOtherAdresse']) || $params['isLieFromOtherAdresse'] != true)) {
                    $labelHistorique = _("(Consulter l'historique)");
                    $lienHistoriqueEvenementCourant = $this->creerUrl('', 'consultationHistoriqueEvenement', array('archiIdEvenement' => $idEvenement));
                }
                $onClickEvenementDeplacerVersGA = "";
                if ($estConnecte && $u->isAuthorized('evenement_deplacer', $userId) && $modeAffichage != 'consultationHistoriqueEvenement' && isset($params['calquePopupDeplacerEvenement'])) {
                    $onClickEvenementDeplacerVersGA = "document.getElementById('" . $params['calquePopupDeplacerEvenement']->getJSIFrameId() . "').src='" . $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => "popupDeplacerEvenementVersGroupeAdresse", "idEvenementADeplacer" => $res->idEvenement)) . "';document.getElementById('" . $params['calquePopupDeplacerEvenement']->getJSDivId() . "').style.display='block';";
                }
                $dateEnvoi = "";
                $txtEnvoi = _("envoyé");
                if (!$this->isFirstIdHistoriqueEvenementFromHistorique($res->idEvenement)) {
                    $txtEnvoi = _("modifié");
                }
                $dateEnvoi = _("le") . " " . $res->dateCreationEvenement;
                $arrayIdAdresseToUrl = array();
                if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse'] != '') {
                    $arrayIdAdresseToUrl = array('archiIdAdresse' => $this->variablesGet['archiIdAdresse']);
                }
                $resTypeEvenement = $this->connexionBdd->requete("SELECT idTypeEvenement,nom FROM typeEvenement where groupe = '" . $this->getGroupeFromTypeEvenement($res->idTypeEvenement) . "'");
                $fetchTypeEvenement = mysql_fetch_assoc($resTypeEvenement);
                if (archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    $typeEvenement = _("Biographie");
                    $urlTypeEvenement = "";
                } else {
                    $typeEvenement = $res->nomTypeEvenement;
                    $urlTypeEvenement = $this->creerUrl('', 'evenementListe', array('selection' => 'typeEvenement', 'id' => $res->idTypeEvenement));
                }
                $titre = empty($res->titre) ? "<meta itemprop='name' content='" . $fetchTypeEvenement['nom'] . "' />" : "<h3 itemprop='name'>" . htmlspecialchars(stripslashes($res->titre)) . "</h3>";
                $user = new archiUtilisateur();
                $user->setUserId($res->idEvenement);
                $urlProfilPic = $user->getImageAvatar(array('idUtilisateur' => $res->idUtilisateur));
                $utilisateur = "<a href='" . $this->creerUrl('', 'detailProfilPublique', array('archiIdUtilisateur' => $res->idUtilisateur, 'archiIdEvenementGroupeAdresseOrigine' => $idEvenementGroupeAdresse)) . "'>" . $res->nomUtilisateur . " " . $res->prenomUtilisateur . "</a>";
                $t->assign_vars(array('txtEnvoi' => $txtEnvoi, 'dateEnvoi' => $dateEnvoi, 'titre' => $titre, 'utilisateur' => "<a href='" . $this->creerUrl('', 'detailProfilPublique', array('archiIdUtilisateur' => $res->idUtilisateur, 'archiIdEvenementGroupeAdresseOrigine' => $idEvenementGroupeAdresse)) . "'>" . $res->nomUtilisateur . " " . $res->prenomUtilisateur . "</a>", 'dates' => $dateTxt, 'typeEvenement' => $typeEvenement, 'typeStructure' => $typeStructure, 'idSource' => $res->idSource, 'source' => $source, 'description' => $description, 'urlTypeEvenement' => $urlTypeEvenement, 'urlTypeStructure' => $this->creerUrl('', 'evenementListe', array('selection' => 'typeStructure', 'id' => $res->idTypeStructure)), 'ajouterEvenement' => '', 'supprimerEvenement' => $this->creerUrl('supprimerEvenement', '', array('archiIdEvenement' => $res->idEvenement)), 'supprimerHistoriqueEvenement' => $this->creerUrl('supprimerHistoriqueEvenement', '', array('archiIdHistoriqueEvenement' => $res->idHistoriqueEvenement)), 'ajouterImage' => $this->creerUrl('', 'ajoutImageEvenement', array('archiIdEvenement' => $res->idEvenement)), 'modifierImage' => $this->creerUrl('', 'modifierImageEvenement', array('archiIdEvenement' => $res->idEvenement)), 'modifierEvenement' => $this->creerUrl('', 'modifierEvenement', array_merge(array('archiIdEvenement' => $res->idEvenement, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse), $arrayIdAdresseToUrl)), 'urlImporterImage' => "#", 'onClickImporterImage' => "document.getElementById('formulaireEvenement').action='" . $this->creerUrl('deplacerImagesSelectionnees', 'evenement', array('idEvenement' => $idEvenement)) . "&deplacerVersIdEvenement=" . $res->idEvenement . "';document.getElementById('actionFormulaireEvenement').value='deplacerImages';if(confirm('Voulez-vous vraiment déplacer ces images ?')){document.getElementById('formulaireEvenement').submit();}", 'urlSupprimerImage' => "#", 'onClickSupprimerImage' => "document.getElementById('formulaireEvenement').action='" . $this->creerUrl('supprimerImagesSelectionnees', 'evenement', array('idEvenement' => $idEvenement)) . "';document.getElementById('actionFormulaireEvenement').value='supprimerImages';if(confirm('Voulez-vous vraiment supprimer ces images ?')){document.getElementById('formulaireEvenement').submit();}", 'urlLierAdresses' => $this->creerUrl('', 'afficheFormulaireEvenementAdresseLiee', array('idEvenement' => $res->idEvenement)), 'listeAdressesLiees' => $adressesLieesHTML, 'lienHistoriqueEvenementCourant' => $lienHistoriqueEvenementCourant, 'urlDeplacerVersNouveauGroupeAdresse' => $this->creerUrl('deplacerEvenementVersNouveauGA', 'evenement', array('idEvenement' => $res->idEvenement)), 'onClickDeplacerVersAdresses' => $onClickEvenementDeplacerVersGA, 'numeroArchive' => $numeroArchive, 'idEvenement' => $res->idEvenement, 'urlProfilPic' => $urlProfilPic, 'infoTitre' => $utilisateur . " a " . $txtEnvoi . " un événement", 'txtEnvoi' => $txtEnvoi, 'labelLienHistorique' => $labelHistorique));
                $idEvenement = $res->idEvenement;
                // affichage des images de l'evenement
                if ($modeAffichage != 'consultationHistoriqueEvenement') {
                    $images = new archiImage();
                    $arrayImagesVuesSurByDate = array();
                    if (isset($params['imagesVuesSurLinkedByDate']) && count($params['imagesVuesSurLinkedByDate']) > 0) {
                        $arrayImagesVuesSurByDate = $params['imagesVuesSurLinkedByDate'];
                    }
                    $t->assign_vars(array('imagesLiees' => $images->afficherFromEvenement($idEvenement, array('withoutImagesVuesSurPrisesDepuis' => true, 'imagesVuesSurLinkedByDate' => $arrayImagesVuesSurByDate, 'idGroupeAdresseEvenementAffiche' => $idEvenementGroupeAdresse))));
                }
                if (($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) && isset($params["nextEvent"])) {
                    $req = "\n\t\t\t\t\t\t\tSELECT dateDebut\n\t\t\t\t\t\t\tFROM evenements\n\t\t\t\t\t\t\tWHERE idEvenement = '" . $params["nextEvent"] . "'\n\t\t\t\t\t\t\t\t\tORDER BY idEvenement DESC LIMIT 1\n\t\t\t\t\t\t\t\t\t";
                    $res = $this->connexionBdd->requete($req);
                    $date2 = mysql_fetch_object($res);
                    $linkedEventsHTML = archiPersonne::displayEvenementsLies($idPerson, $dateDebut, $date2->dateDebut);
                    $t->assign_vars(array("evenementsLiesPersonne" => $linkedEventsHTML));
                } elseif ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                    $linkedEventsHTML = archiPersonne::displayEvenementsLies($idPerson, $dateDebut, 3000);
                    $t->assign_vars(array("evenementsLiesPersonne" => $linkedEventsHTML));
                }
                /*
                 * COURANTS ARCHI
                 */
                $rep = $this->connexionBdd->requete('
						SELECT  cA.idCourantArchitectural, cA.nom
						FROM _evenementCourantArchitectural _eA
						LEFT JOIN courantArchitectural cA  ON cA.idCourantArchitectural  = _eA.idCourantArchitectural
						WHERE _eA.idEvenement=' . $idEvenement . '
						ORDER BY cA.nom ASC');
                if (mysql_num_rows($rep) > 0) {
                    $t->assign_block_vars('simple.isCourantArchi', array());
                    while ($res = mysql_fetch_object($rep)) {
                        $t->assign_block_vars('simple.isCourantArchi.archi', array('url' => $this->creerUrl('', 'evenementListe', array('selection' => 'courant', 'id' => $res->idCourantArchitectural)), 'nom' => $res->nom));
                    }
                }
                /*
                 **  PERSONNES
                 */
                $rep = $this->connexionBdd->requete('
						SELECT  p.idPersonne, m.nom as metier, p.nom, p.prenom
						FROM _evenementPersonne _eP
						LEFT JOIN personne p ON p.idPersonne = _eP.idPersonne
						LEFT JOIN metier m ON m.idMetier = p.idMetier
						WHERE _eP.idEvenement=' . $idEvenement . '
						ORDER BY p.nom DESC');
                $metier = "";
                while ($res = mysql_fetch_object($rep)) {
                    if (isset($res->metier) && $res->metier != '') {
                        $metier = $res->metier . ' : ';
                    }
                    $t->assign_block_vars('simple.pers', array('urlDetail' => $this->creerUrl('', 'personne', array('idPersonne' => $res->idPersonne)), 'urlEvenement' => $this->creerUrl('', 'evenementListe', array('selection' => 'personne', 'id' => $res->idPersonne)), 'nom' => stripslashes($res->nom), 'prenom' => stripslashes($res->prenom), 'metier' => stripslashes($metier), 'idPerson' => $res->idPersonne, 'idEvent' => $idEvenement));
                    if ($estConnecte) {
                        $t->assign_block_vars('simple.pers.connected', array());
                    }
                }
                //*
                //**    Historique
                //*/
                $t->assign_vars(array('nbHistorique' => $nbHistorique));
                if ($nbHistorique > 0) {
                    $t->assign_block_vars('histo', array('url' => $this->creerUrl('', 'historiqueEvenement', array('idEvenement' => $idEvenement))));
                }
            }
            // *************************************************************************************************************************************
            // affichage des adresses et evenements lies dans la partie supérieur du detail
            // que l'événement soit un groupe d'adresse ou non, on affiche les enfants
            // *************************************************************************************************************************************
            if ($modeAffichage != 'simple' && $modeAffichage != 'consultationHistoriqueEvenement') {
                $tabIdEvenementsLies = $this->getEvenementsLies($idEvenement);
                // recherche des sous evenements (idEvenementAssocie) du groupe d'adresse
                if (count($tabIdEvenementsLies) > 0) {
                    $listeGroupeAdressesAffichees[] = $idEvenement;
                    $t->assign_block_vars('noSimple', array());
                    // vu que la fonction afficher est recursive , on affiche cette partie uniquement en affichant 'non simple'
                    //=> affichage simple = affichage de l'evenement => affichage non simple = affichage de la page ...
                    if ($modeAffichage == "personne") {
                    } else {
                        $retourAdresse = $adresse->afficherListe(array('archiIdEvenement' => $idEvenement, 'useTemplateFile' => 'listeAdressesDetailEvenement.tpl'), "listeDesAdressesDuGroupeAdressesSurDetailAdresse");
                        // modeAffichage => listeDesAdressesDuGroupeAdressesSurDetailAdresse
                    }
                    $idAdresseCourante = 0;
                    if (isset($this->variablesGet['archiIdAdresse']) && $this->variablesGet['archiIdAdresse'] != '') {
                        $idAdresseCourante = $this->variablesGet['archiIdAdresse'];
                    }
                    if ($modeAffichage != "personne") {
                        // ************************************************************************************************************************
                        // affichage carte googlemap dans une iframe
                        $coordonnees = $adresse->getCoordonneesFrom($idEvenement, 'idEvenementGroupeAdresse');
                        //$retourAdresse['arrayIdAdresses'][0]
                        // si pas de coordonnees , on va chercher les coordonnees de la ville courante
                        if ($coordonnees['longitude'] == 0 && $coordonnees['latitude'] == 0) {
                            $idVilleAdresseCourante = $adresse->getIdVilleFrom($idAdresseCourante, 'idAdresse');
                            $coordonnees = $adresse->getCoordonneesFrom($idVilleAdresseCourante, 'idVille');
                        }
                        $calqueGoogleMap = new calqueObject(array('idPopup' => 10));
                        $contenuIFramePopup = $this->getContenuIFramePopupGoogleMap(array('idAdresseCourante' => $idAdresseCourante, 'calqueObject' => $calqueGoogleMap, 'idEvenementGroupeAdresseCourant' => $idEvenement));
                        // ********************************************************************************************************************************
                        $t->assign_block_vars('noSimple.isCarteGoogle', array('src' => $this->creerUrl('', 'afficheGoogleMapIframe', array('noHeaderNoFooter' => 1, 'longitude' => $coordonnees['longitude'], 'latitude' => $coordonnees['latitude'], 'archiIdAdresse' => $idAdresseCourante, 'archiIdEvenementGroupeAdresse' => $idEvenement)), 'lienVoirCarteGrand' => "<a href='#' onclick=\"" . $calqueGoogleMap->getJsOpenPopupNoDraggableWithBackgroundOpacity() . "document.getElementById('iFrameDivPopupGM').src='" . $this->creerUrl('', 'afficheGoogleMapIframe', array('longitude' => $coordonnees['longitude'], 'latitude' => $coordonnees['latitude'], 'noHeaderNoFooter' => true, 'archiIdAdresse' => $idAdresseCourante, 'archiIdEvenementGroupeAdresse' => $idEvenement, 'modeAffichage' => 'popupDetailAdresse')) . "';\" class='bigger' style='font-size:11px;'>" . _("Voir la carte en + grand") . "</a>", 'popupGoogleMap' => $calqueGoogleMap->getDivNoDraggableWithBackgroundOpacity(array('top' => 20, 'lienSrcIFrame' => '', 'contenu' => $contenuIFramePopup))));
                        //'popupGoogleMap'=>$calqueGoogleMap->getDiv(array('width'=>550,'height'=>570,'lienSrcIFrame'=>''))."<script  >".$calqueGoogleMap->getJsToDragADiv()."</script>"
                        $t->assign_vars(array('largeurTableauResumeAdresse' => 415, 'hauteurRecapAdresse' => '270'));
                        // ************************************************************************************************************************
                        // affichage de l'encars des adresses avec les photos avant et apres l'adresse courante
                        $arrayEncartAdresses = $adresse->getArrayEncartAdressesImmeublesAvantApres(array('idEvenementGroupeAdresse' => $idEvenementGroupeAdresse));
                        $t->assign_block_vars('noSimple.adresses', array('adressesLiees' => $arrayEncartAdresses['html']));
                        $t->assign_vars(array('urlAutresBiensRue' => $retourAdresse['arrayRetourLiensVoirBatiments']['urlAutresBiensRue'], 'urlAutresBiensQuartier' => $retourAdresse['arrayRetourLiensVoirBatiments']['urlAutresBiensQuartier']));
                        if ($estConnecte) {
                            $t->assign_block_vars('noSimple.isConnected', array());
                            $t->assign_block_vars('noSimple.adresses.isConnected', array());
                        }
                        if ($retourAdresse['nbAdresses'] == 0) {
                            $t->assign_vars(array('intituleActionAdresses' => _("Ajouter une adresse")));
                        } else {
                            $t->assign_vars(array('intituleActionAdresses' => _("Modifier")));
                        }
                        if ($estConnecte && $estAdmin) {
                            // si l'utilisateur est connecté et est admin, on affiche le lien pour selectionner des images
                            $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionImages', array());
                        }
                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_choix_titre', $userId)) {
                            if ($u->getIdProfil($userId) == 4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // tout utilisateur autorisé (admin+moderateur de la ville)  peut changer le titre par defaut du groupe d'adresse en selectionnant l'evenement de son choix ( le titre est récupéré de cet evenement),si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionTitre', array());
                            }
                        }
                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_choix_image_principale', $userId)) {
                            if ($u->getIdProfil($userId) == 4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // un utilisateur moderateur de la ville de l'adresse courant ou un admin peuvent selectionner ou changer l'image principale du groupe d'adresse,si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienSelectionImagePrincipale', array());
                            }
                        }
                        if ($estConnecte && $u->isAuthorized('affiche_menu_evenement_positionnement_evenements', $userId)) {
                            if ($u->getIdProfil($userId) == 4 || $u->isModerateurFromVille($userId, $idEvenementGroupeAdresse, 'idEvenementGroupeAdresse')) {
                                // un utilisateur moderateur de la ville courante ou admin peuvent changer la position des evenements, independemment de la date de debut de l'evenement ,si l'autorisation est faite dans la gestion des droites de l'admin du site
                                $t->assign_block_vars('noSimple.isConnected.afficheLienPositionnementEvenements', array());
                            }
                        }
                    }
                    //popup pour la recherche d'adresse dans le cas d'un deplacement d'evenement
                    if ($estConnecte && $u->isAuthorized('evenement_deplacer', $userId)) {
                        $c = new calqueObject(array('idPopup' => "divPopupDeplacerEvenementVersGA" . $idEvenementGroupeAdresse));
                        $t->assign_vars(array('divDeplacerEvenementVersGA' => $c->getDiv(array('lienSrcIFrame' => $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupDeplacerEvenementVersGroupeAdresse')), 'titrePopup' => _("Recherche d'adresses"), 'width' => 700))));
                        $params['calquePopupDeplacerEvenement'] = $c;
                    }
                    $images = new archiImage();
                    // **********************************************************************************************************************************************************
                    // recherche des images en rapport avec l'adresse courante
                    $resAdressesCourantes = $adresse->getAdressesFromEvenementGroupeAdresses($idEvenement);
                    $listeAdressesFromEvenement = array();
                    while ($fetchAdressesCourantes = mysql_fetch_assoc($resAdressesCourantes)) {
                        $listeAdressesFromEvenement[] = $fetchAdressesCourantes['idAdresse'];
                    }
                    if ($modeAffichage == "personne") {
                    } else {
                        $arrayCorrespondancesVuesSur = $this->getArrayCorrespondancesIdImageVuesSurAndEvenementByDateFromGA($idEvenementGroupeAdresse);
                        $arrayNoDiplayIdImageVueSur = array();
                        foreach ($arrayCorrespondancesVuesSur as $indice => $values) {
                            foreach ($values as $indice => $value) {
                                $arrayNoDiplayIdImageVueSur[] = $value['idImage'];
                            }
                        }
                    }
                    if (count($listeAdressesFromEvenement) > 0) {
                        $arrayAutresVuesSur = $images->getAutresPhotosVuesSurAdresse($listeAdressesFromEvenement, 'moyen', array('noDiplayIdImage' => $arrayNoDiplayIdImageVueSur, 'idEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'idGroupeAdresseEvenementAffiche' => $idEvenementGroupeAdresse, 'setZoomOnImageZone' => true));
                        $autresVuesSurHTML = $arrayAutresVuesSur['htmlVueSur'];
                        $codeARajouterALaFin = $arrayAutresVuesSur['htmlZonesDivMapJs'];
                        $autresPrisesDepuisHTML = $images->getAutresPhotosPrisesDepuisAdresse($listeAdressesFromEvenement, 'moyen', array('idEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'idGroupeAdresseEvenementAffiche' => $idEvenementGroupeAdresse));
                        if ($autresVuesSurHTML != '') {
                            $t->assign_block_vars('noSimple.autresVuesSur', array('value' => $autresVuesSurHTML));
                        }
                        if ($autresPrisesDepuisHTML != '') {
                            $t->assign_block_vars('noSimple.autresPrisesDepuis', array('value' => $autresPrisesDepuisHTML));
                        }
                        $arrayLiens = array();
                        if ($modeAffichage != "personne") {
                            $arrayListeAdressesCourantes = array_unique($retourAdresse['arrayIdAdresses']);
                        }
                        //foreach($arrayListeAdressesCourantes as $indice => $idAdresseCourante)
                        //{
                        $arrayLiens[] = "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $idAdresseCourante, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse)) . "'>" . $adresse->getIntituleAdresseFrom($idEvenementGroupeAdresse, 'idEvenementGroupeAdresse', array("noQuartier" => true, "noVille" => true, "noSousQuartier" => true, "ifTitreAfficheTitreSeulement" => true)) . "</a>";
                        //}
                        $t->assign_vars(array('listeAdressesCourantes' => implode(" / ", $arrayLiens)));
                    }
                    // **********************************************************************************************************************************************************
                    // **********************************************************************************************************************************************************
                    // **********************************************************************************************************************************************************
                    // affichage des evenements de l'evenement groupe d'adresses
                    // **********************************************************************************************************************************************************
                    $champsCacheTransmis = array();
                    //
                    $idEvenementWhereIsTitre = $this->getIdEvenementTitre(array("idEvenementGroupeAdresse" => $idEvenementGroupeAdresse));
                    $idAdresse = $adresse->getIdAdresseFromIdEvenementGroupeAdresse($idEvenementGroupeAdresse);
                    // initialisation des variables pour la creation du tableau de configuration de la liste triable par glisser deposer des evenements dans l'onglet historique des evenements
                    if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
                        $arrayConfigPositionnementEvenement = array();
                        $indicePositionnement = 0;
                    }
                    $i = 0;
                    // parcours des evenements
                    foreach ($tabIdEvenementsLies as $indice => $value) {
                        $params['isLieFromOtherAdresse'] = $value['isLieFromOtherAdresse'];
                        $params['imagesVuesSurLinkedByDate'] = array();
                        if (isset($tabIdEvenementsLies[$i + 1]["idEvenementAssocie"])) {
                            $params["nextEvent"] = $tabIdEvenementsLies[$i + 1]["idEvenementAssocie"];
                        } else {
                            $params["nextEvent"] = null;
                        }
                        if (isset($arrayCorrespondancesVuesSur[$value['idEvenementAssocie']])) {
                            $params['imagesVuesSurLinkedByDate'] = $arrayCorrespondancesVuesSur[$value['idEvenementAssocie']];
                        }
                        // le type de structure est le meme que l'evenement precedent , on ne l'affiche pas, c'est pour cela qu'on le transmet a la fonction d'affichage
                        $retourEvenement = $this->afficher($value['idEvenementAssocie'], 'simple', null, $champsCacheTransmis, $params);
                        $champsCacheTransmis = array('idTypeStructurePrecedent' => $retourEvenement['idTypeStructure']);
                        $titreAncre = $retourEvenement['titreAncre'];
                        if ($titreAncre == 'Sans titre' && ($retourEvenement['isMH'] || $retourEvenement['isISMH'])) {
                            if ($retourEvenement['isMH']) {
                                $titreAncre = "<b>" . _("Classement aux Monuments Historiques") . "</b>";
                            }
                            if ($retourEvenement['isISMH']) {
                                $titreAncre = "<b>" . _("Inscription à l'Inventaire Supplémentaire des Monuments Historiques") . "</b>";
                            }
                        } elseif ($titreAncre != _("Sans titre") && ($retourEvenement['isMH'] || $retourEvenement['isISMH'])) {
                            if ($retourEvenement['isMH']) {
                                $titreAncre .= " <b>(MH)</b>";
                            }
                            if ($retourEvenement['isISMH']) {
                                $titreAncre .= " <b>(ISMH)</b>";
                            }
                        }
                        if ($retourEvenement['nomTypeEvenement'] != '') {
                            $titreAncre .= " - " . $retourEvenement['nomTypeEvenement'];
                        }
                        if ($retourEvenement['date'] != '') {
                            $titreAncre .= " - " . $retourEvenement['date'];
                        }
                        if ($retourEvenement['dateFin'] != '') {
                            $titreAncre .= " " . $retourEvenement['dateFin'];
                        }
                        if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
                            // si on est en mode de positionnement des evenements manuellement
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['idEvenement'] = array('value' => $value['idEvenementAssocie'], 'type' => 'identifiant');
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['illustration'] = array('value' => "<img src='" . $this->urlImages . "doubleFlechesVerticales.jpg' border=0>", 'type' => 'free');
                            $arrayConfigPositionnementEvenement[$indicePositionnement]['titre'] = array('value' => $titreAncre, 'type' => 'free', 'styleColonneDonnees' => 'font-size:12px;');
                            $indicePositionnement++;
                            /*$t->assign_block_vars('noSimple.modePositionnementEvenements',array());
                            
                            							$t->assign_block_vars('noSimple.modePositionnementEvenements.titresEvenements',array(
                            									'imagesIllustrationGlisserDeposer'=>$this->urlImages."",
                            									'titre' => $titreAncre
                            
                            							));
                            							*/
                            //'url'=> $this->creerUrl('selectTitreAdresse','adresseDetail',array('archiIdAdresse'=>$idAdresse,'idEvenementTitreSelection'=>$value['idEvenementAssocie'],'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse))
                        } elseif (isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1') {
                            // si on est en mode de selection d'un titre le titre courant s'affiche en rouge
                            if ($idEvenementWhereIsTitre == $value['idEvenementAssocie']) {
                                $titreAncre = "<span style='color:red;'>" . $titreAncre . "</span>";
                            }
                            $t->assign_block_vars('noSimple.ancres', array('titre' => $titreAncre, 'url' => $this->creerUrl('selectTitreAdresse', 'adresseDetail', array('archiIdAdresse' => $idAdresse, 'idEvenementTitreSelection' => $value['idEvenementAssocie'], 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse))));
                        } else {
                            $t->assign_block_vars('noSimple.ancres', array('titre' => $titreAncre, 'url' => "#" . $indice));
                        }
                        if ($this->variablesGet['selection'] == 'personne') {
                            $formulaireCommentaire = $this->getFormComment($value['idEvenementAssocie'], $this->getCommentairesFields('personne', $this->variablesGet['id']), 'personne');
                            $listeCommentaires = $this->getListCommentairesEvenements($value['idEvenementAssocie']);
                        } else {
                            $formulaireCommentaire = $this->getFormComment($value['idEvenementAssocie'], $this->getCommentairesFields('evenement'), 'evenement');
                            $listeCommentaires = $this->getListCommentairesEvenements($value['idEvenementAssocie']);
                        }
                        $t->assign_block_vars('evenementLie', array('evenement' => $retourEvenement['html'], 'numeroAncre' => $indice, 'listeCommentaires' => $listeCommentaires, 'formulaireCommentaire' => $formulaireCommentaire));
                        $i++;
                    }
                    // affichage de la liste triable a la place de l'historique des evenements, quand on est en mode positionnement d'evenements
                    if (isset($this->variablesGet['affichePositionnementEvenements']) && $this->variablesGet['affichePositionnementEvenements'] == '1') {
                        $t->assign_block_vars('noSimple.modePositionnementEvenements', array());
                        // affiche le bloc
                        $t->assign_vars(array('sortableFormListe' => $imageObject->createSortableFormListeFromArray($arrayConfigPositionnementEvenement, array('noEntetesTableau' => true)) . $imageObject->getJSInitAfterListDragAndDrop('slideshow0', array('onlyHiddenFormField' => true)), 'onClickValidationPositionnementEvenement' => $imageObject->getJSSubmitDragAndDrop() . "document.getElementById('formPositionnementEvenements').submit();", 'formActionPositionnementEvenements' => $this->creerUrl('enregistrerPositionnementEvenements', 'adresseDetail', array('archiIdAdresse' => $idAdresseCourante, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse))));
                        // ajout du code d'initialisation au niveau de la fin de la page (footer)
                        $this->addToJsFooter($imageObject->getJSInitAfterListDragAndDrop('slideshow0', array('onlyJavascriptInitCode' => true)));
                    }
                    // ajout de la possibilité de préciser que l'on ne veut pas de titre , l'adresse s'affichera donc pour l'evenement a la place d'un titre
                    if (isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1') {
                        $titreAncre = "Pas de titre";
                        if ($idEvenementWhereIsTitre == -1) {
                            $titreAncre = "<span style='color:red;'>Pas de titre</span>";
                        }
                        $t->assign_block_vars('noSimple.choixEvenementSansTitre', array('titre' => $titreAncre, 'url' => $this->creerUrl('selectTitreAdresse', 'adresseDetail', array('archiIdAdresse' => $idAdresse, 'idEvenementTitreSelection' => -1, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse))));
                    }
                    // affichage de la liste des historiques de nom de rue pour l'adresse si celle ci ne concerne qu'une rue , sans numero de rue.
                    $infosAdresseCourante = $adresse->getArrayAdresseFromIdAdresse($idAdresse);
                    if (($infosAdresseCourante['numero'] == '0' || $infosAdresseCourante['numero'] == '') && ($infosAdresseCourante['idRue'] != '' || $infosAdresseCourante['idRue'] != '0')) {
                        $d = new dateObject();
                        // dans ce cas on va chercher les infos de l'historique de la rue
                        $reqHistoriqueNomRue = "SELECT * FROM historiqueNomsRues WHERE idRue = '" . $infosAdresseCourante['idRue'] . "' ORDER BY annee";
                        $resHistoriqueNomRue = $this->connexionBdd->requete($reqHistoriqueNomRue);
                        if (mysql_num_rows($resHistoriqueNomRue) > 0) {
                            $t->assign_block_vars("noSimple.isHistoriqueNomsRue", array());
                            while ($fetchHistoriqueNomRue = mysql_fetch_assoc($resHistoriqueNomRue)) {
                                if ($fetchHistoriqueNomRue['prefixe'] != '') {
                                    $nomRue = stripslashes($fetchHistoriqueNomRue['prefixe']) . " " . stripslashes($fetchHistoriqueNomRue['nomRue']);
                                } else {
                                    $nomRue = stripslashes($fetchHistoriqueNomRue['nomRue']);
                                }
                                $t->assign_block_vars("noSimple.listeHistoriqueNomsRue", array("annee" => $d->toFrenchAffichage($fetchHistoriqueNomRue['annee']), "nomRue" => $nomRue, "commentaire" => stripslashes($fetchHistoriqueNomRue['commentaire'])));
                            }
                        }
                    }
                    $a = new archiAdresse();
                    $listeCommentaires = $a->getListeCommentaires($idEvenementGroupeAdresse);
                    $formulaireCommentaire = $this->getFormComment($idEvenementGroupeAdresse, $this->getCommentairesFields(), '');
                    if (!ArchiPersonne::isPerson($idEvenementGroupeAdresse)) {
                        $t->assign_block_vars('commentairesAdresse', array('formulaireCommentaire' => $formulaireCommentaire, 'listeCommentaires' => $listeCommentaires));
                    }
                    $t->assign_vars(array('nbEvenements' => count($tabIdEvenementsLies) + 1));
                } else {
                }
            }
            // *************************************************************************************************************************************
        } else {
            echo 'aucun résultat !';
        }
        ob_start();
        $t->pparse('ev');
        $html .= ob_get_contents();
        ob_end_clean();
        if (isset($codeARajouterALaFin)) {
            $html .= $codeARajouterALaFin;
            // a cause du JS executé a la fin sinon il ne trouve pas certains divs
        }
        // on ferme le formulaire s'il a ete ouvert
        if ($modeAffichage != 'simple' && $modeAffichage != 'consultationHistoriqueEvenement') {
            if ($estConnecte && (isset($this->variablesGet['afficheSelectionImage']) && $this->variablesGet['afficheSelectionImage'] == '1' || isset($this->variablesGet['afficheSelectionTitre']) && $this->variablesGet['afficheSelectionTitre'] == '1')) {
                $html .= "</form>";
            }
        }
        $s = new archiSource();
        $html .= $s->getPopupDescriptionSource();
        return array('html' => $html, 'idTypeStructure' => $retourIdTypeStructure, 'titreAncre' => $retourTitreAncre, 'nomTypeEvenement' => $retourNomTypeEvenement, 'date' => $retourDate, 'isMH' => $isMH, 'isISMH' => $isISMH, 'listeGroupeAdressesAffichees' => $listeGroupeAdressesAffichees, 'dateFin' => $retourDateFin);
    }
 public function afficher($idImage = 0)
 {
     $t = new Template('modules/archi/templates/');
     $t->set_filenames(array('detailImage' => 'detailImage.tpl'));
     $adresse = new archiAdresse();
     $evenement = new archiEvenement();
     $authentification = new archiAuthentification();
     $string = new stringObject();
     $u = new archiUtilisateur();
     $d = new droitsObject();
     $html = "";
     if ((isset($this->variablesGet['formatPhoto']) && $this->variablesGet['formatPhoto'] == 'moyenRedim' || isset($this->variablesGet['formatPhoto']) && $this->variablesGet['formatPhoto'] == 'original') && !$authentification->estConnecte()) {
         // il faut etre connecté et donc inscrit pour pouvoir voir les images dans un format different
         $html .= $authentification->afficheFormulaireAuthentification('noCompact', array("msg" => "<b>Pour voir les photos au format moyen ou l'original vous devez être connecté. Si vous n'avez pas encore de compte utilisateur pour vous connecter,  cliquez <a href='" . $this->creerUrl('', 'inscription') . "'>ici</a></b>"));
     } else {
         if ($authentification->estConnecte()) {
             $t->assign_block_vars("isConnected", array());
             $idProfilUtilisateur = $u->getIdProfilFromUtilisateur($authentification->getIdUtilisateur());
             if ($d->isAuthorized('image_supprimer', $idProfilUtilisateur)) {
                 require_once __DIR__ . '/archiPersonne.class.php';
                 $e = new ArchiEvenement();
                 // on verifie que l'utilisateur est moderateur de la ville ou est admin
                 if ($u->isModerateurFromVille($authentification->getIdUtilisateur(), $idImage, 'idImage') || $idProfilUtilisateur == '4' || ArchiPersonne::isPerson($e->getIdEvenementGroupeAdresseFromIdEvenement($_GET['archiRetourIdValue']))) {
                     if (isset($this->variablesGet['archiRetourAffichage'])) {
                         $t->assign_block_vars('isAdminOrModerateurFromVille', array('urlSupprimerImage' => $this->creerUrl('deleteImage', '', array('archiIdImage' => $idImage, 'archiRetourAffichage' => $this->variablesGet['archiRetourAffichage'], 'archiRetourIdName' => $this->variablesGet['archiRetourIdName'], 'archiRetourIdValue' => $this->variablesGet['archiRetourIdValue']))));
                     } else {
                         $t->assign_block_vars('isAdminOrModerateurFromVille', array('urlSupprimerImage' => $this->creerUrl('deleteImage', '', array('archiIdImage' => $idImage))));
                     }
                 }
             }
             if ($authentification->estAdmin()) {
                 if (isset($this->variablesGet['archiRetourAffichage']) && isset($this->variablesGet['archiRetourIdName']) && isset($this->variablesGet['archiRetourIdValue'])) {
                     $t->assign_block_vars('isAdmin', array('urlAfficheHistorique' => $this->creerUrl('', 'afficheHistoriqueImage', array('archiIdImage' => $idImage, 'archiRetourAffichage' => $this->variablesGet['archiRetourAffichage'], 'archiRetourIdName' => $this->variablesGet['archiRetourIdName'], 'archiRetourIdValue' => $this->variablesGet['archiRetourIdValue']))));
                 } else {
                     $t->assign_block_vars('isAdmin', array('urlAfficheHistorique' => $this->creerUrl('', 'afficheHistoriqueImage', array('archiIdImage' => $idImage))));
                 }
             }
         }
         // gestion des liens vers le detail de la photo et autres formats
         if (isset($this->variablesGet["formatPhoto"])) {
             switch ($this->variablesGet["formatPhoto"]) {
                 case 'petit':
                     $classLienPetit = "formatAffichePhotoSelected";
                     $classLienMoyen = "formatAffichePhoto";
                     $classLienOriginal = "formatAffichePhoto";
                     $formatPhoto = "grand";
                     // petit correspond au format 'grand' en interne
                     $formatPhotoUrl = "petit";
                     break;
                 case 'moyenRedim':
                     $classLienPetit = "formatAffichePhoto";
                     $classLienMoyen = "formatAffichePhotoSelected";
                     $classLienOriginal = "formatAffichePhoto";
                     $formatPhoto = "moyenRedim";
                     $formatPhotoUrl = "moyenRedim";
                     break;
                 case 'original':
                     $classLienPetit = "formatAffichePhoto";
                     $classLienMoyen = "formatAffichePhoto";
                     $classLienOriginal = "formatAffichePhotoSelected";
                     $formatPhoto = "originaux";
                     $formatPhotoUrl = "original";
                     break;
             }
         } else {
             $classLienPetit = "formatAffichePhotoSelected";
             $classLienMoyen = "formatAffichePhoto";
             $classLienOriginal = "formatAffichePhoto";
             $formatPhoto = "grand";
             $formatPhotoUrl = "petit";
         }
         if (isset($this->variablesGet['archiRetourAffichage'])) {
             $t->assign_vars(array("choixFormatPhoto" => "<span style='color:#007799;'>Photo au format : <a href='" . $this->creerUrl('', 'imageDetail', array("archiIdImage" => $idImage, "archiRetourAffichage" => $this->variablesGet['archiRetourAffichage'], "archiRetourIdName" => $this->variablesGet['archiRetourIdName'], "archiRetourIdValue" => $this->variablesGet['archiRetourIdValue'], "formatPhoto" => 'petit')) . "' class='{$classLienPetit}'>Petit</a> | <a href='" . $this->creerUrl('', 'imageDetail', array("archiIdImage" => $idImage, "archiRetourAffichage" => $this->variablesGet['archiRetourAffichage'], "archiRetourIdName" => $this->variablesGet['archiRetourIdName'], "archiRetourIdValue" => $this->variablesGet['archiRetourIdValue'], "formatPhoto" => 'moyenRedim')) . "' class='{$classLienMoyen}'>Moyen</a> | <a href='" . $this->creerUrl('', 'imageDetail', array("archiIdImage" => $idImage, "archiRetourAffichage" => $this->variablesGet['archiRetourAffichage'], "archiRetourIdName" => $this->variablesGet['archiRetourIdName'], "archiRetourIdValue" => $this->variablesGet['archiRetourIdValue'], "formatPhoto" => 'original')) . "' class='{$classLienOriginal}'>Original</a></span><br />"));
         } else {
             $idAdresseRetour = $this->getIdAdresseFromIdImage($idImage);
             $t->assign_vars(array("choixFormatPhoto" => "<span style='color:#007799;'>Photo au format : <a href='" . $this->creerUrl('', 'imageDetail', array("archiIdImage" => $idImage, "archiRetourAffichage" => 'adresseDetail', "archiRetourIdName" => 'archiIdAdresse', "archiRetourIdValue" => $idAdresseRetour, "formatPhoto" => 'petit')) . "' class='{$classLienPetit}'>Petit</a> | <a href='" . $this->creerUrl('', 'imageDetail', array("archiIdImage" => $idImage, "archiRetourAffichage" => 'adresseDetail', "archiRetourIdName" => 'archiIdAdresse', "archiRetourIdValue" => $idAdresseRetour, "formatPhoto" => 'moyenRedim')) . "' class='{$classLienMoyen}'>Moyen</a> | <a href='" . $this->creerUrl('', 'imageDetail', array("archiIdImage" => $idImage, "archiRetourAffichage" => 'adresseDetail', "archiRetourIdName" => 'archiIdAdresse', "archiRetourIdValue" => $idAdresseRetour, "formatPhoto" => 'original')) . "' class='{$classLienOriginal}'>Original</a></span><br />"));
         }
         // ***********************************************************************************************************************
         // on prend l'adresse de reference de la page si elle existe sinon celle de l'evenement courant et sinon on prend l'adresse de reference de l'image
         if (isset($this->variablesGet['archiIdAdresse'])) {
             $idAdresseReference = $this->variablesGet['archiIdAdresse'];
         } elseif (isset($this->variablesGet['archiRetourIdName']) && $this->variablesGet['archiRetourIdName'] == 'idEvenement' && isset($this->variablesGet['archiRetourIdValue'])) {
             $idAdresseReference = $adresse->getIdAdresseFromIdEvenementGroupeAdresse($this->variablesGet['archiRetourIdValue']);
         } else {
             $idAdresseReference = $this->getIdAdresseFromIdImage($idImage);
         }
         // **********************************************************************************************************************
         $arrayInfosImage = $this->getInfosCompletesFromIdImage($idImage, array('idAdresseReference' => $idAdresseReference, 'displayFirstTitreAdresse' => true, 'classCSSTitreAdresse' => "textePrisDepuisVueSur", 'withZonesOnMouseOver' => true));
         if (count($arrayInfosImage['vueSurLiens']) > 0) {
             if (count($arrayInfosImage['vueSurLiens']) > 1) {
                 $t->assign_vars(array("infosVueSur" => "<span class='textePrisDepuisVueSurEntete'>Vue sur :</span>&nbsp;<br>" . implode("<br>", $arrayInfosImage['vueSurLiens']) . "<br>"));
             } else {
                 $t->assign_vars(array("infosVueSur" => "<span class='textePrisDepuisVueSurEntete'>Vue sur </span>&nbsp;" . implode(" / ", $arrayInfosImage['vueSurLiens']) . "<br>"));
             }
         }
         if (count($arrayInfosImage['prisDepuisLiens']) > 0) {
             $t->assign_vars(array("infosPrisDepuis" => "<br><span class='textePrisDepuisVueSurEntete'>Pris depuis</span>&nbsp; " . implode(" / ", $arrayInfosImage['prisDepuisLiens']) . "<br>"));
         }
         $e = new archiEvenement();
         if (archiPersonne::isPerson($e->getIdEvenementGroupeAdresseFromIdEvenement($_GET["archiRetourIdValue"]))) {
             $resImage = $this->connexionBdd->requete("SELECT * FROM `historiqueImage` WHERE `idImage` =" . $idImage . ' ORDER BY idHistoriqueImage DESC');
         } else {
             $resImage = $this->connexionBdd->requete("SELECT * FROM `historiqueImage` WHERE `idImage` = {$idImage}\n                    ORDER BY idHistoriqueImage DESC");
             /*$resImage = $this->connexionBdd->requete("
                             select hI.idSource,  hI.nom, hI.dateUpload, hI.dateCliche, hI.description, hI.idUtilisateur, hI.idHistoriqueImage, ha1.idAdresse as idAdresse, ha1.numero as numero,
                             hI.isDateClicheEnviron as isDateClicheEnviron,
                             r.nom as nomRue,
                             sq.nom as nomSousQuartier,
                             q.nom as nomQuartier,
                             v.nom as nomVille,
                             p.nom as nomPays,
                             ha1.numero as numeroAdresse,
                             hI.numeroArchive as numeroArchive,
                             ha1.idRue,
                             r.prefixe as prefixeRue,
                             IF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,
                             IF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,
                             IF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,
                             IF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays
             
                             from historiqueImage hI2, historiqueImage hI
             
                             RIGHT JOIN _evenementImage ei ON ei.idImage = hI.idImage
                             RIGHT JOIN _evenementEvenement ee ON ee.idEvenementAssocie = ei.idEvenement
                             RIGHT JOIN _adresseEvenement ae ON ae.idEvenement = ee.idEvenement
                             RIGHT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse
                             RIGHT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse
             
             
                             LEFT JOIN rue r         ON r.idRue = ha1.idRue
                             LEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )
                             LEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )
                             LEFT 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 )
                             LEFT 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 )
             
             
             
             
                             where hI.idImage='$idImage'
                             and hI2.idImage=hI.idImage
                             group by hI.idImage, hI.idHistoriqueImage, ha1.idAdresse,  ha1.idHistoriqueAdresse
                             having hI.idHistoriqueImage = max(hI2.idHistoriqueImage) and ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
                             LIMIT 1
                             ");*/
         }
         $fetch = mysql_fetch_array($resImage);
         /*
         stripslashes($fetch['nom'])
          $this->date->toFrench($fetch['dateCliche'])
         */
         $nomEtDateCliche = "";
         if (stripslashes($fetch['nom']) != '' && $this->date->toFrench($fetch['dateCliche']) != '') {
             $nomEtDateCliche = stripslashes($fetch['nom']) . ' - ' . $this->date->toFrench($fetch['dateCliche']);
         } else {
             $nomEtDateCLiche = stripslashes($fetch['nom']) . $this->date->toFrench($fetch['dateCliche']);
         }
         // on affiche les deux car on sait qu'il y en a un qui est vide,  donc pas de probleme
         $datePriseDeVue = "";
         if ($this->date->toFrench($fetch['dateCliche']) != '') {
             $environ = "";
             if ($fetch['isDateClicheEnviron'] == '1') {
                 $environ = "environ ";
             }
             $datePriseDeVue = "Date : {$environ}" . $this->date->toFrench($fetch['dateCliche']);
         }
         $description = $fetch['description'];
         $bbCode = new bbCodeObject();
         //$bbCode = new bbCodeObject();
         if (!empty($description)) {
             $description = $bbCode->convertToDisplay(array('text' => $description));
         }
         if (isset($fetch['idSource']) && $fetch['idSource'] != '' && $fetch['idSource'] != '0') {
             $reqSource = "\n                    SELECT s.idSource as idSource,  s.nom as nomSource,  ts.nom as nomTypeSource\n                    FROM source s\n                    LEFT JOIN typeSource ts ON ts.idTypeSource = s.idTypeSource\n                    WHERE s.idSource = '" . $fetch['idSource'] . "'";
             $resSource = $this->connexionBdd->requete($reqSource);
             $fetchSource = mysql_fetch_assoc($resSource);
             $description .= "<br>Source : <a href='" . $this->creerUrl('', 'listeAdressesFromSource', array('source' => $fetch['idSource'], 'submit' => 'Rechercher')) . "'>" . stripslashes($fetchSource['nomSource']) . " (" . stripslashes($fetchSource['nomTypeSource']) . ")</a>";
         }
         if (isset($fetch['numeroArchive']) && $fetch['numeroArchive'] != '') {
             // modif fabien du 15/04/2011 suite mail directrice Archives de Strasbourg Mme Perry Laurence
             $description .= "<br>Cote Archives de Strasbourg : " . $fetch['numeroArchive'];
         }
         $intituleAdresse = $adresse->getIntituleAdresse($fetch);
         $reqImages = "\n            SELECT idImage FROM _evenementImage WHERE idEvenement = " . mysql_real_escape_string($_GET['archiRetourIdValue']) . " ORDER BY position\n            ";
         $resImages = $this->connexionBdd->requete($reqImages);
         $found = false;
         while ($row = mysql_fetch_assoc($resImages)) {
             if (intval($row['idImage']) == $_GET['archiIdImage']) {
                 if (isset($prev)) {
                     $prevImage = $prev;
                     $t->assign_block_vars('previous', array());
                 }
                 $next = true;
             } else {
                 if (isset($next)) {
                     $nextImage = $row;
                     $t->assign_block_vars('next', array());
                     break;
                 }
             }
             $prev = $row;
         }
         $reqImages = "\n            SELECT idImage FROM _evenementImage  WHERE idEvenement = " . mysql_real_escape_string($_GET['archiRetourIdValue']) . " ORDER BY position\n            ";
         $resImages = $this->connexionBdd->requete($reqImages);
         $imgList = array();
         while ($row = mysql_fetch_row($resImages)) {
             $reqImage = '
             SELECT idHistoriqueImage, dateUpload, description, idImage
             FROM historiqueImage
             WHERE idImage = ' . mysql_real_escape_string($row[0]) . '
             ORDER BY idHistoriqueImage DESC
             LIMIT 1';
             $resImage = $this->connexionBdd->requete($reqImage);
             $imgList[] = mysql_fetch_row($resImage);
         }
         $intituleAdresseNoQuartierNoVille = $adresse->getIntituleAdresse($fetch, array('noQuartier' => true, 'noSousQuartier' => true, 'noVille' => true));
         $format = isset($_GET['formatPhoto']) ? $_GET['formatPhoto'] : 'petit';
         if ($u->canModifyTags(array('idUtilisateur' => $authentification->getIdUtilisateur()))) {
             $tags = 'Tags&nbsp;: ';
             if (empty($fetch["tags"])) {
                 $tags .= '<i>(aucun)</i>';
             } else {
                 $tags .= stripslashes($fetch["tags"]);
             }
         } else {
             $tags = '';
         }
         $t->assign_vars(array('datePriseDeVue' => $datePriseDeVue, 'cheminDetailImage' => 'photos-' . $string->convertStringToUrlRewrite($intituleAdresse) . '-' . $fetch['dateUpload'] . '-' . $fetch['idHistoriqueImage'] . '-' . $formatPhoto . '.jpg', 'nomEtDateCliche' => $nomEtDateCliche, 'tags' => $tags, 'description' => $description, 'fullscreenDesc' => strip_tags($description), 'nom' => $intituleAdresseNoQuartierNoVille, 'IDDivImage' => "divImage_" . $idImage, 'IDDivZones' => "divZones_" . $idImage, 'nextURL' => $this->creerUrl('', 'imageDetail', array('archiIdImage' => $nextImage['idImage'], 'archiRetourAffichage' => 'evenement', 'archiRetourIdName' => 'idEvenement', 'archiRetourIdValue' => $_GET['archiRetourIdValue'], "formatPhoto" => $format)), 'prevURL' => $this->creerUrl('', 'imageDetail', array('archiIdImage' => $prevImage['idImage'], 'archiRetourAffichage' => 'evenement', 'archiRetourIdName' => 'idEvenement', 'archiRetourIdValue' => $_GET['archiRetourIdValue'], "formatPhoto" => $format)), 'list' => rawurlencode(json_encode($imgList)), 'imgID' => rawurlencode(json_encode(array($fetch['idHistoriqueImage'], $fetch['idImage']))), 'imgDate' => $fetch['dateUpload'], 'orgId' => $fetch['idImage'], 'format' => $format));
         //$this->urlImagesGrand.$fetch['dateUpload'].'/'.$fetch['idHistoriqueImage'].".jpg"
         // si affichage du detail sans modification ,  on affiche les zones cliquables
         // pour la selection de zone modifiable
         // on ne l'affiche que si l'image figure dans la table _adresseImage et comporte des adresses sur lesquelles le champ vueSur est a 1
         if (count($arrayInfosImage['vueSurLiens']) > 0 && $authentification->estConnecte() && $u->isAuthorized('selection_zones_photo', $authentification->getIdUtilisateur())) {
             if ($u->getIdProfil($authentification->getIdUtilisateur()) == 4 || $u->isModerateurFromVille($authentification->getIdUtilisateur(), $idImage, 'idImage')) {
                 $styleMenuZoneSelection = "";
                 if (isset($this->variablesGet['archiSelectionZone']) && $this->variablesGet['archiSelectionZone'] == '1') {
                     // menu en rouge si on est sur la selection de zone
                     $styleMenuZoneSelection = "color:#FF0000;";
                 }
                 $t->assign_block_vars('selectionZonesCliquables', array('styleMenuZoneSelection' => $styleMenuZoneSelection, 'urlSelectionZone' => $this->creerUrl('', 'imageDetail', array('archiIdImage' => $idImage, 'archiRetourAffichage' => $this->variablesGet['archiRetourAffichage'], 'archiRetourIdName' => $this->variablesGet['archiRetourIdName'], 'archiRetourIdValue' => $this->variablesGet['archiRetourIdValue'], 'archiSelectionZone' => 1, 'formatPhoto' => $formatPhotoUrl))));
             }
         }
         $authentifie = new archiAuthentification();
         // gestion du lien de retour à la page précédente
         if (isset($this->variablesGet['archiRetourAffichage']) && isset($this->variablesGet['archiRetourIdName']) && isset($this->variablesGet['archiRetourIdValue'])) {
             //$t->assign_block_vars('isRetour',  array('urlRetour'=>$this->creerUrl('',  $this->variablesGet['archiRetourAffichage'],  array($this->variablesGet['archiRetourIdName']=>$this->variablesGet['archiRetourIdValue']))));
             // affichage de l'encars des adresses
             $idEvenementGroupeAdresse = $evenement->getIdEvenementGroupeAdresseFromIdEvenement($this->variablesGet['archiRetourIdValue']);
             if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                 $person = new archiPersonne();
                 $infos = $person->getInfosPersonne($idPerson);
                 $html .= "<h2 class='h1'><a href='" . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson)) . "'>" . $infos["prenom"] . " " . $infos["nom"] . "</a></h2>";
             } else {
                 $html .= $adresse->afficherRecapitulatifAdresses($idEvenementGroupeAdresse);
             }
             $t->assign_vars(array('urlModifierImage' => $this->creerUrl('', 'modifierImage', array('archiIdImageModification' => $idImage, 'archiIdEvenementGroupeAdresseAffichageAdresse' => $idEvenementGroupeAdresse))));
         } elseif (isset($idAdresseRetour) && $idAdresseRetour != '' && $idAdresseRetour != '0') {
             $resIdGroupeAdresse = $adresse->getIdEvenementGroupeAdresseFromAdresse($idAdresseRetour);
             $fetchIdGroupeAdresse = mysql_fetch_assoc($resIdGroupeAdresse);
             $html .= $adresse->afficherRecapitulatifAdresses($fetchIdGroupeAdresse['idEvenement']);
             $t->assign_vars(array('urlModifierImage' => $this->creerUrl('', 'modifierImage', array('archiIdImageModification' => $idImage, 'archiIdEvenementGroupeAdresseAffichageAdresse' => $fetchIdGroupeAdresse['idEvenement']))));
         } else {
             $t->assign_vars(array('urlModifierImage' => $this->creerUrl('', 'modifierImage', array('archiIdImageModification' => $idImage))));
         }
         // ***********************************************************************************************************************
         if (isset($this->variablesGet['archiRetourIdName']) && $this->variablesGet['archiRetourIdName'] == 'idEvenement' && isset($this->variablesGet['archiRetourIdValue'])) {
             $reqVerifZone = "\n                    SELECT 0\n                    FROM _adresseImage ai\n                    WHERE\n                        ai.idImage='" . $idImage . "'\n                    AND ai.idEvenementGroupeAdresse = '" . $this->variablesGet['archiRetourIdValue'] . "'\n                    AND vueSur='1'\n                    AND ai.coordonneesZoneImage<>''\n                    AND ai.largeurBaseZoneImage<>''\n                    AND ai.longueurBaseZoneImage<>''\n\n                ";
             $resVerifZone = $this->connexionBdd->requete($reqVerifZone);
             if (mysql_num_rows($resVerifZone) > 0) {
                 $imageZoom = $this->getUrlRacine() . "imageZoomZone.php?idImage=" . $idImage . "&idEvenementGroupeAdresse=" . $this->variablesGet['archiRetourIdValue'] . "&idAdresseCourante=" . $idAdresseReference . "&date=" . $fetch['dateUpload'] . "&idHistorique=" . $fetch['idHistoriqueImage'];
                 $t->assign_vars(array('imageZoom' => "<img src='{$imageZoom}' alt=''>"));
                 $t->assign_vars(array('txtZoom' => "<br>" . _("L'image ci-dessus est un zoom de l'image ci-dessous :")));
             }
         }
         $licence = $this->getLicence($idImage);
         $textLicence = "<img src='images/licences/" . $licence["logo"] . "' alt=''/> ";
         if (!empty($licence["link"])) {
             $textLicence .= "<a rel='license' href='" . $licence["link"] . "'>";
         }
         $textLicence .= $licence["name"];
         if (!empty($licence["link"])) {
             $textLicence .= "</a>";
         }
         $auteur = $this->getAuteur($idImage);
         if (is_array($auteur)) {
             if (!empty($auteur["nom"]) && $auteur["nom"] != " ") {
                 $textLicence .= " (<span itemprop='author'><a rel='author' href='profil-" . $auteur["id"] . ".html'>" . $auteur["nom"] . "</a></span>)";
             }
         } else {
             $textLicence .= " (<span itemprop='author'>" . $auteur . "</span>)";
         }
         $t->assign_vars(array("licence" => $textLicence));
         // ***********************************************************************************************************************
         ob_start();
         $t->pparse('detailImage');
         $html .= ob_get_contents();
         ob_end_clean();
         $image = new imageObject();
         $html .= $image->getJsSetOpacityFunction();
         $html .= $image->getJsCodeDrawFunctions();
         if (isset($this->variablesGet['archiSelectionZone']) && $this->variablesGet['archiSelectionZone'] == '1') {
             // recuperation des longueur et largeur de l'image affiché pour avoir le rapport de base entre ces deux dimensions,  comme cela on pourra reporter les zones sur les images d'autres longueurs et largeurs grace au taux calculé
             $calque = new calqueObject(array('idPopup' => 'popupSelectAdresseVueSurZone'));
             // calque de selection d'adresse une fois que la zone est selectionnee
             $html .= $calque->getDiv(array('height' => 300, 'lienSrcIFrame' => $this->creerUrl('', 'affichePopupSelectionZoneVueSur', array("noHeaderNoFooter" => '1', "archiIdImage" => $idImage)), "titre" => "Selectionnez l'adresse de la zone", "codeJsFermerButton" => "location.href=location.href;"));
             $html .= "<script  >" . $calque->getJsToDragADiv() . "</script>";
             // fonctions de trace,  obligatoire si on veut afficher les zones
             $html .= $image->getJsCodeSelectionZone(array('nomIDImage' => 'divImage', 'tracePolygoneResultat' => true, 'onZoneSelectedAction' => "\n                                        document.getElementById('" . $calque->getJSDivId() . "').style.display='block';\n                                        imageElement = document.getElementById('imageAfficheeID');\n                                        document.getElementById('largeurBaseImageZoneSelection').value=imageElement.clientWidth;\n                                        document.getElementById('longueurBaseImageZoneSelection').value=imageElement.clientHeight;\n                                ", 'addHTMLElementsToFormValidatedAfterZoneSelection' => "<input type='hidden' id='idAdresseRetourZone' name='idAdresseRetourZone' value=''>\n                                <input type='hidden' name='largeurBaseImageZoneSelection' id='largeurBaseImageZoneSelection' value=''>\n                                <input type='hidden' name='longueurBaseImageZoneSelection' id='longueurBaseImageZoneSelection' value=''>\n                                ", 'actionFormValidateZone' => $this->creerUrl('enregistreZoneImage', 'imageDetail', array('archiIdImage' => $idImage, 'archiRetourAffichage' => $this->variablesGet['archiRetourAffichage'], 'archiRetourIdName' => $this->variablesGet['archiRetourIdName'], 'archiRetourIdValue' => $this->variablesGet['archiRetourIdValue']))));
         }
         // affichage des zones existantes,  map sur l'image et divs des formes
         if ($formatPhoto == 'moyenRedim') {
             // vu que le format de la photo moyenRedim est generé a la volée,  il faut calculer les hauteurs et largeurs en fonction d'une autre photo. Ici on prendra le format grand c'est suffisamment precis pas besoin de prendre le format original
             // les photos redimensionnées ont une largeur X de 700px ,  voir le htaccess
             $sizes = getimagesize($this->getCheminPhysiqueImage("grand") . $fetch['dateUpload'] . "/" . $fetch['idHistoriqueImage'] . ".jpg");
             // on converti les dimensions
             $sizeX = 0;
             $sizeY = 0;
             if ($sizes[0] >= $sizes[1]) {
                 $sizeX = 700;
                 $sizeY = round(700 * $sizes[0] / $sizes[1]);
             } else {
                 $sizeY = 700;
                 $sizeX = round(700 * $sizes[1] / $sizes[0]);
             }
             $arrayZones = $this->getDivsAndMapsZonesImagesVueSur(array("idImage" => $idImage, 'largeurImageCourante' => $sizeX, 'longueurImageCourante' => $sizeY));
         } else {
             $sizes = getimagesize($this->getCheminPhysique() . "images/" . $formatPhoto . "/" . $fetch['dateUpload'] . "/" . $fetch['idHistoriqueImage'] . ".jpg");
             $arrayZones = $this->getDivsAndMapsZonesImagesVueSur(array("idImage" => $idImage, 'largeurImageCourante' => $sizes[0], 'longueurImageCourante' => $sizes[1]));
         }
         $html .= $arrayZones['htmlDivs'];
         $html .= $arrayZones['htmlMaps'];
         $html .= $arrayZones['htmlJs'];
     }
     return $html;
 }
<?php

/**
 * Supprimer une personne
 * 
 * PHP Version 5.3.3
 * 
 * @category General
 * @package  ArchiWiki
 * @author   Pierre Rudloff <*****@*****.**>
 * @license  GNU GPL v3 https://www.gnu.org/licenses/gpl.html
 * @link     http://archi-wiki.org/
 * 
 * */
require_once __DIR__ . '/../modules/archi/includes/archiPersonne.class.php';
$p = new ArchiPersonne($_GET["id"]);
if (isset($_POST['delete'])) {
    if ($p->supprimer()) {
        header('Location: index.php');
    }
}
echo _('Êtes-vous sûr de vouloir supprimer la personne') . ' <b>' . $p->prenom . ' ' . $p->nom . '</b>&nbsp;?<br/>';
echo '<form class="inline" action="personnalite-' . $p->nom . '_' . $p->prenom . '-' . $_GET["id"] . '.html"><input type="submit" value="' . _('Non') . '" /></form>';
echo '<form action="index.php?archiAffichage=deletePerson&id=' . $_GET["id"] . '" method="post" class="inline"><input type="hidden" name="delete" value="' . true . '"/><input type="submit" value="' . _('Oui') . '" /></form>';