* Choisir l'image principale d'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/
 * 
 * */
if (isset($_POST["image"])) {
    if (archiPersonne::setImage($_GET["id"], $_POST["image"])) {
        header("Location: " . $config->creerUrl("", "evenementListe", array("selection" => "personne", "id" => $_GET["id"])));
    }
}
$person = new archiPersonne();
$infos = $person->getInfosPersonne($_GET["id"]);
echo "<h2 class='h1'><a href='" . $config->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $_GET["id"])) . "'>" . $infos["prenom"] . " " . $infos["nom"] . "</a></h2>";
echo "<p>" . _("Cliquez sur une image pour la sélectionner.") . "</p>";
//Penser à prendre les images de tous les événements de l'adresse
$images = archiPersonne::getImages($_GET["id"]);
echo "<form method='POST' action='" . $config->creerUrl("", "choosePicturePerson", array("id" => $_GET["id"])) . "'>";
if (is_array($images)) {
    foreach ($images as $image) {
        echo "<button type='submit' name='image' value='" . $image->idImage . "'>\n        <img src='" . $config->getUrlImage("moyen") . $image->dateUpload . "/" . $image->idHistoriqueImage . ".jpg' alt='' />\n        </button>";
    }
} else {
    header("Location: " . $config->creerUrl("", "evenementListe", array("selection" => "personne", "id" => $_GET["id"])));
}
echo "</form>";
 /**
  * Affiche la liste des adresses suivant criteres et modeAffichage ,  modeAffichage permet de préciser ou sera affiché la liste (calque ou non,  et lieu du calque)
  * afin de changer le comportement des liens et limiter certains affichages,  non utiles dans la popup par exemple
  * cette fonction ,  permet maintenant aussi de renvoyer les resultats dans un tableau ,  sans forcement les affichers (utile dans la recherche ...)
  *
  * InPeople n'est pas responsable de cette fonction sortie des enfers
  *
  * @param array  $criteres      Critères
  * @param string $modeAffichage Mode d'affichage
  * @param array  $params        Paramètres
  *
  * @return array
  * */
 public function afficherListe($criteres = array(), $modeAffichage = '', $params = array())
 {
     $sqlId = '';
     $nbAdresses = 0;
     $arrayRetour = array();
     // tableau de renvoyé a la sortie de la fonction contenant les liens
     $arrayRetourLiensVoirBatiments = array();
     // tableau renvoyé a la sortie de la fonction contenant les liens "voir tous les batiments de la rue/quartier"
     $arrayIdAdressesRetour = array();
     // tableau renvoyé a la sortir de la fonction contenant la liste des idAdresses ,  permet d'economiser quelques requetes
     $arrayIdEvenementsGARetour = array();
     // tableau avec la liste des evenements de groupes d'adresses
     $tabParametresAutorises = array('ordre', 'tri', 'limit', 'archiIdEvenement', 'debut', 'selection', 'id', 'recherche_rue', 'recherche_quartier', 'recherche_ville', 'recherche_longitude', 'recherche_latitude', 'recherche_rayon', 'recherche_groupesAdressesFromAdresse', 'recherche_sousQuartier', 'displayAdresseIfNoCoordonneesGroupeAdresse');
     $sqlMotCle = "";
     $sqlSelectMotCle = "";
     $sqlOrderByPoidsMotCle = "";
     $sqlOrderBy = " ha1.date";
     foreach ($tabParametresAutorises as $param) {
         if (isset($this->variablesGet[$param]) and !isset($criteres[$param])) {
             $criteres[$param] = $this->variablesGet[$param];
         }
     }
     if (isset($criteres['recherche_groupesAdressesFromAdresse']) && $criteres['recherche_groupesAdressesFromAdresse'] != '') {
         $tabSqlWhere[] = ' AND ha1.idAdresse=' . $criteres['recherche_groupesAdressesFromAdresse'];
         if (isset($criteres['displayAdresseIfNoCoordonneesGroupeAdresse']) && $criteres['displayAdresseIfNoCoordonneesGroupeAdresse'] == 1) {
             $tabSqlWhere[] = " (ae.longitudeGroupeAdresse='0' AND ae.latitudeGroupeAdresse='0') ";
         }
     }
     $locationCriterias = '';
     $sqlWhere = $locationCriterias;
     $tabSqlWhere[] = $locationCriterias;
     $sqlAdressesSupplementaires = "";
     $tabidAdresses = array();
     $whereVillesModerees = "";
     if (!empty($criteres['recherche_motcle'])) {
         // recherche du mot cle dans les adresses
         $motcle = $criteres['recherche_motcle'];
         $motcle = Pia_eregreplace(", ", " ", $motcle);
         $motcle = Pia_eregreplace("\"", " ", $motcle);
         if ($modeAffichage == 'popupAjoutAdressesLieesSurEvenement') {
             // si on est en mode affichage popupAjoutAdressesLieesSurEvenement,  on est dans la popup de selection d'adresse pour lier un evenement a une ou plusieurs adresses
             // dans le cas d'un moderateur ,  il faut donc limiter sa recherche aux adresses de la ville qu'il administre
             $authentification = new archiAuthentification();
             $u = new archiUtilisateur();
             if ($authentification->estConnecte() && $u->isAuthorized('evenement_lier_adresses', $authentification->getIdUtilisateur())) {
                 if ($u->getIdProfil($authentification->getIdUtilisateur()) == 3) {
                     $arrayVillesModerees = $u->getArrayVillesModereesPar($authentification->getIdUtilisateur());
                     if (count($arrayVillesModerees) > 0) {
                         $whereVillesModerees = " AND v.idVille IN (" . implode(', ', $arrayVillesModerees) . ") ";
                     } else {
                         $whereVillesModerees = " AND v.idVille=0 ";
                         // si le moderateur n'a aucune ville en moderation on limite sa recherche a aucune ville
                     }
                 }
             }
         }
         $motcleEscaped = str_replace(' ', '%', $motcle);
         $motcleEscaped = mysql_real_escape_string($motcleEscaped);
         $motcleEntier = $motcle;
         $motcleEntierEscaped = str_replace("'", '', $motcleEntier);
         $motcleEntierEscaped = mysql_real_escape_string($motcleEntierEscaped);
         $motcleEntierEscaped = str_replace("\\", " ", $motcleEntierEscaped);
         $motcleEntierEscaped = "REGEXP \"[[:<:]]" . $motcleEntierEscaped . "[[:>:]]\"";
         $motcleAdresseEntiere = "REGEXP \"[[:<:]]" . str_replace(array("'", "\\"), array('', ''), $motcleEntier) . "[[:>:]]\"";
         $sqlMotCle = "\n\t\t\t\t\tAND\n\t\t\t\t\t(\n\t\t\t\t\tq.nom LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\tOR sq.nom LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\tOR v.nom LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\tOR p.nom LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\tOR r.nom LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\tOR he1.titre LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\tOR he1.description LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\tOR CONCAT_WS('', he1.titre, CONVERT(ha1.numero USING utf8), ind.nom, r.prefixe, r.nom, sq.nom,  q.nom,  v.nom,  p.nom) LIKE '%" . $motcleEscaped . "%'\n\t\t\t\t\tOR CONCAT_WS('', pers.nom, pers.prenom) LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\tOR CONCAT_WS('', pers.prenom, pers.nom) LIKE \"%" . $motcleEscaped . "%\"\n\t\t\t\t\t)";
         $sqlSelectMotCle = "";
         $sqlOrderBy = "(\n\t\t\tIF(r.nom LIKE \"%" . $motcle . "%\", 10000, 0)\n\t\t\t+ IF(sq.nom LIKE \"%" . $motcle . "%\", 10000, 0)\n\t\t\t+ IF(q.nom  LIKE \"%" . $motcle . "%\", 10000, 0)\n\t\t\t+ IF(v.nom  LIKE \"%" . $motcle . "%\", 10000, 0)\n\t\t\t+ IF(he1.titre LIKE \"%" . $motcle . "%\", 100, 0)\n\t\t\t+ IF(he1.description LIKE \"%" . $motcle . "%\", 10, 0)\n\t\t\t+ IF(he1.titre " . $motcleEntierEscaped . ", 2000000000000000000, 0)\n\t\t\t+ IF(he1.description " . $motcleEntierEscaped . ", 200000000000000000, 0)\n\t\t\t+ IF(ha1.idQuartier !=0 and ha1.idRue=0 and ha1.numero=0 and q.nom  LIKE \"%" . $motcle . "%\", 1000000000, 0)\n\t\t\t+ IF(ha1.numero=0 and CONCAT_WS('', r.prefixe, ' ', r.nom) " . $motcleAdresseEntiere . ", 1000000000000000000000000000, 0)\n\t\t\t+ IF(ha1.numero=0 and ha1.idRue=0 and ha1.idQuartier=0 and ha1.idSousQuartier=0 and v.nom LIKE \"%" . $motcle . "%\", 10000000000000000, 0)\n\t\t\t+ IF(CONCAT_WS('', CONVERT(ha1.numero USING utf8), ind.nom, r.prefixe, r.nom, sq.nom,  q.nom,  v.nom,  p.nom) LIKE '%" . $motcleEscaped . "%', 1000000000000000000000000000, 0)\n\t\t\t+ IF(CONCAT_WS('', CONVERT(ha1.numero USING utf8), ' ', r.prefixe, ' ', r.nom) " . $motcleAdresseEntiere . ", 1000000000000000000000000000, 0)\n\t\t\t+ IF(CONCAT_WS('', he1.titre, CONVERT(ha1.numero USING utf8), ' ', r.prefixe, ' ', r.nom) LIKE \"%" . $motcleEscaped . "%\", 2000000000000000000000000000, 0)\n\t\t\t+ IF(CONCAT_WS('', pers.nom, pers.prenom) LIKE \"%" . $motcleEscaped . "%\", 20000000000000000, 0)\n\t\t\t+ IF(CONCAT_WS('', pers.prenom, pers.nom) LIKE \"%" . $motcleEscaped . "%\", 20000000000000000, 0)\n\t\t\t)\n\t\t\t\t\t";
     }
     /*
      * Recherche dans les evenements
      */
     if (!isset($sqlWhere)) {
         $sqlWhere = '';
     }
     if (!isset($sqlJoin)) {
         $sqlJoin = '';
         // debug laurent
     }
     if (isset($criteres['recherche_courant']) && $criteres['recherche_courant'] != '') {
         $courant = implode("', '", $criteres['recherche_courant']);
         $sqlWhere .= ' AND _eCA.idCourantArchitectural IN (\'' . $courant . '\') ';
         $sqlJoin .= " LEFT JOIN _evenementCourantArchitectural _eCA ON _eCA.idEvenement = he1.idEvenement ";
     }
     if (isset($criteres['recherche_typeStructure']) && $criteres['recherche_typeStructure'] != '' && $criteres['recherche_typeStructure'] != '0') {
         $sqlWhere .= " AND he1.idTypeStructure='" . $criteres['recherche_typeStructure'] . "' ";
     }
     if (isset($criteres['recherche_typeEvenement']) && !empty($criteres['recherche_typeEvenement'])) {
         $sqlWhere .= " AND he1.idTypeEvenement='" . $criteres['recherche_typeEvenement'] . "' ";
     }
     if (isset($criteres['recherche_source']) && !empty($criteres['recherche_source'])) {
         $sqlWhere .= " AND he1.idSource='" . $criteres['recherche_source'] . "' ";
     }
     if (isset($criteres['recherche_personnes']) && !empty($criteres['recherche_personnes'])) {
         $personnes = implode("', '", $criteres['recherche_personnes']);
         $sqlWhere .= " AND _eP.idPersonne IN (\\'" . $personnes . "\\') ";
         $sqlJoin .= " LEFT JOIN _evenementPersonne _eP ON _eP.idEvenement = he1.idEvenement ";
     }
     if (isset($criteres['recherche_anneeDebut']) && $criteres['recherche_anneeDebut'] != '') {
         $sqlWhere .= " AND (extract(YEAR FROM he1.dateDebut)>='" . $criteres['recherche_anneeDebut'] . "') ";
     }
     if (isset($criteres['recherche_anneeFin']) && $criteres['recherche_anneeDebut'] != '') {
         $sqlWhere .= " AND (extract(YEAR FROM he1.dateDebut)<='" . $criteres['recherche_anneeFin'] . "') ";
     }
     if (isset($criteres['recherche_MH']) && $criteres['recherche_MH'] == '1' && isset($criteres['recherche_ISMH']) && $criteres['recherche_ISMH'] == '1') {
         // ATTENTION,  si les deux cases sont cochées ,  on fait un "OU" entre les deux champs pour le résultat de la recherche
         $sqlWhere .= " AND (he1.MH='1' OR he1.ISMH='1') ";
     } else {
         if (isset($criteres['recherche_MH']) && $criteres['recherche_MH'] == '1') {
             $sqlWhere .= " AND he1.MH='1' ";
         }
         if (isset($criteres['recherche_ISMH']) && $criteres['recherche_ISMH'] == '1') {
             $sqlWhere .= " AND he1.ISMH='1' ";
         }
     }
     // ************************************************************************************************************************************************
     $sqlSelectCoordonnees = "";
     // criteres concernant les coordonnées longitudes et latitude : recherche des adresses dans un rayon de n metres autour des coordonnées donnees en criteres
     if (isset($criteres['recherche_latitude']) && isset($criteres['recherche_longitude']) && isset($criteres['recherche_rayon']) && $criteres['recherche_latitude'] != '' && $criteres['recherche_longitude'] != '' && $criteres['recherche_rayon'] != '') {
         $sqlSelectCoordonnees = " AND ha1.latitude<>0 AND ha1.longitude<>0 AND ha1.latitude<>'' AND ha1.longitude<>'' AND ((acos(sin(" . $criteres['recherche_latitude'] . "*PI()/180) * sin(ha1.latitude*PI()/180) + cos(" . $criteres['recherche_latitude'] . "*PI()/180) * cos(ha1.latitude*PI()/180) * cos((" . $criteres['recherche_longitude'] . " - ha1.longitude)*PI()/180))/ pi() * 180.0)* 60 * 1.1515 * 1.609344)*1000<" . $criteres['recherche_rayon'] . " ";
     }
     // ****************************************************************************************************
     // ajout d'adresses pouvant provenir de la recherche avancee d'evenements
     // ****************************************************************************************************
     if (isset($criteres['adressesSupplementairesExternes'])) {
         $listeIdAdresses = implode("', '", array_unique(array_merge($tabidAdresses, $criteres['adressesSupplementairesExternes'])));
         $sqlAdressesSupplementaires = " AND ha1.idAdresse in ('" . $listeIdAdresses . "') ";
         $sqlOrderBy = " CAST(ha1.numero as signed) ASC,  1 ";
     }
     $sqlEvenementsGroupeAdressesSupplementaires = "";
     if (isset($criteres['groupesAdressesSupplementairesExternes'])) {
         $listeGroupesAdresses = implode("','", array_unique($criteres['groupesAdressesSupplementairesExternes']));
         $sqlEvenementsGroupeAdressesSupplementaires = "AND ee.idEvenement in ('" . $listeGroupesAdresses . "')";
         $sqlOrderBy = " CAST(ha1.numero as signed) ASC,  1 ";
     }
     if (!isset($criteres['ordre'])) {
         $sqlOrdre = 'nomRue';
     } else {
         switch ($criteres['ordre']) {
             case 'rue':
                 $sqlOrdre = 'nomRue';
                 break;
             case 'sousQuartier':
                 $sqlOrdre = 'nomSousQuartier';
                 break;
             case 'quartier':
                 $sqlOrdre = 'nomQuartier';
                 break;
             case 'ville':
                 $sqlOrdre = 'nomVille';
                 break;
             case 'pays':
                 $sqlOrdre = 'nomPays';
                 break;
             default:
                 $sqlOrdre = 'nomRue';
         }
     }
     if (isset($criteres['selection']) and is_numeric($criteres['id']) and $criteres['id'] > 0) {
         switch ($criteres['selection']) {
             case 'rue':
                 $tabSqlWhere[] = ' AND (ha1.idRue=' . $criteres['id'] . ' OR r.idRue=' . $criteres['id'] . ')';
                 break;
             case 'ville':
                 $tabSqlWhere[] = ' AND (ha1.idVille=' . $criteres['id'] . ' OR v.idVille=' . $criteres['id'] . ')';
                 break;
             case 'quartier':
                 $tabSqlWhere[] = ' AND (ha1.idQuartier=' . $criteres['id'] . ' OR q.idQuartier=' . $criteres['id'] . ')';
                 break;
             case 'sousQuartier':
                 $tabSqlWhere[] = ' AND (ha1.idSousQuartier=' . $criteres['id'] . ' OR sq.idSousQuartier=' . $criteres['id'] . ')';
                 break;
             case 'pays':
                 $tabSqlWhere[] = ' AND (ha1.idPays=' . $criteres['id'] . ' OR p.idPays=' . $criteres['id'] . ')';
                 break;
             default:
                 break;
         }
     }
     // si l'on precise un id evenement dans les criteres    (attention : idEvenement est de type GROUPE d'ADRESSES)
     if (!isset($sqlJoin)) {
         $sqlJoin = "";
     }
     $selectEvenement = "";
     if (isset($criteres['archiIdEvenement'])) {
         $tabSqlWhere[] = "  ae.idEvenement = '" . $criteres['archiIdEvenement'] . "'";
     } else {
         //  die(debug(debug_backtrace()));
         //debug($criteres);
     }
     if (!isset($sqlWhere)) {
         // debug laurent : je ne sais pas pourquoi cela n'a pas ete initialisé plus haut ,  a verifier
         $sqlWhere = '';
     }
     if (isset($tabSqlWhere)) {
         $prefix = '';
         foreach ($tabSqlWhere as $val) {
             $sqlWhere .= ' ' . $prefix . ' ' . $val;
             $prefix = 'AND';
         }
     }
     if (!isset($criteres['debut']) or !is_numeric($criteres['debut']) or $criteres['debut'] < 1) {
         $sqlLimit = '0,  10';
         $valDebutSuivant = 0;
         $valDebutPrecedent = 0;
         $criteres['debut'] = 0;
     } else {
         $sqlLimit = $criteres['debut'] . ',  10';
         if ($criteres['debut'] > 9) {
             $valDebutPrecedent = $criteres['debut'] - 10;
         } else {
             $valDebutPrecedent = 0;
         }
         $valDebutSuivant = $criteres['debut'];
     }
     // permet de rajouter une limite au retour de la requete principale ,  utilisé dans les modes ou l'on affiche pas le resultat ,  mais ou l'on recupere les idAdresses seulement dans le tableau de retour
     if (isset($params['sqlLimitExterne']) && $params['sqlLimitExterne'] != '') {
         $sqlLimit = " " . $params['sqlLimitExterne'] . " ";
     }
     if (isset($criteres['tri'])) {
         if ($criteres['tri'] == 'desc') {
             $sqlTri = 'DESC';
         } else {
             $sqlTri = 'ASC';
         }
     } else {
         $sqlTri = 'ASC';
     }
     // si une ville generale est precisé sinon c'est strasbourg
     if (isset($this->variablesGet['archiIdVilleGeneral']) && $this->variablesGet['archiIdVilleGeneral'] != '' && isset($this->variablesGet['archiIdPaysGeneral']) && $this->variablesGet['archiIdPaysGeneral'] != '') {
         $sqlWhere .= " AND v.idVille = '" . $this->variablesGet['archiIdVilleGeneral'] . "' AND p.idPays='" . $this->variablesGet['archiIdPaysGeneral'] . "' ";
     }
     if (isset($criteres['toutesLesDemolitions'])) {
         $arrayIdAdressesDemolitions = $this->getIdAdressesFromCriteres(array('whereSql' => "te.nom = 'Démolition'"));
         $sqlAdressesSupplementaires = " AND ha1.idAdresse in ('" . implode("', '", $arrayIdAdressesDemolitions) . "')";
         if (!isset($sqlWhere)) {
             $sqlWhere = "";
         }
     }
     if (isset($criteres['tousLesTravaux'])) {
         if (!isset($sqlWhere)) {
             $sqlWhere = "";
         }
         $arrayIdAdressesTravaux = $this->getIdAdressesFromCriteres(array('whereSql' => "(te.nom ='Construction' and EXTRACT(YEAR FROM he1.dateDebut)='" . date('Y') . "') or te.nom='Rénovation' or te.nom='Extension' or te.nom='Transformation' or te.nom='Ravalement'"));
         $sqlAdressesSupplementaires = " AND ha1.idAdresse in ('" . implode("', '", $arrayIdAdressesTravaux) . "')";
     }
     if (isset($criteres['tousLesEvenementsCulturels'])) {
         $arrayIdAdressesEvenements = $this->getIdAdressesFromCriteres(array('whereSql' => "te.groupe='1'"));
         $sqlAdressesSupplementaires = " AND ha1.idAdresse in ('" . implode("', '", $arrayIdAdressesEvenements) . "')";
         if (!isset($sqlWhere)) {
             $sqlWhere = "";
         }
     }
     $sqlSelectionExterne = "";
     if (isset($criteres['sqlSelectionExterne'])) {
         $sqlSelectionExterne = $criteres['sqlSelectionExterne'];
     }
     // bidouille pour que l'on affiche encore toutes les adresses en mode detail dans l'encars qui affiche la liste des adresses,  ce qui va faire que la requete ne renvoie des groupes d'adresses en double
     $critereSelectionIdAdressesModeAffichageListeAdressesCount = "";
     $critereSelectionIdAdressesModeAffichageListeAdressesRequete = "";
     if ($modeAffichage == 'listeDesAdressesDuGroupeAdressesSurDetailAdresse') {
         $critereSelectionIdAdressesModeAffichageListeAdressesCount = ",  ha1.idAdresse";
         $critereSelectionIdAdressesModeAffichageListeAdressesRequete = ",  ha1.idAdresse as idAdresse,  ha1.numero,  ha1.idQuartier,  ha1.idVille, ind.nom,\n\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\tha1.numero as numeroAdresse,\n\t\t\t\t\tha1.idRue,\n\t\t\t\t\tr.prefixe as prefixeRue,\n\t\t\t\t\tIF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,\n\t\t\t\t\tIF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,\n\t\t\t\t\tIF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,\n\t\t\t\t\tIF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays,\n\n\t\t\t\t\tha1.numero as numero,\n\t\t\t\t\tha1.idHistoriqueAdresse,\n\t\t\t\t\tha1.idIndicatif as idIndicatif";
     } else {
         //debug($modeAffichage);
     }
     /*
      * Getting number of results
      */
     $sqlCount = "\n\t\tSELECT distinct ee.idEvenement as idEvenementGroupeAdresse    {$critereSelectionIdAdressesModeAffichageListeAdressesCount}\n\n\t\tFROM historiqueAdresse ha2, historiqueAdresse ha1\n\n\t\tRIGHT JOIN _adresseEvenement ae ON ae.idAdresse = ha1.idAdresse\n\t\tRIGHT JOIN _evenementEvenement ee ON ee.idEvenement = ae.idEvenement\n\t\tRIGHT JOIN evenements he1 ON he1.idEvenement = ee.idEvenementAssocie\n\t\tRIGHT JOIN evenements he2 ON he2.idEvenement = he1.idEvenement\n\n\t\tLEFT JOIN rue r         ON r.idRue = ha1.idRue\n\t\tLEFT JOIN sousQuartier sq    ON sq.idSousQuartier = IF(ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )\n\t\tLEFT JOIN quartier q        ON q.idQuartier = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )\n\t\tLEFT JOIN ville v        ON v.idVille = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )\n\t\tLEFT JOIN pays p        ON p.idPays = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )\n\t\tLEFT JOIN _evenementPersonne ep ON ep.idEvenement = he1.idEvenement\n\t\tLEFT JOIN personne pers ON pers.idPersonne = ep.idPersonne\n\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n\t\t" . $sqlJoin . "\n\t\tWHERE\n\t\tha2.idAdresse = ha1.idAdresse\n\t\t" . $sqlWhere . " " . $sqlAdressesSupplementaires . " " . $sqlEvenementsGroupeAdressesSupplementaires . " " . $sqlSelectionExterne . " " . $sqlMotCle . "\n\t\t" . $sqlSelectCoordonnees . " " . $whereVillesModerees . "\n\t\tGROUP BY ha1.idAdresse,  he1.idEvenement, ha1.idHistoriqueAdresse\n\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t";
     if ($modeAffichage != "listeDesAdressesDuGroupeAdressesSurDetailAdresse") {
         $result = $this->connexionBdd->requete($sqlCount);
     }
     $nbReponses = mysql_num_rows($result);
     $nbResult = $nbReponses;
     if ($nbResult - $valDebutSuivant > 10) {
         $valDebutSuivant += 10;
     }
     $nbAdresses = $nbReponses;
     $sqlAdressesSupplementairesRechercheRelancee = "";
     // on a effectue une recherche par mot cle ,  mais pas de resultat,  on va donc voir si la recherche concerne une adresse precise et rechercher les numeros autour de cette adresse
     if ($nbAdresses == 0 && isset($criteres['recherche_motcle']) && $criteres['recherche_motcle'] != '' && !isset($this->variablesGet['relanceRecherche'])) {
         // si la recherche par mot cle n'a pas donné de resultat ,  on la relance avec seulement le nom de la rue sans l'eventuel numero d'adresse qui a pu etre ajouté par l'utilisateur
         $retourAdressesAutour = $this->getIdAdressesAutourAdressesCourante($criteres['recherche_motcle']);
         $sqlMotCle = $retourAdressesAutour['sqlMotCle'];
         $arrayAdressesProches = $retourAdressesAutour['arrayIdAdresses'];
         $sqlAdressesSupplementairesRechercheRelancee = " AND ha1.idAdresse in ('" . implode("', '", $arrayAdressesProches) . "') ";
         $nbAdresses = count($arrayAdressesProches);
         $nbResult = $nbAdresses;
         $nbReponses = $nbAdresses;
     }
     $t = new Template('modules/archi/templates/');
     if (!isset($criteres['useTemplateFile'])) {
         $t->set_filenames(array('listeAdresses' => 'listeAdresses.tpl'));
     } else {
         $t->set_filenames(array('listeAdresses' => $criteres['useTemplateFile']));
     }
     // gestion du titre de la liste des adresses
     if (!isset($criteres['cacheTitre'])) {
         if (isset($criteres['titre'])) {
             $t->assign_vars(array('titre' => $criteres['titre']));
         } else {
             if (isset($this->variablesGet['selection']) && $this->variablesGet['selection'] == 'personne' && isset($this->variablesGet['id']) && $this->variablesGet['id'] != '0') {
                 // on affiche un titre et une description
                 $personneObj = new archiPersonne();
                 $infosPersonne = $personneObj->getInfosPersonne($this->variablesGet['id']);
                 if (empty($infosPersonne['nom']) && empty($infosPersonne['prenom'])) {
                     http_response_code(404);
                     echo '<p>Erreur&nbsp;: Personne introuvable</p>';
                     return;
                 }
                 $titre = "";
                 if (isset($infosPersonne['nomMetier']) && $infosPersonne['nomMetier'] != "") {
                     $titre = "<span itemprop='jobTitle'>" . ucfirst(stripslashes($infosPersonne['nomMetier'])) . "</span> : ";
                 }
                 $titre .= "<span itemprop='name'><span itemprop='familyName'>" . ucwords(stripslashes($infosPersonne['nom'])) . "</span> <span itemprop='givenName'>" . ucwords(stripslashes($infosPersonne['prenom'])) . "</span></span>";
                 $description = "<div class='personHeader tableauResumeAdresse'>";
                 $authentification = new archiAuthentification();
                 if ($authentification->estConnecte()) {
                     $description .= "<ul style='float:right;'><li><a href='" . $this->creerUrl("", "editPerson", array("id" => $_GET["id"])) . "'>" . _("Modifier") . "</a></li>";
                     $description .= "<li><a href='" . $this->creerUrl("", "choosePicturePerson", array("id" => $_GET["id"])) . "'>" . _("Sélectionner l'image principale") . "</a></li>";
                     if ($authentification->estAdmin()) {
                         $description .= "<li><a href='" . $this->creerUrl("", "deletePerson", array("id" => $_GET["id"])) . "'>" . _("Supprimer") . "</a></li>";
                     }
                     $description .= '</ul>';
                 }
                 $description .= "<img src='" . archiPersonne::getImage($this->variablesGet['id']) . "' alt=''/>\n\t\t\t\t\t\t\t<div style='display:inline-block;'>";
                 if ($infosPersonne['dateNaissance'] != '0000-00-00') {
                     $description .= "<br>" . _("Date de naissance :") . " <span itemprop='birthDate'>" . $this->date->toFrench($infosPersonne['dateNaissance']) . "</span>";
                 }
                 if ($infosPersonne['dateDeces'] != '0000-00-00') {
                     $description .= "<br>" . _("Date de décès :") . " <span itemprop='deathDate'>" . $this->date->toFrench($infosPersonne['dateDeces']) . "</span>";
                 }
                 $description .= "</div><br/>";
                 $relatedPeople = archiPersonne::getRelatedPeople($this->variablesGet['id']);
                 if (!empty($relatedPeople)) {
                     $description .= "<div style='float:right;'>";
                     $description .= "<h3>Personnes liées :</h3>";
                     $description .= "<ul>";
                     foreach ($relatedPeople as $relatedPerson) {
                         $name = archiPersonne::getName($relatedPerson);
                         $description .= "<li><a href='" . $this->creerUrl("", "evenementListe", array("selection" => "personne", "id" => $relatedPerson)) . "'>" . $name->prenom . " " . $name->nom . "</a></li>";
                     }
                     $description .= "</ul></div>";
                 }
                 $description .= "<div style='clear:right;'></div>";
                 $description .= "</div><br/><br/>";
                 $e = new archiEvenement();
                 $reqEvent = "\n\t\t\t\t\t\t\tSELECT idEvenement\n\t\t\t\t\t\t\tFROM _personneEvenement\n\t\t\t\t\t\t\tWHERE idPersonne = '" . mysql_real_escape_string($this->variablesGet['id']) . "';";
                 $resEvent = $this->connexionBdd->requete($reqEvent);
                 if (mysql_num_rows($resEvent) > 0) {
                     $fetchEvent = mysql_fetch_assoc($resEvent);
                     $e = $e->afficher($fetchEvent["idEvenement"], "personne");
                     $description .= $e["html"];
                 }
                 $t->assign_vars(array('titre' => $titre, 'description' => $description, "divBegin" => "<div itemscope itemtype='http://schema.org/Person'>", "divEnd" => "</div>"));
             } elseif (isset($this->variablesGet['selection']) && $this->variablesGet['selection'] == 'source' && isset($this->variablesGet['id']) && $this->variablesGet['id'] != '') {
                 $sourceObj = new archiSource();
                 $bbCode = new bbCodeObject();
                 $resSource = $sourceObj->getMysqlResSource(array('sqlFields' => "s.nom as nomSource,  s.description as descriptionSource,  ts.nom as nomTypeSource", 'sqlWhere' => " AND s.idSource ='" . $this->variablesGet['id'] . "' "));
                 $fetchSource = mysql_fetch_assoc($resSource);
                 $titre = "Source : " . $fetchSource['nomSource'];
                 $description = "";
                 if ($fetchSource['nomTypeSource'] != '') {
                     $description .= "<b>Type de source : </b>" . $fetchSource['nomTypeSource'] . "<br><br>";
                 }
                 $description .= $fetchSource['descriptionSource'];
                 $t->assign_vars(array('titre' => $titre));
                 $t->assign_vars(array('description' => "<br>" . $bbCode->convertToDisplay(array('text' => $description)) . "<br><br><h2>Liste des événements concernés :</h2>"));
             } elseif (isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage'] == 'listeAdressesFromSource' && isset($this->variablesGet['source']) && $this->variablesGet['source'] != '') {
                 if (!isset($this->variablesGet['noDescription'])) {
                     $bbCode = new bbCodeObject();
                     $reqSource = "SELECT nom,  description FROM source WHERE idSource='" . $this->variablesGet['source'] . "'";
                     $resSource = $this->connexionBdd->requete($reqSource);
                     $fetchSource = mysql_fetch_assoc($resSource);
                     $t->assign_vars(array('titre' => 'Source : ' . stripslashes($fetchSource['nom'])));
                     $logoSource = "";
                     $colspan = "";
                     if (file_exists($this->getCheminPhysique() . "images/logosSources/" . $this->variablesGet['source'] . ".jpg")) {
                         $logoSource = "<td><a href='" . $this->creerUrl('', 'afficheGrandFormatSource', array("archiIdSource" => $this->variablesGet['source'])) . "'><img src='" . $this->getUrlImage() . "logosSources/" . $this->variablesGet['source'] . ".jpg' border=0></a></td>";
                         $colspan = "colspan=2";
                     }
                     $t->assign_vars(array('description' => "<table border=''><tr>{$logoSource}<td>" . $bbCode->convertToDisplay(array('text' => stripslashes($fetchSource['description']))) . "</td></tr><tr><td {$colspan}><b><div style='font-size:12px;'>Voici la liste des adresses auxquelles cette source est attachée</div></b></td></tr></table>"));
                 }
             } else {
                 $t->assign_vars(array('titre' => 'Adresses'));
             }
         }
     }
     // gestion de la pagination de la recherche
     switch ($modeAffichage) {
         case 'calqueImage':
             $urlPrecedent = '#';
             $urlPrecedentOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $valDebutPrecedent))) . "', 'resultatsAdresse')";
             $urlSuivant = '#';
             $urlSuivantOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $valDebutSuivant))) . "', 'resultatsAdresse')";
             break;
         case 'calqueImageChampsMultiples':
             $urlPrecedent = '#';
             $urlPrecedentOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $valDebutPrecedent))) . "', 'resultatsAdresse')";
             $urlSuivant = '#';
             $urlSuivantOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $valDebutSuivant))) . "', 'resultatsAdresse')";
             break;
         case 'calqueEvenement':
             $urlPrecedent = $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $valDebutPrecedent)));
             $urlPrecedentOnClick = "";
             $urlSuivant = $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $valDebutSuivant)));
             $urlSuivantOnClick = "";
             $tabTempo = array(array('url' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'nom'))), 'urlOnClick' => '', 'titre' => 'Titre', 'urlDesc' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'nom', 'tri' => 'desc'))), 'urlDescOnClick' => '', 'urlAsc' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'nom', 'tri' => 'asc'))), 'urlAscOnClick' => ''), array('url' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'image'))), 'urlOnClick' => '', 'titre' => 'Image', 'urlDesc' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'image', 'tri' => 'desc'))), 'urlDescOnClick' => '', 'urlAsc' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'image', 'tri' => 'asc'))), 'urlAscOnClick' => ''));
             break;
         default:
             $urlPrecedent = $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $valDebutPrecedent)));
             $urlPrecedentOnClick = "";
             $urlSuivant = $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $valDebutSuivant)));
             $urlSuivantOnClick = "";
             $tabTempo = array(array('url' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'nom'))), 'urlOnClick' => '', 'titre' => 'Titre', 'urlDesc' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'nom', 'tri' => 'desc'))), 'urlDescOnClick' => '', 'urlAsc' => $this->creerUrl('', '', array_merge($this->variablesGet, array('ordre' => 'nom', 'tri' => 'asc'))), 'urlAscOnClick' => ''));
     }
     if (!isset($_GET["selection"]) || $_GET["selection"] != "personne") {
         // on peut cacher l'affichage du nombre de reponses suivant l'affichage souhaité
         if (!isset($criteres['cacheNbReponses'])) {
             $nbReponses = $nbReponses . " " . ngettext("réponse", "réponses", $nbReponses);
         } else {
             $nbReponses = "";
         }
         $t->assign_block_vars('t', array('urlPrecedent' => $urlPrecedent, 'urlPrecedentOnClick' => $urlPrecedentOnClick, 'urlSuivant' => $urlSuivant, 'urlSuivantOnClick' => $urlSuivantOnClick, 'nbReponses' => $nbReponses));
         if (!isset($criteres['cacheEnteteTri'])) {
             for ($i = 0; $i < count($tabTempo); $i++) {
                 $t->assign_block_vars('t.liens', $tabTempo[$i]);
             }
         }
         if ($criteres['debut'] == 0 or $criteres['debut'] < 51) {
             $debutNav = 0;
             $finNav = 200;
         } else {
             $debutNav = $criteres['debut'] - 50;
             $finNav = $debutNav + 150;
         }
         for ($i = $debutNav; $i < $finNav; $i += 10) {
             if ($criteres['debut'] == $i - 10 && $nbReponses > 0) {
                 $t->assign_block_vars('t.nav.courant', array());
             }
             if ($nbReponses > $i) {
                 switch ($modeAffichage) {
                     case 'calqueImage':
                         $urlNbOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $i))) . "', 'resultatsAdresse');";
                         $urlNb = '#';
                         break;
                     case 'calqueEvenement':
                         $urlNbOnClick = '';
                         $urlNb = $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $i)));
                         break;
                     case 'calqueImageChampsMultiples':
                         $urlNbOnClick = '';
                         $urlNb = $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $i)));
                         break;
                     default:
                         $urlNbOnClick = '';
                         $urlNb = $this->creerUrl('', '', array_merge($this->variablesGet, array('debut' => $i)));
                 }
                 $t->assign_block_vars('t.nav', array('urlNbOnClick' => $urlNbOnClick, 'urlNb' => $urlNb, 'nb' => $i / 10 + 1));
             }
         }
         $sql = "\n\t\t\tSELECT DISTINCT ee.idEvenement as idEvenementGA {$critereSelectionIdAdressesModeAffichageListeAdressesRequete},\n\n\t\t\tr.nom as nomRue,\n\t\t\tsq.nom as nomSousQuartier,\n\t\t\tq.nom as nomQuartier,\n\t\t\tv.nom as nomVille,\n\t\t\tp.nom as nomPays,\n\t\t\tha1.numero as numeroAdresse,\n\t\t\tha1.idRue,\n\t\t\tr.prefixe as prefixeRue,\n\t\t\tIF (ha1.idSousQuartier != 0, ha1.idSousQuartier, r.idSousQuartier) AS idSousQuartier,\n\t\t\tIF (ha1.idQuartier != 0, ha1.idQuartier, sq.idQuartier) AS idQuartier,\n\t\t\tIF (ha1.idVille != 0, ha1.idVille, q.idVille) AS idVille,\n\t\t\tIF (ha1.idPays != 0, ha1.idPays, v.idPays) AS idPays,\n\n\t\t\tha1.numero as numero,\n\t\t\tha1.idHistoriqueAdresse,\n\t\t\tha1.idAdresse,\n\t\t\tha1.idIndicatif as idIndicatif\n\n\n\t\t\tFROM historiqueAdresse ha2, historiqueAdresse ha1\n\t\t\tLEFT JOIN rue r         ON r.idRue = ha1.idRue\n\t\t\tLEFT JOIN sousQuartier sq    ON sq.idSousQuartier = IF(ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )\n\t\t\tLEFT JOIN quartier q        ON q.idQuartier = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )\n\t\t\tLEFT JOIN ville v        ON v.idVille = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )\n\t\t\tLEFT JOIN pays p        ON p.idPays = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )\n\n\t\t\tLEFT JOIN _adresseEvenement ae ON ae.idAdresse = ha1.idAdresse\n\t\t\tLEFT JOIN _evenementEvenement ee ON ee.idEvenement = ae.idEvenement\n\t\t\tLEFT JOIN evenements he1 ON he1.idEvenement = ee.idEvenementAssocie\n\t\t\tLEFT JOIN evenements he2 ON he2.idEvenement = he1.idEvenement\n\n\t\t\tLEFT JOIN _evenementPersonne ep ON ep.idEvenement = he1.idEvenement\n\t\t\tLEFT JOIN personne pers ON pers.idPersonne = ep.idPersonne\n\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n\t\t\t" . $sqlJoin . "\n\n\n\t\t\tWHERE\n\t\t\tha2.idAdresse = ha1.idAdresse\n\n\t\t\t" . $sqlWhere . " " . $sqlAdressesSupplementaires . " " . $sqlEvenementsGroupeAdressesSupplementaires . " " . $sqlSelectionExterne . " " . $sqlMotCle . "\n\t\t\t" . $sqlSelectCoordonnees . " " . $sqlAdressesSupplementairesRechercheRelancee . " " . $whereVillesModerees . "\n\t\t\tAND ae.idAdresse IS NOT NULL\n\t\t\tGROUP BY ha1.idAdresse, he1.idEvenement, ha1.idHistoriqueAdresse\n\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\tORDER BY  " . $sqlOrderBy . "\n\t\t\tDESC,  CAST(ha1.numero as signed) ASC";
         if (!isset($params['sqlNoLimit']) || $params['sqlNoLimit'] == false) {
             $sql .= " LIMIT " . $sqlLimit . "\n\t\t\t\t\t\t";
         } else {
             debug($sql);
             die(debug(debug_backtrace()));
         }
         /*debug($sql);
         		debug(array(
         				"sqlWhere" => (!isset($sqlWhere) || $sqlWhere=="" || $sqlWhere==" "),
         				"sqlAdressesSupplementaires"=>(!isset($sqlAdressesSupplementaires) || $sqlAdressesSupplementaires=="" || $sqlAdressesSupplementaires==" "),
         				'sqlEvenementAddressesSupplementaire'=>(!isset($sqlEvenementsGroupeAdressesSupplementaires) || $sqlEvenementsGroupeAdressesSupplementaires=="" || $sqlEvenementsGroupeAdressesSupplementaires==" "),
         				'sqlSelectionExterne'=>(!isset($sqlSelectionExterne) || $sqlSelectionExterne=="" || $sqlSelectionExterne==" "),
         				'sqlMotCle'=>(!isset($sqlMotCle) || $sqlMotCle=="" || $sqlMotCle==" "),
         				'sqlSElectCoord'=>(!isset($sqlSelectCoordonnees) || $sqlSelectCoordonnees=="" || $sqlSelectCoordonnees==" "),
         				'sqlAddressSupplRechercheRelancee'=> (!isset($sqlAdressesSupplementairesRechercheRelancee) || $sqlAdressesSupplementairesRechercheRelancee=="" || $sqlAdressesSupplementairesRechercheRelancee==" "),
         				'whereVilleModerees' => (!isset($whereVillesModerees) || $whereVillesModerees=="" || $whereVillesModerees==" ")
         		));
         		*/
         if ((!isset($sqlWhere) || $sqlWhere == "" || $sqlWhere == " ") && (!isset($sqlAdressesSupplementaires) || $sqlAdressesSupplementaires == "" || $sqlAdressesSupplementaires == " ") && (!isset($sqlEvenementsGroupeAdressesSupplementaires) || $sqlEvenementsGroupeAdressesSupplementaires == "" || $sqlEvenementsGroupeAdressesSupplementaires == " ") && (!isset($sqlSelectionExterne) || $sqlSelectionExterne == "" || $sqlSelectionExterne == " ") && (!isset($sqlMotCle) || $sqlMotCle == "" || $sqlMotCle == " ") && (!isset($sqlSelectCoordonnees) || $sqlSelectCoordonnees == "" || $sqlSelectCoordonnees == " ") && (!isset($sqlAdressesSupplementairesRechercheRelancee) || $sqlAdressesSupplementairesRechercheRelancee == "" || $sqlAdressesSupplementairesRechercheRelancee == " ") && (!isset($whereVillesModerees) || $whereVillesModerees == "" || $whereVillesModerees == " ")) {
             die(debug(debug_backtrace()));
             /*
             	debug(array(
             		"sqlWhere" => $sqlWhere,
             		"sqlAdressesSupplementaires"=>$sqlAdressesSupplementaires,
             		'sqlEvenementAddressesSupplementaire'=>$sqlEvenementsGroupeAdressesSupplementaires,
             		'sqlSelectionExterne'=>$sqlSelectionExterne,
             		'sqlMotCle'=>$sqlMotCle,
             		'sqlSElectCoord'=>$sqlSelectCoordonnees,
             		'sqlAddressSupplRechercheRelancee'=> $sqlAdressesSupplementairesRechercheRelancee,
             		'whereVilleModerees' => $whereVillesModerees
             ));
             */
         }
         /*
         debug(array(
         		"sqlWhere" => $sqlWhere,
         		"sqlAdressesSupplementaires"=>$sqlAdressesSupplementaires,
         		'sqlEvenementAddressesSupplementaire'=>$sqlEvenementsGroupeAdressesSupplementaires,
         		'sqlSelectionExterne'=>$sqlSelectionExterne,
         		'sqlMotCle'=>$sqlMotCle,
         		'sqlSElectCoord'=>$sqlSelectCoordonnees,
         		'sqlAddressSupplRechercheRelancee'=> $sqlAdressesSupplementairesRechercheRelancee,
         		'whereVilleModerees' => $whereVillesModerees
         ));
         */
         // ***************************************************************************************************************************************
         // affichage des resultats de la recherche
         // ***************************************************************************************************************************************
         //debug($sql);
         $requeteAdresse = $this->connexionBdd->requete($sql);
         // dans le cas de la popup on ne veut pas afficher le detail d'une adresse
         // ceci arrive quand le resultat de la recherche ne renvoit qu'un resultat ,  par defaut on va sur l'evenement,  sauf pour les cas suivant:
         switch ($modeAffichage) {
             case 'popupAjoutAdressesLieesSurEvenement':
             case 'popupRechercheAdressePrisDepuis':
             case 'popupRechercheAdresseVueSur':
             case 'popupRechercheAdresseAdminParcours':
             case 'popupDeplacerEvenementVersGroupeAdresse':
             case 'personnalite':
                 $criteres['desactivateRedirection'] = true;
                 break;
             default:
                 break;
         }
         // dans le cas de la liste des adresses des sources (menu 'nos sources'),  on ne fait pas de redirection sur le detail s'il n'y a qu'une seule adresse
         if (isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage'] == 'listeAdressesFromSource') {
             $criteres['desactivateRedirection'] = true;
         }
         // si on utilise le template par defaut ,  c'est qu'on est dans un affichage de resultat de recherche ,  sinon c'est un affichage de detail d'adresse
         if (!isset($criteres['useTemplateFile']) && $nbReponses == 1 && !isset($criteres['desactivateRedirection'])) {
             $fetch = mysql_fetch_assoc($requeteAdresse);
             // s'il n'y a qu'un seul resultat a la recherche on redirige automatiquement vers le resultat
             // a voir pour ne pas utiliser le javascript et afficher directement avec la fonction afficherDetail
             $fetchIdAdresse = $this->getFetchOneAdresseElementsFromGroupeAdresse($fetch['idEvenementGA']);
             header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $fetchIdAdresse['idAdresse'], 'archiIdEvenementGroupeAdresse' => $fetch['idEvenementGA']), false, false));
         } else {
             if (mysql_num_rows($requeteAdresse) > 0) {
                 while ($fetch = mysql_fetch_assoc($requeteAdresse)) {
                     // on recupere un idAdresse,  idQuartier ,  idRue etc appartenant au groupe d'adresse pour l'urlRewriting
                     /*
                      * Desactivated for now because we are getting all the necessary fields in the previous request
                      */
                     // *******************************************************************************************************************
                     // recuperation de l'adresse
                     // *******************************************************************************************************************
                     // *******************************************************************************************************************
                     // titre de l'evenement ajouté derriere l'adresse
                     // on prend le premier titre qui n'est pas vide
                     // et on fabrique le lien avec l'ancre vers l'evenement qui pourra etre cliqué directement
                     // on a une adresse qui correspond a un groupe d'adresse ,  on va donc chercher le titre des evenements qui correspondent au groupe d'adresse
                     switch ($modeAffichage) {
                         case 'popupRechercheAdressePrisDepuis':
                         case 'popupRechercheAdresseVueSur':
                             // pas d'affichage des evenements dans le cas des popups sur la modification d'image
                             $titresEvenements = "";
                             break;
                         default:
                             // dans les autres cas on affiche les evenements
                             $titresEvenements = "";
                             $tabTitresEvenements = array();
                             $reqTitresEvenements = "\n\t\t\t\t\t\t\t\t\t\tSELECT he1.titre as titre ,  ae.idAdresse as idAdresse,  he1.idSource as idSource,  he1.numeroArchive as numeroArchive\n\t\t\t\t\t\t\t\t\t\tFROM evenements he1,  evenements he2\n\t\t\t\t\t\t\t\t\t\tRIGHT JOIN _evenementEvenement ee ON ee.idEvenement = " . $fetch['idEvenementGA'] . "\n\t\t\t\t\t\t\t\t\t\t\t\tRIGHT JOIN _adresseEvenement ae ON ae.idEvenement = ee.idEvenement\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE he2.idEvenement = he1.idEvenement\n\t\t\t\t\t\t\t\t\t\t\t\tAND he1.idEvenement = ee.idEvenementAssocie\n\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY he1.idEvenement\n\t\t\t\t\t\t\t\t\t\t\t\tORDER BY he1.dateDebut, he1.idEvenement\n\t\t\t\t\t\t\t\t\t\t\t\t";
                             $resTitresEvenements = $this->connexionBdd->requete($reqTitresEvenements);
                             $positionAncre = 0;
                             while ($fetchTitresEvenements = mysql_fetch_assoc($resTitresEvenements)) {
                                 if (trim($fetchTitresEvenements['titre']) != '') {
                                     $baliseDebutEvenementConcerne = "";
                                     $baliseFinEvenementConcerne = "";
                                     // si on est en mode affichage de la liste des sources sur menu "nos sources"
                                     if (isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage'] == 'listeAdressesFromSource' && isset($this->variablesGet['source']) && $fetchTitresEvenements['idSource'] == $this->variablesGet['source'] || $fetchTitresEvenements['idSource'] == 0 && $fetchTitresEvenements['numeroArchive'] != '' && isset($this->variablesGet['source']) && $this->variablesGet['source'] == 24) {
                                         $baliseDebutEvenementConcerne = "<b>";
                                         $baliseFinEvenementConcerne = "</b>";
                                     }
                                     $tabTitresEvenements[] = "<a href='" . $this->creerUrl('', '', array('archiIdAdresse' => $fetch['idAdresse'], 'archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $fetch['idEvenementGA'], 'debut' => '')) . "#" . $positionAncre . "'>" . $baliseDebutEvenementConcerne . stripslashes($fetchTitresEvenements['titre']) . $baliseFinEvenementConcerne . "</a>";
                                 }
                                 $positionAncre++;
                             }
                             $titresEvenements = implode(' - ', $tabTitresEvenements);
                             break;
                     }
                     // *******************************************************************************************************************
                     $stringObject = new stringObject();
                     // recherche de l'intitule de l'adresse
                     if (isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage'] != 'recherche') {
                         switch ($this->variablesGet['archiAffichage']) {
                             case 'listeAdressesFromRue':
                                 $nomAdresse = '';
                                 $nomAdresse = stripslashes($this->getIntituleAdresseFrom($fetch['idEvenementGA'], 'idEvenementGroupeAdresse', array('styleCSSAdresse' => "style='font-size:12px;'", 'displayFirstTitreAdresse' => true, 'isAfficheAdresseStyle' => true)));
                                 //$nomAdresse = stripslashes($this->getIntituleAdresse($fetch, array('styleCSSAdresse'=>"style='font-size:12px;'", 'displayFirstTitreAdresse'=>true, 'isAfficheAdresseStyle'=>true)));
                                 $nomAdresseNoStyle = stripslashes($this->getIntituleAdresseFrom($fetch['idEvenementGA'], 'idEvenementGroupeAdresse'));
                                 break;
                             default:
                                 $nomAdresse = '';
                                 $nomAdresse = stripslashes($this->getIntituleAdresse($fetch));
                                 $nomAdresseNoStyle = $nomAdresse;
                                 break;
                         }
                     } elseif (isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage'] == 'recherche') {
                         $nomAdresse = '';
                         $nomAdresse = stripslashes($this->getIntituleAdresseFrom($fetch['idEvenementGA'], 'idEvenementGroupeAdresse', array('styleCSSAdresse' => "style='font-size:12px;'", 'displayFirstTitreAdresse' => true, 'isAfficheAdresseStyle' => true)));
                         $nomAdresseNoStyle = stripslashes($this->getIntituleAdresseFrom($fetch['idEvenementGA'], 'idEvenementGroupeAdresse'));
                     } else {
                         $nomAdresse = '';
                         $nomAdresse = stripslashes($this->getIntituleAdresse($fetch));
                         $nomAdresseNoStyle = $nomAdresse;
                     }
                     // mise en place du lien de l'adresse suivant l'affichage ou l'on est
                     switch ($modeAffichage) {
                         case 'calqueImage':
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "document.getElementById(document.getElementById('paramChampsAppelantAdresse').value).value='" . $fetch['idAdresse'] . "';document.getElementById(document.getElementById('paramChampsAppelantAdresse').value+'txt').value='" . $nomAdresse . "';document.getElementById('calqueAdresse').style.display='none';";
                             break;
                         case 'calqueImageChampsMultiples':
                             // les liens renvoient la valeur dans un champ select et non pas dans un champ texte ,  mais la meme popup peut etre appelé plusieurs fois pour plusieurs champs differents du meme type
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "parent.document.getElementById(parent.document.getElementById('paramChampsAppelantAdresse').value).innerHTML+='<option selected=\\'selected\\' value=\\'" . $fetch['idAdresse'] . "\\'>" . addslashes($nomAdresse) . "</option>';";
                             $urlNomRue = '#';
                             $urlNomRueOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomSousQuartier = '#';
                             $urlNomSousQuartierOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomQuartier = '#';
                             $urlNomQuartierOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomVille = '#';
                             $urlNomVilleOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomPays = '#';
                             $urlNomPaysOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             break;
                         case 'calqueImageChampsMultiplesRetourSimple':
                             // les liens renvoient la valeur dans un champ texte et non pas dans une liste multiple ,  mais la meme popup peut etre appelé plusieurs fois pour plusieurs champs differents du meme type
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "parent.document.getElementById(parent.document.getElementById('paramChampsAppelantAdresse').value).value='" . $fetch['idAdresse'] . "'; parent.document.getElementById(parent.document.getElementById('paramChampsAppelantAdresse').value+'txt').value='" . addslashes($nomAdresse) . "';";
                             $urlNomRue = '#';
                             $urlNomRueOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomSousQuartier = '#';
                             $urlNomSousQuartierOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomQuartier = '#';
                             $urlNomQuartierOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomVille = '#';
                             $urlNomVilleOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomPays = '#';
                             $urlNomPaysOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             break;
                         case 'calqueEvenement':
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "parent.document.getElementById('adresses').innerHTML+='<option selected=\\'selected\\' value=\\'" . $fetch['idAdresse'] . "\\'>" . addslashes($nomAdresse) . "</option>';";
                             $urlNomRue = '#';
                             $urlNomRueOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomSousQuartier = '#';
                             $urlNomSousQuartierOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomQuartier = '#';
                             $urlNomQuartierOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomVille = '#';
                             $urlNomVilleOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             $urlNomPays = '#';
                             $urlNomPaysOnClick = "appelAjax('" . $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0))) . "', 'resultatsAdresse');";
                             break;
                         case 'popupRechercheAdressePrisDepuis':
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "parent.document.getElementById('listePrisDepuisDiv'+parent.document.getElementById('identifiantRetour').value).innerHTML+='" . str_replace(array("'", "\""), array("\\'", "&#34;"), $nomAdresse) . "<a  style=\\'cursor:pointer;\\' onclick=\\'retirerPrisDepuis(&#34;" . $fetch['idAdresse'] . "_" . $fetch['idEvenementGA'] . "&#34;, '+parent.document.getElementById('identifiantRetour').value+');\\'>(-)</a><br>';parent.document.getElementById('prisDepuis'+parent.document.getElementById('identifiantRetour').value).innerHTML+='<option value=\\'" . $fetch["idAdresse"] . "_" . $fetch['idEvenementGA'] . "\\' SELECTED>" . str_replace(array("'", "\""), array("\\'", "&#34;"), $nomAdresse) . "</option>';";
                             $urlNomRue = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0)));
                             $urlNomRueOnClick = '';
                             $urlNomSousQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0)));
                             $urlNomSousQuartierOnClick = '';
                             $urlNomQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0)));
                             $urlNomQuartierOnClick = '';
                             $urlNomVille = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0)));
                             $urlNomVilleOnClick = '';
                             $urlNomPays = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0)));
                             $urlNomPaysOnClick = '';
                             break;
                         case 'popupRechercheAdresseVueSur':
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "parent.document.getElementById('listeVueSurDiv'+parent.document.getElementById('identifiantRetour').value).innerHTML+='" . str_replace(array("'", "\""), array("\\'", "    &#34;"), $nomAdresse) . "<a style=\\'cursor:pointer;\\' onclick=\\' retirerVueSur(&#34;" . $fetch['idAdresse'] . "_" . $fetch['idEvenementGA'] . "&#34;, &#34;'+parent.document.getElementById('identifiantRetour').value+'&#34;); \\'>(-)</a><br>';\n\n\t\t\t\t\t\t\t\t\t\tparent.document.getElementById('vueSur'+parent.document.getElementById('identifiantRetour').value).innerHTML+='<option value=\\'" . $fetch['idAdresse'] . "_" . $fetch['idEvenementGA'] . "\\' SELECTED>" . str_replace(array("'", "\""), array("\\'", "&#34;"), $nomAdresse) . "</option>';";
                             $urlNomRue = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0)));
                             $urlNomRueOnClick = '';
                             $urlNomSousQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0)));
                             $urlNomSousQuartierOnClick = '';
                             $urlNomQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0)));
                             $urlNomQuartierOnClick = '';
                             $urlNomVille = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0)));
                             $urlNomVilleOnClick = '';
                             $urlNomPays = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0)));
                             $urlNomPaysOnClick = '';
                             break;
                         case "popupAjoutAdressesLieesSurEvenement":
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "parent.document.getElementById('listeGroupesAdressesLiees').innerHTML+='" . str_replace("'", "\\'", $nomAdresse) . "<a  style=\\'cursor:pointer\\' onclick=\\'retirerGroupeAdresse(" . $fetch['idEvenementGA'] . ");\\'>(-)</a><br>';parent.document.getElementById('listeIdGroupesAdressesLiees').innerHTML+='<option value=\\'" . $fetch["idEvenementGA"] . "\\' SELECTED>" . str_replace("'", "\\'", $nomAdresse) . "</option>';";
                             $urlNomRue = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0)));
                             $urlNomRueOnClick = '';
                             $urlNomSousQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0)));
                             $urlNomSousQuartierOnClick = '';
                             $urlNomQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0)));
                             $urlNomQuartierOnClick = '';
                             $urlNomVille = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0)));
                             $urlNomVilleOnClick = '';
                             $urlNomPays = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0)));
                             $urlNomPaysOnClick = '';
                             break;
                         case "popupDeplacerEvenementVersGroupeAdresse":
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "if (confirm('Etes vous sûr de vouloir deplacer cet événement ?')){parent.location.href='" . $this->creerUrl('deplacerEvenementVersGA', 'evenement', array('idEvenementADeplacer' => $this->variablesGet['idEvenementADeplacer'], 'deplacerVersIdGroupeAdresse' => $fetch['idEvenementGA'], 'idEvenement' => $this->variablesGet['idEvenementADeplacer'])) . "';}";
                             $urlNomRue = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0)));
                             $urlNomRueOnClick = '';
                             $urlNomSousQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0)));
                             $urlNomSousQuartierOnClick = '';
                             $urlNomQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0)));
                             $urlNomQuartierOnClick = '';
                             $urlNomVille = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0)));
                             $urlNomVilleOnClick = '';
                             $urlNomPays = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0)));
                             $urlNomPaysOnClick = '';
                             break;
                         case 'popupRechercheAdresseAdminParcours':
                             $urlDetailHref = "#";
                             $urlDetailOnClick = "parent.document.getElementById('libelleEvenementGroupeAdresse').value='" . str_replace("'", "\\'", $nomAdresseNoStyle) . "';parent.document.getElementById('idEvenementGroupeAdresse').value='" . $fetch['idEvenementGA'] . "';parent.document.getElementById('divpopupChoixAdresses').style.display='none';";
                             $urlNomRue = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0)));
                             $urlNomRueOnClick = '';
                             $urlNomSousQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0)));
                             $urlNomSousQuartierOnClick = '';
                             $urlNomQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0)));
                             $urlNomQuartierOnClick = '';
                             $urlNomVille = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0)));
                             $urlNomVilleOnClick = '';
                             $urlNomPays = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0)));
                             $urlNomPaysOnClick = '';
                             break;
                         default:
                             $criteresFiltres = array();
                             $urlDetailHref = $this->creerUrl('', '', array_merge($criteresFiltres, array('archiIdAdresse' => $fetch['idAdresse'], 'archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $fetch['idEvenementGA'], 'debut' => '')));
                             $urlDetailOnClick = '';
                             $urlNomRue = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'rue', 'id' => $fetch['idRue'], 'debut' => 0)));
                             $urlNomRueOnClick = '';
                             $urlNomSousQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'sousQuartier', 'id' => $fetch['idSousQuartier'], 'debut' => 0)));
                             $urlNomSousQuartierOnClick = '';
                             $urlNomQuartier = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'quartier', 'id' => $fetch['idQuartier'], 'debut' => 0)));
                             $urlNomQuartierOnClick = '';
                             $urlNomVille = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'ville', 'id' => $fetch['idVille'], 'debut' => 0)));
                             $urlNomVilleOnClick = '';
                             $urlNomPays = $this->creerUrl('', '', array_merge($this->variablesGet, array('selection' => 'pays', 'id' => $fetch['idPays'], 'debut' => 0)));
                             $urlNomPaysOnClick = '';
                             // patch laurent pour gerer l'affichage de la liste des dependances d'une source dans l'admin
                             if (isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage'] == 'listeAdressesFromSource' && isset($this->variablesGet['source']) && $this->variablesGet['source'] != '' && isset($this->variablesGet['modeAdmin']) && $this->variablesGet['modeAdmin'] == '1') {
                                 $urlDetailOnClick = "parent.document.location.href='" . $urlDetailHref . "'";
                                 $urlDetailHref = "#";
                             }
                             break;
                     }
                     // recuperation d'une image d'illustration pour l'affichage de l'adresse
                     // on s'etonnera peut etre de voir en parametre un groupe d'adresse ET un idAdresse ,  voir l'historique
                     $illustration = $this->getUrlImageFromAdresse($fetch['idAdresse'], 'mini', array('idEvenementGroupeAdresse' => $fetch['idEvenementGA']));
                     // si on est en mode d'affichage du detail d'une adresse,  on affiche le titre de l'evenement avant la liste des adresses concernées par le groupe d'adresse
                     $titreAdresse = "";
                     $styleAdresse = "";
                     if ($modeAffichage == 'listeDesAdressesDuGroupeAdressesSurDetailAdresse') {
                         $idAdresse = 0;
                         if (isset($criteres['archiIdEvenement'])) {
                             $reqAdresse = "\n\t\t\t\t\t                SELECT  distinct ae.idAdresse as idAdresse\n\t\t\t\t\t                FROM _adresseEvenement ae\n\t\t\t\t\t                WHERE ae.idEvenement = '" . $criteres['archiIdEvenement'] . "'\n        \t\t\t\t\t\t";
                             $resAdresse = $this->connexionBdd->requete($reqAdresse);
                             $fetchAdresse = mysql_fetch_assoc($resAdresse);
                             $idAdresse = $fetchAdresse['idAdresse'];
                             $e = new archiEvenement();
                             $idEvenementTitreAdresses = $e->getIdEvenementTitre(array("idEvenementGroupeAdresse" => $criteres['archiIdEvenement']));
                             if ($this->variablesGet['archiAffichage'] == 'modifierEvenement') {
                                 $idEvenementTitreAdresses = $this->variablesGet['archiIdEvenement'];
                             }
                             $reqTitreAdresse = "\n\t\t\t\t\t\t\t\t\t\tSELECT he1.titre as titre\n\t\t\t\t\t\t\t\t\t\tFROM evenements he2,  evenements he1\n\t\t\t\t\t\t\t\t\t\tWHERE he2.idEvenement = he1.idEvenement\n\t\t\t\t\t\t\t\t\t\tAND he1.idEvenement='" . $idEvenementTitreAdresses . "'\n\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY he1.idEvenement\n\t\t\t\t\t\t\t\t\t\t\t\t";
                             $resTitreAdresse = $this->connexionBdd->requete($reqTitreAdresse);
                             $fetchTitreAdresse = mysql_fetch_assoc($resTitreAdresse);
                             $titreAdresse = stripslashes($fetchTitreAdresse['titre']);
                             $t->assign_vars(array('titreAdresses' => $titreAdresse . "<br>"));
                             if ($idEvenementTitreAdresses != 0 && $titreAdresse != '') {
                                 $styleAdresse = "font-size:13px;";
                             }
                         } elseif (isset($this->variablesGet['archiIdEvenement'])) {
                             $reqAdresse = $this->getIdAdressesFromIdEvenement(array('idEvenement' => $this->variablesGet['archiIdEvenement']));
                             $resAdresse = $this->connexionBdd->requete($reqAdresse);
                             $fetchAdresse = mysql_fetch_assoc($resAdresse);
                             $idAdresse = $fetchAdresse['idAdresse'];
                             $e = new archiEvenement();
                             $idEvenementTitreAdresses = $e->getIdEvenementTitre(array("idEvenementGroupeAdresse" => $this->variablesGet['archiIdEvenement']));
                             $reqTitreAdresse = "\n\t\t\t\t\t\t\t\t\t\tSELECT he1.titre as titre\n\t\t\t\t\t\t\t\t\t\tFROM evenements he2,  evenements he1\n\t\t\t\t\t\t\t\t\t\tWHERE he2.idEvenement = he1.idEvenement\n\t\t\t\t\t\t\t\t\t\tAND he1.idEvenement='" . $idEvenementTitreAdresses . "'\n\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY he1.idEvenement\n\t\t\t\t\t\t\t\t\t\t\t\t";
                             $resTitreAdresse = $this->connexionBdd->requete($reqTitreAdresse);
                             $fetchTitreAdresse = mysql_fetch_assoc($resTitreAdresse);
                             $titreAdresse = stripslashes($fetchTitreAdresse['titre']);
                             $t->assign_vars(array('titreAdresses' => $titreAdresse . "<br>"));
                             if ($idEvenementTitreAdresses != 0 && $titreAdresse != '') {
                                 $styleAdresse = "font-size:13px;";
                             }
                         } elseif (isset($this->variablesGet['archiIdAdresse'])) {
                             $idAdresse = $this->variablesGet['archiIdAdresse'];
                             $e = new archiEvenement();
                             $resGroupeAdresses = $this->getIdEvenementGroupeAdresseFromAdresse($idAdresse);
                             $fetchGroupeAdresses = mysql_fetch_assoc($resGroupeAdresses);
                             $idEvenementTitreAdresses = $e->getIdEvenementTitre(array("idEvenementGroupeAdresse" => $fetchGroupeAdresses['idEvenement']));
                             $reqTitreAdresse = "\n\t\t\t\t\t\t\t\t\t\tSELECT he1.titre as titre\n\t\t\t\t\t\t\t\t\t\tFROM evenements he2,  evenements he1\n\t\t\t\t\t\t\t\t\t\tWHERE he2.idEvenement = he1.idEvenement\n\t\t\t\t\t\t\t\t\t\tAND he1.idEvenement='" . $idEvenementTitreAdresses . "'\n\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY he1.idEvenement\n\t\t\t\t\t\t\t\t\t\t\t\t";
                             $resTitreAdresse = $this->connexionBdd->requete($reqTitreAdresse);
                             $fetchTitreAdresse = mysql_fetch_assoc($resTitreAdresse);
                             $titreAdresse = stripslashes($fetchTitreAdresse['titre']);
                             $t->assign_vars(array('titreAdresses' => $titreAdresse . "<br>"));
                             if ($idEvenementTitreAdresses != 0 && $titreAdresse != '') {
                                 $styleAdresse = "font-size:13px;";
                             }
                         }
                     }
                     // a la suite de titresEvenements je rajoutes les images qui concerne la source courante quand on est en mode listeAdressesFromSource
                     if (isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage'] == 'listeAdressesFromSource' && isset($this->variablesGet['source']) && $this->variablesGet['source'] != '') {
                         $reqImagesSource = "\n\t\t\t\t\t\t\t\t\tSELECT hi1.idHistoriqueImage as idHistoriqueImage,  hi1.dateUpload as dateUpload, hi1.idImage as idImage,  ee.idEvenementAssocie as idEvenementAssocie\n\t\t\t\t\t\t\t\t\tFROM historiqueImage hi2,  historiqueImage hi1\n\t\t\t\t\t\t\t\t\tLEFT JOIN _evenementEvenement ee ON ee.idEvenement = '" . $fetch['idEvenementGA'] . "'\n\t\t\t\t\t\t\t\t\t\t\tLEFT JOIN _evenementImage ei ON ei.idEvenement = ee.idEvenementAssocie\n\t\t\t\t\t\t\t\t\t\t\tWHERE hi2.idImage = hi1.idImage\n\t\t\t\t\t\t\t\t\t\t\tAND hi1.idSource = '" . $this->variablesGet['source'] . "'\n\t\t\t\t\t\t\t\t\t\t\t\t\tAND hi1.idImage = ei.idImage\n\t\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY hi1.idImage,  hi1.idHistoriqueImage\n\t\t\t\t\t\t\t\t\t\t\t\t\tHAVING hi1.idHistoriqueImage = max(hi2.idHistoriqueImage)\n\t\t\t\t\t\t\t\t\t\t\t\t\t";
                         $resImagesSource = $this->connexionBdd->requete($reqImagesSource);
                         if (mysql_num_rows($resImagesSource) > 0) {
                             $idAdresseSource = $this->getIdAdresseFromIdEvenementGroupeAdresse($fetch['idEvenementGA']);
                             if ($titresEvenements != "") {
                                 $titresEvenements .= "<br>";
                             }
                             while ($fetchImagesSource = mysql_fetch_assoc($resImagesSource)) {
                                 $lienDetailImageSource = $this->creerUrl('', 'imageDetail', array('archiRetourAffichage' => 'evenement', 'archiRetourIdName' => 'idEvenement', 'archiIdImage' => $fetchImagesSource['idImage'], 'archiIdAdresse' => $idAdresseSource, 'archiRetourIdValue' => $fetchImagesSource['idEvenementAssocie']));
                                 // ancien code avec l'extension '.jpg' qui buggait (pas d'affichage de miniature)
                                 //$titresEvenements.="<div style='float:left;padding-right:5px;'><a href='".$lienDetailImageSource."'><img src='".$this->getUrlImage("mini").$fetchImagesSource['dateUpload'].'/'.$fetchImagesSource['idHistoriqueImage']."'.jpg'' border=0></a></div>";
                                 // debug fabien du 20/12/2011
                                 $titresEvenements .= "<div style='float:left;padding-right:5px;'><a href='" . $lienDetailImageSource . "'><img src='" . $this->getUrlImage("mini") . $fetchImagesSource['dateUpload'] . '/' . $fetchImagesSource['idHistoriqueImage'] . ".jpg'" . " border=0></a></div>";
                             }
                             $titresEvenements .= "<div style='clear:both;'></div>";
                         }
                     }
                     $t->assign_block_vars('t.adresses', array('styleAdresses' => $styleAdresse, 'nom' => $nomAdresse, 'titresEvenements' => $titresEvenements, 'nomRue' => $fetch['nomRue'], 'nomSousQuartier' => $fetch['nomSousQuartier'], 'nomQuartier' => $fetch['nomQuartier'], 'nomVille' => $fetch['nomVille'], 'nomPays' => $fetch['nomPays'], 'urlNomRue' => $urlNomRue, 'urlNomRueOnClick' => $urlNomRueOnClick, 'urlNomSousQuartier' => $urlNomSousQuartier, 'urlNomSousQuartierOnClick' => $urlNomSousQuartierOnClick, 'urlNomQuartier' => $urlNomQuartier, 'urlNomQuartierOnClick' => $urlNomQuartierOnClick, 'urlNomVille' => $urlNomVille, 'urlNomVilleOnClick' => $urlNomVilleOnClick, 'urlNomPays' => $urlNomPays, 'urlNomPaysOnClick' => $urlNomPaysOnClick, 'urlDetailHref' => $urlDetailHref, 'urlDetailOnClick' => $urlDetailOnClick, 'urlImageIllustration' => 'resizeImage.php?id=' . $illustration['idHistoriqueImage'], 'alt' => ''));
                     $arrayRetour[] = "<a href='" . $this->creerUrl('', '', array('archiIdAdresse' => $fetch['idAdresse'], 'archiAffichage' => 'adresseDetail', 'debut' => '')) . "'>" . $nomAdresse . "</a>";
                     $arrayIdAdressesRetour[] = $fetch['idAdresse'];
                     $arrayIdEvenementsGARetour[] = $fetch['idEvenementGA'];
                     // **********************************************************************************************************************************************
                     // lien vers la liste des adresses relatives a l'adresse courante:
                     // **********************************************************************************************************************************************
                     $arrayRetourLiensVoirBatiments = $this->getArrayRetourLiensVoirBatiments($fetch['idAdresse']);
                     // **********************************************************************************************************************************************
                     // recherche des images liées a l'adresse et uniquement les images de la table de liaison _adresseImage
                     // **********************************************************************************************************************************************
                     $reqImageLiees = "    SELECT hi.idImage as idImage, hi.idHistoriqueImage as idHistoriqueImage, hi.dateUpload as dateUpload\n\t\t\t\t\t\t\t\tFROM historiqueImage hi2 ,  historiqueImage hi\n\t\t\t\t\t\t\t\tRIGHT JOIN _adresseImage ai ON hi.idImage = ai.idImage\n\t\t\t\t\t\t\t\tWHERE hi2.idImage = hi.idImage\n\t\t\t\t\t\t\t\tAND ai.idAdresse = '" . $fetch['idAdresse'] . "'\n\t\t\t\t\t\t\t\t\t\tGROUP BY hi.idImage, hi.idHistoriqueImage\n\t\t\t\t\t\t\t\t\t\tHAVING hi.idHistoriqueImage = max(hi2.idHistoriqueImage)\n\t\t\t\t\t\t\t\t\t\t";
                     $resImagesLiees = $this->connexionBdd->requete($reqImageLiees);
                     if (count($resImagesLiees) > 0) {
                         $t->assign_block_vars('t.adresses.isImagesLiees', array());
                     }
                     while ($fetchImagesLiees = mysql_fetch_assoc($resImagesLiees)) {
                         // on affiche l'image liee a l'adresse seulement si elle est différente de l'image d'illustration
                         //if ($fetchImagesLiees['idHistoriqueImage'] != $illustration['idHistoriqueImage'])
                         //{
                         $t->assign_block_vars('t.adresses.isImagesLiees.images', array('url' => $this->getUrlImage("mini") . $fetchImagesLiees['dateUpload'] . '/' . $fetchImagesLiees['idHistoriqueImage'] . '.jpg'));
                         //}
                     }
                     // **********************************************************************************************************************************************
                     $idDerniereAdresse = $fetch['idAdresse'];
                 }
             }
         }
     }
     ob_start();
     $t->pparse('listeAdresses');
     $html = ob_get_contents();
     ob_end_clean();
     return array('html' => $html, 'nbAdresses' => $nbAdresses, 'arrayLiens' => $arrayRetour, 'arrayIdAdresses' => $arrayIdAdressesRetour, 'arrayIdEvenementsGroupeAdresse' => $arrayIdEvenementsGARetour, 'arrayRetourLiensVoirBatiments' => $arrayRetourLiensVoirBatiments);
 }
 public function afficherFormulaireModification($id = 0, $type = '', $arrayListeIdImages = array())
 {
     $html = "";
     $utilisateur = new archiUtilisateur();
     $authentification = new archiAuthentification();
     //echo "afficherFormulaireModification : id=".$id." type=".$type;
     $arrayModifUrlParams = array();
     echo "<script>\n\n            function retirerPrisDepuis(idAdresseValue, identifiantUniqueRetour) {\n                document.getElementById('listePrisDepuisDiv'+identifiantUniqueRetour).innerHTML='';\n\n                if (idAdresseValue!=0)\n                {\n                    selectField = document.getElementById('prisDepuis'+identifiantUniqueRetour);\n                    divField = document.getElementById('listePrisDepuisDiv'+identifiantUniqueRetour);\n                    for(i=0 ; i<selectField.options.length; i++ ) {\n                        if (selectField.options[i]!=null) {\n                            if (selectField.options[i].value==idAdresseValue)\n                            {\n                                indiceARetirer = i;\n                            }\n                            else\n                            {\n                                divField.innerHTML+=selectField.options[i].innerHTML+'<a href=\\'#\\' style=\\'cursor:pointer;\\' onclick=\"retirerPrisDepuis(\\''+selectField.options[i].value+'\\',  '+identifiantUniqueRetour+')\">(-)</a><br>';\n                            }\n                        }\n                    }\n\n                    selectField.options[indiceARetirer]=null;\n                }\n\n            }\n\n\n            function retirerVueSur(idAdresseValue, identifiantUniqueRetour) {\n                document.getElementById('listeVueSurDiv'+identifiantUniqueRetour).innerHTML='';\n\n                if (idAdresseValue!=0)\n                {\n                    selectField = document.getElementById('vueSur'+identifiantUniqueRetour);\n                    divField = document.getElementById('listeVueSurDiv'+identifiantUniqueRetour);\n                    for(i=0 ; i<selectField.options.length; i++ ) {\n                        if (selectField.options[i]!=null) {\n                            if (selectField.options[i].value==idAdresseValue)\n                            {\n                                indiceARetirer = i;\n                            }\n                            else\n                            {\n                                divField.innerHTML+=selectField.options[i].innerHTML+'<a href=\\'#\\' style=\\'cursor:pointer;\\' onclick=\\\"retirerVueSur(\\''+selectField.options[i].value+'\\',  '+identifiantUniqueRetour+')\\\">(-)</a><br>';\n                            }\n                        }\n                    }\n\n                    selectField.options[indiceARetirer]=null;\n                }\n\n            }\n            </script>\n        ";
     $t = new Template('modules/archi/templates/');
     $t->set_filenames(array('imageFormModif' => 'imageFormulaire.tpl'));
     /******
      ** Source - récupration
      **/
     $sqlSource = 'SELECT idSource,  nom,  idTypeSource FROM source';
     $tabSource = array();
     if ($result = $this->connexionBdd->requete($sqlSource)) {
         while ($rep = mysql_fetch_object($result)) {
             $tabSource[$rep->idSource] = $rep->nom;
         }
     }
     switch ($type) {
         case 'adresse':
             break;
         case 'evenement':
             // recherche des images liées a l'evenement
             $arrayListeIdImages = array();
             if (isset($this->variablesGet['archiIdEvenement']) && $this->variablesGet['archiIdEvenement'] != '0' && $this->variablesGet['archiIdEvenement'] != '') {
                 $evenement = new archiEvenement();
                 $adresse = new archiAdresse();
                 // affichages des recapitulatifs en haut de la page ( adresse + titres des evenements)
                 $idEvenementGroupeAdresse = $evenement->getParent($this->variablesGet['archiIdEvenement']);
                 $idEvenementCourant = $this->variablesGet['archiIdEvenement'];
                 if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                     $person = new archiPersonne();
                     $infos = $person->getInfosPersonne($idPerson);
                     $t->assign_vars(array('recapitulatifAdresses' => "<h2 class='h1'><a href='" . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson)) . "'>" . $infos["prenom"] . " " . $infos["nom"] . "</a></h2>"));
                 } else {
                     $t->assign_vars(array("recapitulatifAdresses" => $adresse->afficherRecapitulatifAdresses($idEvenementGroupeAdresse)));
                 }
                 $t->assign_vars(array("recapitulatifHistoriqueEvenements" => $evenement->afficherRecapitulatifAncres($idEvenementGroupeAdresse, $idEvenementCourant)));
                 $t->assign_vars(array("liensModifEvenements" => $evenement->afficherLiensModificationEvenement($idEvenementCourant)));
                 $reqEvenement = "SELECT distinct idImage from _evenementImage WHERE idEvenement ='" . $this->variablesGet['archiIdEvenement'] . "' ORDER BY position";
                 $resEvenement = $this->connexionBdd->requete($reqEvenement);
                 while ($fetchEvenement = mysql_fetch_assoc($resEvenement)) {
                     $arrayListeIdImages[] = $fetchEvenement['idImage'];
                 }
             }
             break;
         default:
             if (count($arrayListeIdImages) == 1) {
                 $evenement = new archiEvenement();
                 $adresse = new archiAdresse();
                 if (isset($this->variablesGet['archiIdEvenementGroupeAdresseAffichageAdresse']) && $this->variablesGet['archiIdEvenementGroupeAdresseAffichageAdresse'] != '') {
                     $idEvenementGroupeAdresse = $this->variablesGet['archiIdEvenementGroupeAdresseAffichageAdresse'];
                     $arrayModifUrlParams = array('archiIdEvenementGroupeAdresseAffichageAdresse' => $this->variablesGet['archiIdEvenementGroupeAdresseAffichageAdresse']);
                 } else {
                     $idEvenementImageUnique = $this->getArrayIdEvenementFromIdImage($arrayListeIdImages[0]);
                     $idEvenementGroupeAdresse = $evenement->getParent($idEvenementImageUnique);
                 }
                 if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                     $person = new archiPersonne();
                     $infos = $person->getInfosPersonne($idPerson);
                     $t->assign_vars(array('recapitulatifAdresses' => "<h2 class='h1'><a href='" . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson)) . "'>" . $infos["prenom"] . " " . $infos["nom"] . "</a></h2>"));
                 } else {
                     $t->assign_vars(array("recapitulatifAdresses" => $adresse->afficherRecapitulatifAdresses($idEvenementGroupeAdresse)));
                 }
             }
             break;
     }
     //echo "afficherFormulaireModification $type";
     // cas ou le ne precise pas de idCourant ni de type de liaison ( la photo n'est ni liee a un evenement ni une adresse)
     // on modifie une liste d'images
     // *****************************************************************************************************************************************************************
     if (count($arrayListeIdImages) > 0) {
         $t->assign_block_vars('isImages', array());
         $listeIdImagesAModifier = implode("',  '", $arrayListeIdImages);
         $requeteImages = "\n                SELECT\n                    hi1.idHistoriqueImage as idHistoriqueImage, hi1.idImage as idImage, hi1.nom as nom,\n                    hi1.dateUpload as dateUpload, hi1.dateCliche as dateCliche, hi1.description as description, hi1.tags as tags,\n                    hi1.idUtilisateur as idUtilisateur, u.nom as nomUtilisateur,  u.prenom as prenomUtilisateur,\n                    hi1.idSource as idSource,  hi1.isDateClicheEnviron as isDateClicheEnviron,\n                    hi1.numeroArchive as numeroArchive,\n                    if (_ai.idImage IS NULL,  0, 1) as isAdresseImage,\n                    if (_ei.idImage IS NULL,  0, 1) as isEvenementImage,\n\n                    _ai.seSitue as seSitue,\n                    _ai.prisDepuis as prisDepuis,\n                    _ai.etage as etage,\n                    _ai.hauteur as hauteur,\n                    _ai.idAdresse as idAdresse,\n                    _ei.idEvenement as idEvenement\n\n                FROM historiqueImage hi2, historiqueImage hi1\n                LEFT JOIN _evenementImage _ei ON _ei.idImage = hi1.idImage\n                LEFT JOIN _adresseImage _ai ON _ai.idImage = hi1.idImage\n                LEFT JOIN utilisateur u ON u.idUtilisateur = hi1.idUtilisateur\n\n                WHERE hi2.idImage = hi1.idImage\n                AND hi1.idImage IN ('" . $listeIdImagesAModifier . "')\n                GROUP BY hi1.idImage, hi1.idHistoriqueImage\n                HAVING hi1.idHistoriqueImage = max(hi2.idHistoriqueImage)\n\n            ";
         $resImage = $this->connexionBdd->requete($requeteImages);
         $i = 0;
         $nomUtilisateur = "";
         $prenomUtilisateur = "";
         $listeId = array();
         $adresseObject = new archiAdresse();
         // ********************************************************************************************************************************************
         // boucle sur les images
         // ********************************************************************************************************************************************
         while ($fetch = mysql_fetch_array($resImage)) {
             if ($i == 0) {
                 $nomUtilisateur = $fetch["nomUtilisateur"];
                 $prenomUtilisateur = $fetch["prenomUtilisateur"];
             }
             $dateCliche = "";
             if ($this->date->toFrench($fetch['dateCliche']) == '00/00/0000') {
                 $dateCliche = "";
             } else {
                 $dateCliche = $this->date->toFrench($fetch['dateCliche']);
             }
             // ***********************************************************
             // GESTION AFFICHAGE ADRESSES CHAMPS MULTIPLES
             // gestion de l'affichage des adresses de chaque photo
             //$arrayGereAffichage = $this->gereAffichageAdresses($fetch['idHistoriqueImage'],  $fetch['idImage'],  'modif');
             // ***********************************************************
             //$nbAdressesAffichees = $arrayGereAffichage['nbAdressesAffichees'];
             $adresseObject = new archiAdresse();
             $stringObject = new stringObject();
             // adresses prisDepuis
             $reqPrisDepuis = "SELECT idImage, idAdresse, idEvenementGroupeAdresse FROM _adresseImage WHERE idImage='" . $fetch['idImage'] . "' AND prisDepuis='1'";
             $resPrisDepuis = $this->connexionBdd->requete($reqPrisDepuis);
             $selectPrisDepuisHTML = "";
             $divPrisDepuisHTML = "";
             while ($fetchPrisDepuis = mysql_fetch_assoc($resPrisDepuis)) {
                 if ($fetchPrisDepuis['idEvenementGroupeAdresse'] != '0') {
                     $nomAdresse = $adresseObject->getIntituleAdresseFrom($fetchPrisDepuis['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('ifTitreAfficheTitreSeulement' => true));
                 } else {
                     $nomAdresse = $adresseObject->getIntituleAdresseFrom($fetchPrisDepuis['idAdresse'], 'idAdresse');
                 }
                 $selectPrisDepuisHTML .= "<option value='" . $fetchPrisDepuis['idAdresse'] . "_" . $fetchPrisDepuis['idEvenementGroupeAdresse'] . "' SELECTED>" . $nomAdresse . "</option>";
                 $divPrisDepuisHTML .= $nomAdresse . "<a onclick=\"retirerPrisDepuis('" . $fetchPrisDepuis['idAdresse'] . "_" . $fetchPrisDepuis['idEvenementGroupeAdresse'] . "',  " . $fetch['idHistoriqueImage'] . ");\" style='cursor:pointer;'>(-)</a><br>";
             }
             // adresses vueSur
             $reqVueSur = "SELECT idImage, idAdresse, idEvenementGroupeAdresse FROM _adresseImage WHERE idImage='" . $fetch['idImage'] . "' AND vueSur='1'";
             $resVueSur = $this->connexionBdd->requete($reqVueSur);
             $selectVueSurHTML = "";
             $divVueSurHTML = "";
             while ($fetchVueSur = mysql_fetch_assoc($resVueSur)) {
                 if ($fetchVueSur['idEvenementGroupeAdresse'] != '0') {
                     $nomAdresse = $adresseObject->getIntituleAdresseFrom($fetchVueSur['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('ifTitreAfficheTitreSeulement' => true));
                 } else {
                     $nomAdresse = $adresseObject->getIntituleAdresseFrom($fetchVueSur['idAdresse'], 'idAdresse');
                 }
                 $selectVueSurHTML .= "<option value='" . $fetchVueSur['idAdresse'] . "_" . $fetchVueSur['idEvenementGroupeAdresse'] . "' SELECTED>" . $nomAdresse . "</option>";
                 $divVueSurHTML .= $nomAdresse . "<a onclick=\"retirerVueSur('" . $fetchVueSur['idAdresse'] . "_" . $fetchVueSur['idEvenementGroupeAdresse'] . "',  " . $fetch['idHistoriqueImage'] . ");\" style='cursor:pointer;'>(-)</a><br>";
             }
             // ***********************************************************
             // RECUPERATION DES SOURCES
             // on recupere le nom de la source
             // ***********************************************************
             $reqSource = "\n                            select s.idSource as idSource, s.nom as nom,  ts.nom as nomTS ,  if (ts.nom<>'', concat('(', ts.nom,  ')'),  '')as nomTypeSource\n                            from source s\n                            left join typeSource ts ON ts.idTypeSource = s.idTypeSource\n                            where idSource = '" . $fetch['idSource'] . "'";
             $resSource = $this->connexionBdd->requete($reqSource);
             $fetchSource = mysql_fetch_assoc($resSource);
             // ***********************************************************
             // ***********************************************************
             // recuperation des données POST,  avec par defaut les valeurs de la base de données
             // ***********************************************************
             $checkIsDateClicheEnviron = 0;
             if ($fetch['isDateClicheEnviron'] == 1) {
                 $checkIsDateClicheEnviron = 1;
             }
             $tabForm = array('nom_' . $fetch['idHistoriqueImage'] => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetch['nom']), 'description_' . $fetch['idHistoriqueImage'] => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetch['description']), 'dateUpload_' . $fetch['idHistoriqueImage'] => array('type' => 'date', 'required' => false, 'value' => '', 'default' => $this->date->toFrench($fetch['dateUpload'])), 'dateCliche_' . $fetch['idHistoriqueImage'] => array('type' => 'date', 'required' => false, 'value' => '', 'default' => $this->date->toFrench($fetch['dateCliche'])), 'isDateClicheEnviron_' . $fetch['idHistoriqueImage'] => array('type' => 'checkbox', 'required' => false, 'value' => '', 'default' => $checkIsDateClicheEnviron), 'source' . $fetch['idHistoriqueImage'] => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetch['idSource']), 'source' . $fetch['idHistoriqueImage'] . 'txt' => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetchSource['nom'] . ' ' . $fetchSource['nomTypeSource'] . ''), 'numeroArchive_' . $fetch['idHistoriqueImage'] => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetch['numeroArchive']));
             $formulaire = new formGenerator();
             // appel de la fonction recuperant les valeurs du formulaire
             $errors = $formulaire->getArrayFromPost($tabForm);
             // ***********************************************************
             // ***********************************************************
             // assignation des champs de l'adresse
             // ***********************************************************
             $popupPrisDepuis = new calqueObject(array('idPopup' => 'popupPrisDepuis' . $fetch['idHistoriqueImage']));
             $popupVueSur = new calqueObject(array('idPopup' => 'popupVueSur' . $fetch['idHistoriqueImage']));
             $checkIsDateClicheEnviron = '';
             if ($tabForm['isDateClicheEnviron_' . $fetch['idHistoriqueImage']]['value'] == '1') {
                 $checkIsDateClicheEnviron = 'checked';
             }
             $auteur = $this->getAuteur($fetch['idImage']);
             if (is_array($auteur)) {
                 $nomUpload = $auteur["nom"];
                 $nomAuteur = "";
             } else {
                 $nomAuteur = $auteur;
                 $nomUpload = "";
             }
             $licence = $this->getLicence($fetch['idImage']);
             $idUtilisateur = $authentification->getIdUtilisateur();
             $utilisateur = new ArchiUtilisateur();
             if ($licence["id"] == 3 && !$utilisateur->isAuthorized('admin_licences', $idUtilisateur) && !$utilisateur->canCopyright(array('idUtilisateur' => $idUtilisateur))) {
                 $selectLicenceHTML = "<span title='" . htmlspecialchars(_("Seul l'auteur peut changer la licence de cette image."), ENT_QUOTES) . "'>" . $licence["name"] . "</span>";
                 $enableAuthor = "disabled='disabled'";
             } else {
                 $enableAuthor = "";
                 $reqLicence = $this->connexionBdd->requete("SELECT * FROM licences");
                 $selectLicenceHTML = "";
                 while ($fetchLicence = mysql_fetch_assoc($reqLicence)) {
                     if ($fetchLicence["id"] != 3 || $utilisateur->isAuthorized('admin_licences', $idUtilisateur) || $utilisateur->canCopyright(array('idUtilisateur' => $idUtilisateur))) {
                         $selectLicenceHTML .= "<input type='radio' value='" . $fetchLicence["id"] . "' id='licence_" . $fetchLicence["id"] . "' name='licence_" . $fetch['idHistoriqueImage'] . "'";
                         if ($fetchLicence["id"] == $licence["id"]) {
                             $selectLicenceHTML .= " checked='checked' ";
                         }
                         $selectLicenceHTML .= "/>";
                         $selectLicenceHTML .= "<label title='" . htmlspecialchars($fetchLicence["description"], ENT_QUOTES) . "' for='licence_" . $fetchLicence["id"] . "'>";
                         if (!empty($fetchLicence["link"])) {
                             $selectLicenceHTML .= "<a href='" . $fetchLicence["link"] . "'>";
                         }
                         $selectLicenceHTML .= $fetchLicence["name"];
                         if (!empty($fetchLicence["link"])) {
                             $selectLicenceHTML .= "</a>";
                         }
                         $selectLicenceHTML .= "</label>";
                     }
                 }
             }
             $t->assign_block_vars('listePhotos', array('onClickPopupPrisDepuis' => "document.getElementById('" . $popupPrisDepuis->getJSDivId() . "').style.top=(getScrollHeight()+70)+'px';" . $popupPrisDepuis->getJSOpenPopup($fetch['idHistoriqueImage']) . "document.getElementById('" . $popupPrisDepuis->getJSIFrameId() . "').src='" . $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdressePrisDepuis')) . "';", 'popupPrisDepuis' => $popupPrisDepuis->getDiv(array('lienSrcIFrame' => $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdressePrisDepuis')), 'width' => 750, 'height' => 500, 'left' => 10, 'top' => 70, 'titre' => 'archi-strasbourg.org : Pris Depuis')), 'selectPrisDepuis' => $selectPrisDepuisHTML, 'listePrisDepuisDiv' => $divPrisDepuisHTML, 'onClickPopupVueSur' => "document.getElementById('" . $popupVueSur->getJSDivId() . "').style.top=(getScrollHeight()+70)+'px';" . $popupVueSur->getJSOpenPopup($fetch['idHistoriqueImage']) . "document.getElementById('" . $popupVueSur->getJSIFrameId() . "').src='" . $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdresseVueSur')) . "';", 'popupVueSur' => $popupVueSur->getDiv(array('lienSrcIFrame' => $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdresseVueSur')), 'width' => 750, 'height' => 500, 'left' => 10, 'top' => 70, 'titre' => 'archi-strasbourg.org : Vue Sur')), 'selectVueSur' => $selectVueSurHTML, 'listeVueSurDiv' => $divVueSurHTML, 'urlImage' => $this->getUrlImage("grand") . '/' . $fetch['dateUpload'] . '/' . $fetch['idHistoriqueImage'] . '.jpg', 'nom' => $tabForm['nom_' . $fetch['idHistoriqueImage']]['value'], 'description' => stripslashes($tabForm['description_' . $fetch['idHistoriqueImage']]['value']), 'idHistoriqueImage' => $fetch['idHistoriqueImage'], 'dateUpload' => $tabForm['dateUpload_' . $fetch['idHistoriqueImage']]['value'], 'dateCliche' => $tabForm['dateCliche_' . $fetch['idHistoriqueImage']]['value'], 'numeroArchive' => $tabForm['numeroArchive_' . $fetch['idHistoriqueImage']]['value'], 'checkIsDateClicheEnviron' => $checkIsDateClicheEnviron, 'idImage' => $fetch['idImage'], 'adresseUrl' => '#', 'adresseOnClick' => "document.getElementById('calqueAdresse').style.display='block';document.getElementById('paramChampsAppelantAdresse').value='listeAdresses_" . $fetch['idHistoriqueImage'] . "';", 'evenementUrl' => '#', 'evenementOnClick' => "document.getElementById('calqueEvenement').style.display='block';document.getElementById('paramChampsAppelantEvenement').value='listeEvenements_" . $fetch['idHistoriqueImage'] . "';", 'onClickBoutonAjouterAdresse' => "document.getElementById('modifImage').action='" . $this->creerUrl('', 'modifierImageMultiple') . "'", 'onClickBoutonEnleverAdresse' => "document.getElementById('modifImage').action='" . $this->creerUrl('', 'modifierImageMultiple') . "'", 'onClickBoutonChoixVille' => "document.getElementById('calqueVille').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueVille').style.display='block';document.getElementById('paramChampAppelantVille').value='ville" . $fetch['idHistoriqueImage'] . "';document.getElementById('paramChampVilleIdentifiantUnique').value='" . $fetch['idHistoriqueImage'] . "'", 'onChangeListeQuartier' => "appelAjax('" . $this->creerUrl('', 'afficheSelectSousQuartier', array('noHeaderNoFooter' => 1, 'identifiantUnique' => $fetch['idHistoriqueImage'])) . "&archiIdQuartier='+document.getElementById('quartiers" . $fetch['idHistoriqueImage'] . "').value,  'listeSousQuartier" . $fetch['idHistoriqueImage'] . "')", 'onClickBoutonChoixSource' => "document.getElementById('calqueSource').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueSource').style.display='block';document.getElementById('paramChampsAppelantSource').value='source_" . $fetch['idHistoriqueImage'] . "';", 'onClickDateCliche' => "document.getElementById('paramChampAppelantDate').value='dateCliche_" . $fetch['idHistoriqueImage'] . "';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDate').style.display='block';", 'idSource' => $tabForm['source' . $fetch['idHistoriqueImage']]['value'], 'nomSource' => $tabForm['source' . $fetch['idHistoriqueImage'] . 'txt']['value'], "nomAuteur" => $nomAuteur, "nomUpload" => $nomUpload, "tags" => $fetch['tags'], "selectLicence" => $selectLicenceHTML, "enableAuthor" => $enableAuthor));
             if ($utilisateur->canChangeNumeroArchiveField(array('idUtilisateur' => $authentification->getIdUtilisateur()))) {
                 $t->assign_block_vars('listePhotos.isDisplayNumeroArchive', array());
             } else {
                 $t->assign_block_vars('listePhotos.isNoDisplayNumeroArchive', array());
             }
             if ($utilisateur->canModifyTags(array('idUtilisateur' => $authentification->getIdUtilisateur()))) {
                 $t->assign_block_vars('listePhotos.canModifyTags', array());
             } else {
                 $t->assign_block_vars('listePhotos.canNotModifyTags', array());
             }
             if ($utilisateur->isAuthorized('affiche_selection_source', $authentification->getIdUtilisateur())) {
                 $t->assign_block_vars('listePhotos.isDisplaySource', array());
             } else {
                 $t->assign_block_vars('listePhotos.isNoDisplaySource', array());
             }
             // ***************************************************
             // IDENTIFIANT d'HISTORIQUES IMAGES
             // recuperation de la liste des identifiants d'images
             $listeId[] = $fetch['idHistoriqueImage'];
             // ***************************************************
             // ***************************************************
             // SOURCES
             // création de la liste des sources
             // ***************************************************
             if (!empty($tabSource)) {
                 foreach ($tabSource as $id => $nom) {
                     if (isset($tabTravail['source']['value']) && $tabTravail['source']['value'] == $id) {
                         $selected = 'selected="selected"';
                     } else {
                         $selected = '';
                     }
                     $t->assign_block_vars('listePhotos.source', array('val' => $id, 'nom' => $nom, 'selected' => $selected));
                 }
             }
             // recuperation des evenements lies à l'image
             $resEvenementsLies = $this->getFetchEvenementsLies($fetch['idImage']);
             while ($fetchEvenementsLies = mysql_fetch_assoc($resEvenementsLies)) {
                 $t->assign_block_vars('listePhotos.evenements', array('value' => $fetchEvenementsLies['idEvenement'], 'nom' => $fetchEvenementsLies['titre']));
             }
             $i++;
         }
         // ***************************************************
         $t->assign_vars(array("proprietaireImages" => "Images concernant l'adresse", 'actionFormImage' => $this->creerUrl('modifImage', '', $arrayModifUrlParams), 'listeId' => implode(',  ', $listeId)));
         // ***************************************************
         // ***************************************************
         // pour les calques :
         // ***************************************************
         $recherche = new archiRecherche();
         $adresse = new archiAdresse();
         $t->assign_vars(array('popupChoixAdresse' => $recherche->getPopupChoixAdresse('resultatRechercheAdresseCalqueImageChampMultiple'), 'popupChoixEvenement' => $recherche->getPopupChoixEvenement('resultatRechercheEvenementCalqueImageChampMultiple'), 'popupChoixSource' => $recherche->getPopupChoixSource('modifImage'), 'popupCalendrier' => $this->getPopupCalendrier(), 'popupAttente' => $this->getPopupAttente()));
     } else {
         $t->assign_vars(array('msgPasdImage' => "Il n'y a pas d'image."));
     }
     // *********************************************************************************
     // recuperation des aides contextuelles
     $helpMessages = $this->getHelpMessages('helpImage');
     $helpMessages = array_merge($helpMessages, $this->getHelpMessages('helpAdresse'));
     foreach ($helpMessages as $fieldName => $message) {
         $t->assign_vars(array($fieldName => $message));
     }
     // *********************************************************************************
     ob_start();
     $t->pparse('imageFormModif');
     $html = ob_get_contents();
     ob_end_clean();
     return $html;
 }
 public function afficheFormulaire($tabTravail = array(), $modif = '', $idParent = 0, $typeParentId = '')
 {
     $html = '';
     $t = new Template('modules/archi/templates/');
     //$t->set_filenames((array('evl'=>'evenementFormulaire.tpl')));
     $t->set_filenames(array('evl' => 'nouveauDossier.tpl'));
     $isEvenementGroupeAdresse = false;
     $formulaire = new formGenerator();
     $groupeTypeEvenement = 2;
     // par defaut on selectionne les evenement de type 'travaux'
     if (isset($this->variablesPost['typeGroupeEvenement']) && $this->variablesPost['typeGroupeEvenement'] != '') {
         $groupeTypeEvenement = $this->variablesPost['typeGroupeEvenement'];
     }
     $t->assign_vars(array('typeBoutonValidation' => "button"));
     // quand test javascript sur les champs de l'adresse , type = button
     // cas d'ajout d'un sous evenement ou d'un evenement appartenant a une adresse
     // on n'affiche pas les listes d'evenements et d'adresses
     if ($idParent != 0) {
         // est ce que l'on veut lier l'evenement a un evenement que l'on a précisé en parametre ou a une adresse ?
         switch ($typeParentId) {
             case 'evenement':
                 // CAS OU L'ON VA AJOUTER UN SOUS EVENEMENT A L'EVENEMENT GROUPE d'ADRESSE
                 $t->assign_block_vars('isNotAjoutNouvelleAdresse', array());
                 if ($idPerson = archiPersonne::isPerson($idParent)) {
                     $person = new archiPersonne();
                     $infos = $person->getInfosPersonne($idPerson);
                     $t->assign_vars(array('recapitulatifAdresse' => "<h2 class='h1'><a href='" . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson)) . "'>" . $infos["prenom"] . " " . $infos["nom"] . "</a></h2>"));
                 } else {
                     $adresse = new archiAdresse();
                     $t->assign_vars(array('recapitulatifAdresse' => $adresse->afficherRecapitulatifAdresses($idParent)));
                 }
                 $t->assign_block_vars('afficheAjoutEvenement', array());
                 //$t->assign_block_vars('isNotAffichageGroupeAdresse',array());
                 $t->assign_vars(array('evenementGroupeAdresse' => $idParent));
                 $t->assign_vars(array('nomBoutonValidation' => 'ajoutSousEvenement'));
                 $t->assign_vars(array('typeBoutonValidation' => "submit"));
                 break;
             case 'adresse':
                 $tabTravail['adresses']['value'] = array($idParent);
                 $t->assign_block_vars('ajouterAdresses', array());
                 break;
         }
     } else {
         // l'evenement est il un groupe d'adresse , si oui , on n'affichera que le champ des adresses
         if ($modif != '') {
             // c'est une modification d'evenement
             // on affiche le recapitulatif de l'adresse en haut de page
             $t->assign_block_vars('isNotAjoutNouvelleAdresse', array());
             $idEvenementGroupeAdresse = $this->getParent($modif);
             $adresse = new archiAdresse();
             if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                 $person = new archiPersonne();
                 $infos = $person->getInfosPersonne($idPerson);
                 $t->assign_vars(array('recapitulatifAdresse' => "<h2 class='h1'><a href='" . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson)) . "'>" . $infos["prenom"] . " " . $infos["nom"] . "</a></h2>"));
             } else {
                 $t->assign_vars(array('recapitulatifAdresse' => $adresse->afficherRecapitulatifAdresses($idEvenementGroupeAdresse)));
             }
             $t->assign_vars(array('recaptitulatifAncres' => $this->afficherRecapitulatifAncres($idEvenementGroupeAdresse, $modif)));
             $t->assign_vars(array("liensModifEvenements" => $this->afficherLiensModificationEvenement($modif)));
             $isEvenementGroupeAdresse = $this->isEvenementGroupeAdresse($modif);
             if ($isEvenementGroupeAdresse) {
                 // l'evenement courant est de type groupe d'adresse
                 // on affiche rien a par l'adresse
                 // on renseigne le champs cache du formulaire pour recuperer rapidement l'identifiant lors de la validation de la modification
                 $t->assign_vars(array('evenementGroupeAdresse' => $modif));
                 $t->assign_block_vars('ajouterAdresses', array());
                 //on recupere les adresses liées a cet evenement
                 $reqAdressesGroupeAdresses = "\n\t\t\t\t\t\t\tSELECT ha.idAdresse as idAdresse\n\t\t\t\t\t\t\tfrom historiqueAdresse ha2, historiqueAdresse ha\n\t\t\t\t\t\t\tright join _adresseEvenement ae on ae.idAdresse = ha.idAdresse\n\t\t\t\t\t\t\twhere ae.idEvenement = '" . $modif . "'\n\t\t\t\t\t\t\t\t\tand ha2.idAdresse = ha.idAdresse\n\t\t\t\t\t\t\t\t\tgroup by ha.idAdresse,ha.idHistoriqueAdresse\n\t\t\t\t\t\t\t\t\thaving ha.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\t\t";
                 $resAdressesGroupeAdresses = $this->connexionBdd->requete($reqAdressesGroupeAdresses);
                 while ($fetchAdressesGroupeAdresses = mysql_fetch_assoc($resAdressesGroupeAdresses)) {
                     $tabTravail["adresses"]['value'][] = $fetchAdressesGroupeAdresses['idAdresse'];
                 }
             } else {
                 // MODIFICATION d'UN EVENEMENT (juste l'evenement, pas d'adresse , pas de groupe d'adresse)
                 // initialisation des champs du template que l'on va afficher
                 $t->assign_block_vars('afficheAjoutEvenement', array());
                 $t->assign_vars(array('nomBoutonValidation' => 'evenementSimple'));
                 $t->assign_vars(array('typeBoutonValidation' => "submit"));
             }
         } else {
             // ce n'est pas une modification d'evenement
             $t->assign_block_vars('afficheAjoutEvenement', array());
         }
     }
     //***********************************************************************************************
     // TYPE STRUCTURE
     // dans le cas d'un ajout de sous evenement
     // par defaut on recupere le type de structure du premier evenement enregistré 'qui n'est pas un groupe d'adresses'
     //***********************************************************************************************
     $heriteIdTypeStructure = '';
     if ($idParent != '0' && $typeParentId == 'evenement') {
         $sqlTypeStructureHerite = "\n\t\t\t\t\tSELECT he.idTypeStructure as idTypeStructure\n\t\t\t\t\tFROM evenements he2, evenements he\n\t\t\t\t\tWHERE he.idEvenement =(select min(ee.idEvenementAssocie) from _evenementEvenement ee where ee.idEvenement = '" . $idParent . "')\n\t\t\t\t\t\t\tAND he2.idEvenement = he.idEvenement\n\t\t\t\t\t\t\tGROUP BY he.idEvenement\n\t\t\t\t\t\t\t";
         $resTypeStructureHerite = $this->connexionBdd->requete($sqlTypeStructureHerite);
         if (mysql_num_rows($resTypeStructureHerite) == 1) {
             $fetchTypeStructureHerite = mysql_fetch_assoc($resTypeStructureHerite);
             $heriteIdTypeStructure = $fetchTypeStructureHerite['idTypeStructure'];
         }
         //echo "heriteIdTypeStructure=".$heriteIdTypeStructure;
     }
     if (!isset($idEvenementGroupeAdresse)) {
         $idEvenementGroupeAdresse = $_GET["archiIdEvenement"];
     }
     if (!archiPersonne::isPerson($idEvenementGroupeAdresse)) {
         $t->assign_block_vars("afficheAjoutEvenement.isAddress", array());
         $sqlTypeStructure = 'SELECT idTypeStructure, nom FROM typeStructure order by nom';
         if ($result = $this->connexionBdd->requete($sqlTypeStructure)) {
             while ($fetchTypeStructure = mysql_fetch_object($result)) {
                 if ($fetchTypeStructure->idTypeStructure != 0) {
                     //$tabTypeStructure[$rep->idTypeStructure] = $rep->nom;
                     if (isset($tabTravail['typeStructure']) && $tabTravail['typeStructure']['value'] == $fetchTypeStructure->idTypeStructure || $heriteIdTypeStructure != '' && $fetchTypeStructure->idTypeStructure == $heriteIdTypeStructure) {
                         $selected = 'selected="selected"';
                     } else {
                         $selected = '';
                     }
                     $t->assign_block_vars('afficheAjoutEvenement.isAddress.typesStructure', array('id' => $fetchTypeStructure->idTypeStructure, 'nom' => $fetchTypeStructure->nom, 'selected' => $selected));
                 }
             }
         }
     }
     // ***********************************************************************************
     // si la personne n'est pas admin elle verra une version simplifiée du formulaire
     $authentification = new archiAuthentification();
     if ($authentification->estConnecte() && $authentification->estAdmin()) {
         $t->assign_block_vars('afficheAjoutEvenement.isAdmin', array());
     } else {
         $t->assign_block_vars('afficheAjoutEvenement.isNotAdmin', array());
     }
     // ******
     // ***********************************************************************************
     // autre cas pour l'affichage du champ numeroArchive , il faut que l'utilisateur soit autorisé à l'afficher => table utilisateur
     $utilisateur = new archiUtilisateur();
     if ($utilisateur->canChangeNumeroArchiveField(array('idUtilisateur' => $authentification->getIdUtilisateur()))) {
         $t->assign_block_vars('afficheAjoutEvenement.canChangeNumeroArchive', array());
     } else {
         $t->assign_block_vars('afficheAjoutEvenement.noChangeNumeroArchive', array());
     }
     if ($utilisateur->canChangeDateFinField(array('idUtilisateur' => $authentification->getIdUtilisateur()))) {
         $t->assign_block_vars('afficheAjoutEvenement.canChangeDateFin', array());
     } else {
         $t->assign_block_vars('afficheAjoutEvenement.noChangeDateFin', array());
     }
     if ($utilisateur->isAuthorized('affiche_selection_source', $authentification->getIdUtilisateur())) {
         $t->assign_block_vars('afficheAjoutEvenement.isDisplaySource', array());
     } else {
         $t->assign_block_vars('afficheAjoutEvenement.isNotDisplaySource', array());
     }
     // ******
     // ***********************************************************************************
     // le type de groupe d'evenement
     // 1 - culturel
     // 2 - travaux
     $t->assign_vars(array('onClickTypeEvenement1' => "appelAjax('" . $this->creerUrl('', 'afficheSelectTypeEvenement', array('noHeaderNoFooter' => 1, 'archiTypeGroupeEvenement' => '1')) . "','typeEvenement');document.getElementById('afficheChampsSupplementairesCulturel').style.display='block';document.getElementById('afficheChampsSupplementairesTravaux').style.display='none';"));
     $t->assign_vars(array('onClickTypeEvenement2' => "appelAjax('" . $this->creerUrl('', 'afficheSelectTypeEvenement', array('noHeaderNoFooter' => 1, 'archiTypeGroupeEvenement' => '2')) . "','typeEvenement');document.getElementById('afficheChampsSupplementairesTravaux').style.display='block';document.getElementById('afficheChampsSupplementairesCulturel').style.display='none';"));
     // si c'est une modification de l'evenement il faut chercher l'id de type de groupe d'evenement afin d'afficher les bons div , et donc on reassigne la variable groupeTypeEvenement
     if ($modif != '') {
         if (isset($tabTravail['typeEvenement']['value'])) {
             $reqGroupeTypeEvenement = "select groupe from typeEvenement where idTypeEvenement='" . $tabTravail['typeEvenement']['value'] . "'";
             $resGroupeTypeEvenement = $this->connexionBdd->requete($reqGroupeTypeEvenement);
             $fetchGroupeTypeEvenement = mysql_fetch_assoc($resGroupeTypeEvenement);
             $groupeTypeEvenement = $fetchGroupeTypeEvenement['groupe'];
         }
     }
     // on affiche le bon div
     if ($groupeTypeEvenement == 1) {
         // 1: culturel
         $t->assign_vars(array('checkedTypeEvenement1' => " checked"));
         $t->assign_vars(array('styleChampsSupplementaireTravaux' => "display:none;"));
         $t->assign_vars(array('styleChampsSupplementaireCulturel' => "display:block;"));
         if (isset($tabTravail['ISMH']) && $tabTravail['ISMH']['value'] == '1') {
             $t->assign_vars(array('ISMHchecked' => " checked"));
         }
         if (isset($tabTravail['MH']) && $tabTravail['MH']['value'] == '1') {
             $t->assign_vars(array('MHchecked' => " checked"));
         }
     } elseif ($groupeTypeEvenement == 2) {
         // 2: travaux
         $t->assign_vars(array('nbEtages' => $tabTravail['nbEtages']['value']));
         $t->assign_vars(array('checkedTypeEvenement2' => " checked"));
         $t->assign_vars(array('styleChampsSupplementaireTravaux' => "display:block;"));
         $t->assign_vars(array('styleChampsSupplementaireCulturel' => "display:none;"));
     }
     if (isset($tabTravail['isDateDebutEnviron']) && $tabTravail['isDateDebutEnviron']['value'] == '1') {
         $t->assign_vars(array('isDateDebutEnviron' => " checked"));
     }
     if (!archiPersonne::isPerson($idEvenementGroupeAdresse)) {
         // les type d'evenements
         // par defaut on selectionne le typeEvenement=2 (travaux)
         $resTypeEvenement = $this->connexionBdd->requete("SELECT idTypeEvenement,nom FROM typeEvenement where groupe = '" . $groupeTypeEvenement . "'");
         while ($fetchTypeEvenement = mysql_fetch_assoc($resTypeEvenement)) {
             $selected = "";
             if (isset($tabTravail['typeEvenement']) && $tabTravail['typeEvenement']['value'] == $fetchTypeEvenement["idTypeEvenement"]) {
                 $selected = "selected";
             }
             $t->assign_block_vars('afficheAjoutEvenement.isAddress.typesEvenement', array('id' => $fetchTypeEvenement['idTypeEvenement'], 'nom' => $fetchTypeEvenement['nom'], 'selected' => $selected));
         }
     }
     // ***********************************************************************************
     //** Courant Architecturaux - récupération
     //*
     $sqlCourantArchitectural = 'SELECT idCourantArchitectural, nom FROM courantArchitectural order by nom';
     //$tabCourantArchitectural = array();
     $tableauCourants = new tableau();
     if ($result = $this->connexionBdd->requete($sqlCourantArchitectural)) {
         while ($fetchCourant = mysql_fetch_object($result)) {
             //$tabCourantArchitectural[$rep->idCourantArchitectural] = $rep->nom;
             if (isset($tabTravail['courant']) && is_array($tabTravail['courant']['value']) && in_array($fetchCourant->idCourantArchitectural, $tabTravail['courant']['value']) && $groupeTypeEvenement == 2) {
                 $selected = 'checked';
             } else {
                 $selected = '';
             }
             $tableauCourants->addValue("<input type='checkbox' name='courant[]' value='" . $fetchCourant->idCourantArchitectural . "' " . $selected . ">&nbsp;" . $fetchCourant->nom);
             //$t->assign_block_vars('isNotAffichageGroupeAdresse.courant', array('id'=> $fetchCourant->idCourantArchitectural, 'nom'=> $fetchCourant->nom, 'selected'=> $selected));
         }
         $t->assign_vars(array('listeCourantsArchitecturaux' => $tableauCourants->createHtmlTableFromArray(3, "white-space:nowrap;font-size:12px; font-color:#000000;", 'listeCourantsArchitecturaux')));
     }
     // ***********************************************************************************
     // assignation du bouton de validation : ajout ou modif
     if ($formulaire->estChiffre($modif)) {
         $t->assign_vars(array('typeTitre' => 'Modification', 'estmodif' => '<input type="hidden" name="idEvenement" value="' . $modif . '" />', 'boutonValidation' => 'Modifier', 'formAction' => $this->creerUrl('modifierEvenement', '', array('archiIdEvenement' => $modif))));
     } else {
         $t->assign_vars(array('typeTitre' => 'Ajout', 'estmodif' => '', 'boutonValidation' => 'Ajouter', 'formAction' => $this->creerUrl('ajoutEvenement')));
     }
     // ***********************************************************************************
     //**  Affichage des Erreurs
     //**
     foreach ($tabTravail as $name => $value) {
         if (!is_array($value["value"])) {
             if ($value['type'] == 'date') {
                 $val = $this->date->toFrench($this->date->toBdd($value['value']));
             } else {
                 $val = htmlspecialchars(stripslashes($value["value"]));
                 // nécessaire pour la description
             }
         } else {
             $val = $value["value"];
         }
         if ($value['type'] != 'checkbox') {
             $t->assign_vars(array($name => $val));
         }
         if (isset($value['error']) && $value["error"] != '') {
             $t->assign_vars(array($name . "-error" => $value["error"]));
         }
     }
     // ***********************************************************************************
     //**  Affichage des listes d'options
     //**
     // recherche des intitules de la source de l'evenement courant
     if (!empty($tabTravail['source']['value'])) {
         $sql = "\n\t\t\t\t\tSELECT s.idSource as idSource, s.nom as nom , ts.nom as nomTypeSource\n\t\t\t\t\tFROM source s\n\t\t\t\t\tLEFT JOIN typeSource ts ON ts.idTypeSource = s.idTypeSource\n\t\t\t\t\tWHERE s.idSource ='" . $tabTravail['source']['value'] . "'";
         $rep = $this->connexionBdd->requete($sql);
         $fetchSource = mysql_fetch_assoc($rep);
         $t->assign_vars(array('source' => $tabTravail['source']['value'], 'sourcetxt' => stripslashes($fetchSource['nom']) . ' ' . $fetchSource['nomTypeSource']));
     }
     // les personnes
     $d = new droitsObject();
     if ($d->isAuthorized('personne_sur_evenement_modifier', $authentification->getIdProfil())) {
         $t->assign_vars(array("affichePersonnesBlock" => "table-row"));
         if (!empty($tabTravail['personnes']['value'])) {
             foreach ($tabTravail['personnes']['value'] as $id => $val) {
                 $tabTravail['personnes']['value'][$id] = mysql_escape_string($val);
             }
             $sqlIdPersonne = implode("','", $tabTravail['personnes']['value']);
             $sql = "SELECT idPersonne, nom, prenom FROM personne WHERE idPersonne IN ('" . $sqlIdPersonne . "')";
             $rep = $this->connexionBdd->requete($sql);
             $tabPersonne = array();
             while ($res = mysql_fetch_object($rep)) {
                 $tabPersonne[$res->idPersonne] = $res->nom . ' ' . $res->prenom;
             }
             foreach ($tabPersonne as $id => $val) {
                 $t->assign_block_vars('afficheAjoutEvenement.personnes', array('id' => $id, 'nom' => $val, 'selected' => 'selected'));
             }
         }
     } else {
         $t->assign_vars(array("affichePersonnesBlock" => "none"));
     }
     // les adresses
     /*if (!empty($tabTravail['adresses']['value']))
     		{
     		foreach( $tabTravail['adresses']['value'] AS $id => $val)
     		{
     		$tabTravail['adresses']['value'][$id] = mysql_escape_string($val);
     		}
     		$sqlIdAdresse = implode("','", $tabTravail['adresses']['value']);
     		// recuperation des noms des adresses
     		$sql = "
     		SELECT ha.idAdresse as idAdresse, ha.nom as nom
     		FROM historiqueAdresse ha2, historiqueAdresse ha
     		WHERE ha.idAdresse IN ('".$sqlIdAdresse."')
     		AND ha.idAdresse = ha2.idAdresse
     		GROUP BY ha.idAdresse, ha.idHistoriqueAdresse
     		HAVING ha.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)
     		";
     		$rep = $this->connexionBdd->requete($sql);
     		while ($res = mysql_fetch_object($rep))
     		{
     		$tabAdresse[$res->idAdresse] = $res->nom;
     		}
     
     		$adresse = new archiAdresse();
     		foreach($tabTravail['adresses']['value'] AS $id)
     		{
     		// recherche du libelle a afficher pour l'adresse
     		$nom = $adresse->getAdresseToDisplay($adresse->getArrayAdresseFromIdAdresse($id));//$adresse->getAdresseToDisplay($id);
     		$t->assign_block_vars('ajouterAdresses.adresses', array('val'=> $id, 'nom'=> $nom));
     		}
     		}
     
     		// les evenements lies ( pas utilisé pour le moment)
     		if (!empty($tabTravail['evenements']['value']))
     		{
     		// modif laurent pour ajout d'un sous evenement à l'evenement groupe d'adresse
     		if(count($tabTravail['evenements']['value'])==1)
     		{
     		foreach($tabTravail['evenements']['value'] as $indice => $value)
     		{
     		// recherche de l'evenement parent :
     		$resGroupeAdresse   = $this->connexionBdd->requete("select distinct idEvenement from _evenementEvenement where idEvenementAssocie='".$value."'");
     		$fetchGroupeAdresse = mysql_fetch_assoc($resGroupeAdresse);
     		$t->assign_vars(array('evenementGroupeAdresse'=>$fetchGroupeAdresse['idEvenement']));
     		}
     		}
     		else
     		{
     		$this->mail->sendMail('archiV2',$this->mail->getAdmin(),'ArchiV2-archiEvenements::il y a plusieurs evenements lies','il y a plusieurs evenements lies idEvenement='.$fetchGroupeAdresse['idEvenement']);
     		}
     
     
     		}
     		*/
     // ***********************************************************************************
     // gestion des appels des popups de dates
     $t->assign_vars(array('onClickDateDebut' => "document.getElementById('paramChampAppelantDate').value='dateDebut';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDate').style.display='block';", 'onClickDateFin' => "document.getElementById('paramChampAppelantDate').value='dateFin';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDate').style.display='block';"));
     // bouton popup source
     $t->assign_vars(array('onClickBoutonChoisirSource' => "document.getElementById('paramChampsAppelantSource').value='source';document.getElementById('calqueSource').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueSource').style.display='block';", 'onClickChoixPersonne' => "document.getElementById('paramChampsAppelantPersonne').value='personne';document.getElementById('calquePersonne').style.top=(getScrollHeight()+150)+'px';document.getElementById('calquePersonne').style.display='block';"));
     $recherche = new archiRecherche();
     //  liaison avec les adresses
     $t->assign_vars(array('popupPersonnes' => $recherche->getPopupChoixPersonne('modifEvenement'), 'popupSources' => $recherche->getPopupChoixSource('modifEvenement'), 'popupCalendrier' => $this->getPopupCalendrier()));
     // ******************************************************************************************************************************
     // on recupere les messages d'aide contextuelle et on les affiche :
     $helpMessages = $this->getHelpMessages("helpEvenement");
     foreach ($helpMessages as $fieldName => $helpMessage) {
         $t->assign_vars(array($fieldName => $helpMessage));
     }
     // ******************************************************************************************************************************
     ob_start();
     $t->pparse('evl');
     $html .= ob_get_contents();
     ob_end_clean();
     return $html;
 }
 /**
  * Affiche la liste des personnes liées à une source
  *
  * @param int $idSource ID de la source
  *
  * @return void
  * */
 public static function getPersonsFromSource($idSource)
 {
     global $config;
     $req = "SELECT idEvenement\n            FROM `historiqueEvenement`\n            WHERE `idSource` =" . $idSource;
     $res = $config->connexionBdd->requete($req);
     $e = new archiEvenement();
     while ($event = mysql_fetch_object($res)) {
         $idEvenementGroupeAdresse = $e->getIdEvenementGroupeAdresseFromIdEvenement($event->idEvenement);
         if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
             $person = new archiPersonne($idPerson);
             $people[] = $person->getInfosPersonne($idPerson);
         }
     }
     if (isset($people)) {
         $already = array();
         print "<b>Voici la liste des personnes auxquelles cette source est attachée</b>";
         print '<table class="results">';
         foreach ($people as $person) {
             if (!in_array($person['idPersonne'], $already)) {
                 $already[] = $person['idPersonne'];
                 print '<tr class="listAddressItem">
                 <td><a href="' . $config->creerUrl("", "evenementListe", array("selection" => "personne", "id" => $person['idPersonne'])) . '"><img src="' . archiPersonne::getImage($person['idPersonne'], "mini", false) . '" border=0 alt=""></a> <span><br/><a href="' . $config->creerUrl("", "evenementListe", array("selection" => "personne", "id" => $person['idPersonne'])) . '" >' . stripslashes($person['prenom'] . " " . $person['nom']) . '</a></span><br/><span style="font-size:11px;">' . $person['nomMetier'] . '</span></td>
                 </tr>';
             }
         }
         print '</table>';
     }
 }