public function getParcoursDetail($params = array())
 {
     $html = "";
     $idParcours = 0;
     if (isset($this->variablesGet['archiIdParcours']) && $this->variablesGet['archiIdParcours'] != '') {
         $idParcours = $this->variablesGet['archiIdParcours'];
     }
     if (isset($params['idParcours']) && $params['idParcours'] != '') {
         $idParcours = $params['idParcours'];
     }
     if ($idParcours != 0) {
         $bbCode = new bbCodeObject();
         $resParcours = $this->getMysqlParcours(array('sqlWhere' => "AND idParcours='" . $idParcours . "'"));
         $fetchParcours = mysql_fetch_assoc($resParcours);
         $html .= "<h1>" . stripslashes($fetchParcours['libelleParcours']) . "</h1>";
         $html .= $this->getGoogleMapParcours(array('idParcours' => $idParcours, 'width' => 700));
         // affichage de la liste des etapes
         $alphaChars = 'abcdefghijklmnopqrstuvwxyz';
         // on fait simple
         $reqEtapes = "SELECT idEtape,idEvenementGroupeAdresse,commentaireEtape,position FROM etapesParcoursArt WHERE idParcours='" . $idParcours . "' ORDER BY position ASC";
         $resEtapes = $this->connexionBdd->requete($reqEtapes);
         $t = new tableau();
         $i = 0;
         while ($fetchEtapes = mysql_fetch_assoc($resEtapes)) {
             $arrayPhoto = $this->getPhotoFromEtape(array('idEtape' => $fetchEtapes['idEtape']));
             $photo = "&nbsp;";
             if ($arrayPhoto['trouve']) {
                 $photo = "<img src='" . $arrayPhoto['url'] . "' border=0>";
             }
             $idAdresse = $this->getIdAdresseFromIdEvenementGroupeAdresse($fetchEtapes['idEvenementGroupeAdresse']);
             $intituleAdresse = $this->getIntituleAdresseFrom($fetchEtapes['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('setSeparatorAfterTitle' => '<br>', 'displayFirstTitreAdresse' => true, 'noVille' => true, 'noQuartier' => true, 'noSousQuartier' => true));
             $marqueur = "<div style=\"font-size:10px; padding-top:3px; width:20px; height:34px; background-repeat:no-repeat; background-image:url(" . $this->getUrlImage() . "greenMarkerGM.gif); font-weight:bold; text-align:center;\">" . ($i + 1) . "</div>";
             $t->addValue($marqueur);
             $t->addValue("<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $fetchEtapes['idEvenementGroupeAdresse'], 'archiIdAdresse' => $idAdresse)) . "'>{$photo}</a>", "align=center");
             $t->addValue("<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $fetchEtapes['idEvenementGroupeAdresse'], 'archiIdAdresse' => $idAdresse)) . "'>" . $intituleAdresse . "</a>");
             $t->addValue(stripslashes($bbCode->convertToDisplay(array('text' => $fetchEtapes['commentaireEtape']))));
             $i++;
         }
         require_once __DIR__ . '/archiParcours.php';
         $parcours = new ArchiParcours($_GET['archiIdParcours']);
         $html .= '<p>' . $parcours->desc . '</p>';
         $html .= "<br><h2>Etapes du parcours : </h2>";
         $html .= $t->createTable(4);
     }
     return $html;
 }
    // enregistrement de la modification
    $description = $_POST['desc-' . $_GET['idModif']];
    $description = mysql_escape_string($description);
    $req = "update historiqueEvenement set description=\"" . $description . "\" where idHistoriqueEvenement = '" . $_GET['idModif'] . "'";
    $res = $connex->connexion->requete($req);
    echo $req;
}
/*$regExp[0] = array( "regle"=>"\\[url=\"(.+)\"\\](.+)\\[/url\\]", "remplacement"=>"<a href=\"http://$1\" target=\"_blank\">$2</a>" );
$regExp[1] = array( "regle"=>"\\[url=(.+)\\](.+)\\[/url\\]", "remplacement"=>"<a href=\"http://$1\" target=\"_blank\">$2</a>" );
$regExp[2] = array( "regle"=>"\\<a\ href\=\\'(.+)\\'\\>(.+)\\</a\\>", "remplacement"=>"" );
*/
$regExp[0] = array("regle" => "\\[url");
$regExp[1] = array("regle" => "\\<a");
$req = "\n\t\tSELECT he1.idHistoriqueEvenement as idHistoriqueEvenement,he1.description as description\n\t\tFROM historiqueEvenement he2,historiqueEvenement he1\n\t\tWHERE he2.idEvenement = he1.idEvenement\n\t\tGROUP BY he1.idEvenement,he1.idHistoriqueEvenement\n\t\tHAVING he1.idHistoriqueEvenement = max(he2.idHistoriqueEvenement)\n\t\t";
$res = $connex->connexion->requete($req);
$tableau = new tableau();
$tableau->addValue('regle utilisee');
$tableau->addValue('idHistoriqueEvenement');
$tableau->addValue('description');
$tableau->addValue('validation');
while ($fetch = mysql_fetch_assoc($res)) {
    $description = stripslashes($fetch['description']);
    $description = stripslashes($description);
    foreach ($regExp as $indice => $expReg) {
        //echo $expReg['regle']."<br>";
        if (eregi($expReg['regle'], $description, $retourAdr)) {
            $tableau->addValue($indice . "<br>" . $expReg['regle']);
            $tableau->addValue($fetch['idHistoriqueEvenement']);
            $tableau->addValue("<textarea cols='70' rows='10' name='desc-" . $fetch['idHistoriqueEvenement'] . "'>" . $description . "</textarea>");
            $tableau->addValue("<input type='button' name='ok-" . $fetch['idHistoriqueEvenement'] . "' value='OK' onclick=\"document.getElementById('formModif').action='supprBlank.php?idModif=" . $fetch['idHistoriqueEvenement'] . "';document.getElementById('formModif').submit();\">");
        }
 /**
  * Affichage de toutes les actualites
  *
  * @param array $params Paramètres
  *
  * @return string HTML
  * */
 public function getHtmlToutesLesActualites($params = array())
 {
     $html = "<h1>" . _("Actualités") . "</h1>";
     $d = new dateObject();
     $pagination = new paginationObject();
     $resDernieresActualites = $this->getDernieresActualites(array('sqlFields' => '0', "returnAsMysqlRes" => true));
     $nbEnregistrementTotaux = mysql_num_rows($resDernieresActualites);
     $nbEnregistrementsParPage = 15;
     $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'page', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
     $arrayActus = $this->getDernieresActualites(array("sqlWhere" => " AND desactive<>'1' ", "sqlLimit" => "LIMIT " . mysql_real_escape_string($arrayPagination['limitSqlDebut']) . ", " . $nbEnregistrementsParPage));
     $tab = new tableau();
     foreach ($arrayActus as $indice => $value) {
         if ($value['urlFichier'] != '') {
             $url = $value['urlFichier'];
         } else {
             $url = $this->creerUrl('', 'afficherActualite', array('archiIdActualite' => $value['idActualite']));
         }
         $tab->addValue("<a href='" . $url . "'>" . $d->toFrenchAffichage($value['date']) . " " . stripslashes($value['titre']) . "</a>");
         if ($value['photoIllustration'] != '') {
             list($w, $h) = getimagesize($this->getCheminPhysique() . "images/actualites/" . $value['idActualite'] . "/" . $value['photoIllustration']);
             if ($w > $h) {
                 $dimension = "width=80";
             } else {
                 $dimension = "height=80";
             }
             $tab->addValue("<img src='" . $this->urlImages . "actualites/" . $value['idActualite'] . "/" . $value['photoIllustration'] . "' {$dimension}>");
         } else {
             $tab->addValue("&nbsp;");
         }
     }
     $html .= $arrayPagination['html'];
     $html .= $tab->createHtmlTableFromArray(2, 'margin:0;padding:0;', '', '', " border=''");
     return $html;
 }
 private function getUserAddresses($userId)
 {
     $paginationAdresses = new paginationObject();
     $date = new dateObject();
     $adresse = new archiAdresse();
     $nbEnregistrementsParPage = 5;
     $req = "\n\t\t\t\t\t\tSELECT distinct ha1.idAdresse\n\t\t\t\t\t\tFROM historiqueAdresse ha2,  historiqueAdresse ha1\n\t\t\t\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n\t\t\t\t\t\tWHERE ha2.idAdresse = ha1.idAdresse\n\t\t\t\t\t\tAND ha1.idUtilisateur = '" . $userId . "'\n\t\t\t\t\t\t\t\tGROUP BY ha1.idAdresse ,  ha1.idHistoriqueAdresse\n\t\t\t\t\t\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\tORDER BY ha1.date DESC\n\t\t\t\t\t\t\t\t";
     $res = $this->connexionBdd->requete($req);
     $nbEnregistrementTotaux = mysql_num_rows($res);
     $arrayPaginationAdresses = $paginationAdresses->pagination(array('nomParamPageCourante' => 'archiMonArchiAdressesPage', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
     $req = "\n\t\t\t\t\t\tSELECT distinct ha1.idAdresse as idAdresse, ha1.date as date,  ha1.numero,  ha1.idRue,  ha1.idSousQuartier,  ha1.idQuartier,  ha1.idVille, ha1.idIndicatif,\n    \t\n\t\t\t\t\t\tha1.idAdresse as idAdresse,  ha1.numero,  ha1.idQuartier,  ha1.idVille, ind.nom,\n    \t\n\t\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\t\tha1.numero as numeroAdresse,\n\t\t\t\t\t\tha1.idRue,\n\t\t\t\t\t\tr.prefixe as prefixeRue,\n\t\t\t\t\t\tIF (ha1.idSousQuartier != 0,  ha1.idSousQuartier,  r.idSousQuartier) AS idSousQuartier,\n\t\t\t\t\t\tIF (ha1.idQuartier != 0,  ha1.idQuartier,  sq.idQuartier) AS idQuartier,\n\t\t\t\t\t\tIF (ha1.idVille != 0,  ha1.idVille,  q.idVille) AS idVille,\n\t\t\t\t\t\tIF (ha1.idPays != 0,  ha1.idPays,  v.idPays) AS idPays,\n    \t\n\t\t\t\t\t\tha1.numero as numero,\n\t\t\t\t\t\tha1.idHistoriqueAdresse,\n\t\t\t\t\t\tha1.idIndicatif as idIndicatif\n    \t\n    \t\n\t\t\t\t\t\tFROM historiqueAdresse ha2,  historiqueAdresse ha1\n    \t\n\t\t\t\t\t\tLEFT JOIN indicatif ind ON ind.idIndicatif = ha1.idIndicatif\n    \t\n\t\t\t\t\t\tLEFT JOIN rue r         ON r.idRue = ha1.idRue\n\t\t\t\t\t\tLEFT JOIN sousQuartier sq    ON sq.idSousQuartier = if (ha1.idRue='0' and ha1.idSousQuartier!='0' , ha1.idSousQuartier , r.idSousQuartier )\n\t\t\t\t\t\tLEFT JOIN quartier q        ON q.idQuartier = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' , ha1.idQuartier , sq.idQuartier )\n\t\t\t\t\t\tLEFT JOIN ville v        ON v.idVille = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' , ha1.idVille , q.idVille )\n\t\t\t\t\t\tLEFT JOIN pays p        ON p.idPays = if (ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' , ha1.idPays , v.idPays )\n\t\t\t\t\t\tWHERE ha2.idAdresse = ha1.idAdresse\n\t\t\t\t\t\tAND ha1.idUtilisateur = '" . $userId . "'\n\t\t\t\t\t\t\t\tGROUP BY ha1.idAdresse ,  ha1.idHistoriqueAdresse\n\t\t\t\t\t\t\t\tHAVING ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\tORDER BY ha1.date DESC\n\t\t\t\t\t\t\t\t";
     $req = $paginationAdresses->addLimitToQuery($req);
     $res = $this->connexionBdd->requete($req);
     $monArchi .= "<br><b>" . _("Liste de vos adresses :") . " </b><br>";
     $monArchi .= $arrayPaginationAdresses['html'];
     $tableauAdresse = new tableau();
     if (mysql_num_rows($res) == 0) {
         $monArchi .= "<br>" . _("Vous n'avez pas encore ajouté d'adresse.") . "<br>";
     }
     while ($fetch = mysql_fetch_assoc($res)) {
         $tableauAdresse->addValue($date->toFrench($fetch['date']));
         $tableauAdresse->addValue("<a href='" . $this->creerUrl('', 'adresseDetail', array('archiIdAdresse' => $fetch['idAdresse'])) . "'>" . stripslashes($adresse->getIntituleAdresse($fetch)) . "</a>");
     }
     $monArchi .= $tableauAdresse->createHtmlTableFromArray(2, "font-size:12px;");
     return $monArchi;
 }
 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 sources avec des miniatures
  * 
  * @param array $params Paramètres
  * 
  * @return string HTML
  * */
 public function afficherListeSourcesAvecLogos($params = array())
 {
     $s = new stringObject();
     $bbCode = new bbCodeObject();
     $html = "<h1>" . _("Nos sources") . "</h1><br>";
     $html .= "<br>" . _("Pour assurer la crédibilité des informations renseignées par chaque internaute, nous vous livrons ici, de façon exhaustive et en toute transparence l'ensemble des sources qui sont consultées pour enrichir le site :") . "<br><br>";
     $reqCount = "SELECT 0 FROM source";
     $resCount = $this->connexionBdd->requete($reqCount);
     $nbSourcesTotal = mysql_num_rows($resCount);
     $nbEnregistrementsParPage = 15;
     $pagination = new paginationObject();
     $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'archiPageNosSources', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbSourcesTotal, 'typeLiens' => 'noformulaire'));
     $reqArchivesMunicipalesSansIdSourceEvenement = "\n                SELECT distinct he.idEvenement FROM historiqueEvenement he, historiqueEvenement he2 WHERE he2.idEvenement=he.idEvenement AND he.numeroArchive<>'' AND (he.idSource = '0' OR he.idSource = '')\n                GROUP BY he.idEvenement,  he.idHistoriqueEvenement\n                HAVING he.idHistoriqueEvenement = max(he2.idHistoriqueEvenement)\n                ";
     $resArchivesMunicipalesSansIdSourceEvenement = $this->connexionBdd->requete($reqArchivesMunicipalesSansIdSourceEvenement);
     $nbEvenementsSansIdSourceANDArchivesMunicipales = mysql_num_rows($resArchivesMunicipalesSansIdSourceEvenement);
     $reqArchivesMunicipalesSansIdSourceImage = "\n                SELECT distinct hi.idImage FROM historiqueImage hi,  historiqueImage hi2 WHERE hi2.idImage = hi.idImage AND hi.numeroArchive<>'' AND (hi.idSource='0' OR hi.idSource='')\n                GROUP BY hi.idImage ,  hi.idHistoriqueImage\n                HAVING hi.idHistoriqueImage = max(hi2.idHistoriqueImage)\n                ";
     $resArchivesMunicipalesSansIdSourceImage = $this->connexionBdd->requete($reqArchivesMunicipalesSansIdSourceImage);
     $nbImagesSansIdSourceANDArchivesMunicipales = mysql_num_rows($resArchivesMunicipalesSansIdSourceImage);
     $nbArchivesMunicipalesSansIdSource = $nbEvenementsSansIdSourceANDArchivesMunicipales + $nbImagesSansIdSourceANDArchivesMunicipales;
     $req = "\n            SELECT idSource ,  \n            (\n                (SELECT count(distinct he.idEvenement)  FROM historiqueEvenement he WHERE he.idSource = s.idSource )\n            + \n                (SELECT count(distinct hi.idImage) FROM historiqueImage hi WHERE hi.idSource = s.idSource)\n            + if (idSource=24, {$nbArchivesMunicipalesSansIdSource}, 0)\n            ) \n            as sumnb\n            FROM source s\n            ORDER BY sumnb DESC\n        ";
     $req = $pagination->addLimitToQuery($req);
     $res = $this->connexionBdd->requete($req);
     $t = new tableau();
     $t->addValue("");
     $t->addValue("<b>" . _("Sources") . "</b>");
     $t->addValue("<b><span style='font-size:12px;'>" . _("Nombre de liaisons (articles ou photos)") . "</span></b>");
     while ($fetch = mysql_fetch_assoc($res)) {
         $reqSource = "\n                    SELECT s.idSource as idSource,  s.nom as nomSource ,  ts.nom as nomTypeSource,  s.description as description\n                    FROM source s\n                    LEFT JOIN typeSource ts ON ts.idTypeSource = s.idTypeSource\n                    WHERE idSource = '" . $fetch['idSource'] . "'\n                    ";
         $resSource = $this->connexionBdd->requete($reqSource);
         $fetchSource = mysql_fetch_assoc($resSource);
         $image = "&nbsp;";
         $url = $this->creerUrl('', 'listeAdressesFromSource', array('source' => $fetch['idSource'], 'submit' => 'Rechercher'));
         if (file_exists($this->getCheminPhysique() . "images/logosSources/" . $fetch['idSource'] . ".jpg")) {
             $image = "<a href='" . $url . "'><img src='" . $this->getUrlImage() . "logosSources/" . $fetch['idSource'] . ".jpg' border=0></a>";
         }
         $nomTypeSource = "";
         if (isset($fetchSource['nomTypeSource']) && $fetchSource['nomTypeSource'] != '') {
             $nomTypeSource = " (" . $fetchSource['nomTypeSource'] . ")";
         }
         $description = $s->coupureTexte(strip_tags($bbCode->convertToDisplay(array('text' => stripslashes($fetchSource['description'])))), 10);
         $t->addValue($image, "style='width:200px;'");
         $t->addValue("<a href='" . $url . "'>" . stripslashes($fetchSource['nomSource']) . $nomTypeSource . "</a><br>" . $description);
         $t->addValue($fetch['sumnb']);
     }
     $html .= $arrayPagination['html'];
     $html .= $t->createHtmlTableFromArray(3);
     $html .= $arrayPagination['html'];
     return $html;
 }
 /**
  * Affichage du formulaire d'ajout d'un nouveau dossier (groupe d'adresse + evenement construction)
  * 
  * @param array  $parametres Paramètres
  * @param string $type       Type (adresse ou personne)
  * 
  * @return void
  * */
 public function afficheFormulaireNouveauDossier($parametres = array(), $type = "adresse")
 {
     $html = "";
     // initialisation de l'objet googlemap pour la recuperation des coordonnees
     $paramsGoogleMap = array('googleMapKey' => $this->googleMapKey);
     $googleMap = new googleMap($paramsGoogleMap);
     $html .= $googleMap->getJsFunctions();
     $html .= $googleMap->getJSInitGeoCoder();
     $t = new Template('modules/archi/templates/');
     $t->set_filenames(array('nouveauDossier' => 'nouveauDossier.tpl'));
     if ($type == "personne") {
         $formAction = "ajoutNouvelPersonne";
         $t->assign_block_vars("ajoutPersonne", array());
         $resJobs = $this->connexionBdd->requete("SELECT * FROM `metier`");
         $jobList = "";
         while ($job = mysql_fetch_assoc($resJobs)) {
             if (!empty($job["nom"])) {
                 $jobList .= "<option value='" . $job["idMetier"] . "'";
                 if (isset($_POST["metier"]) && $job["idMetier"] == $_POST["metier"]) {
                     $jobList .= " selected='selected' ";
                 }
                 $jobList .= ">" . $job["nom"] . "</option>";
             }
         }
         $t->assign_vars(array('titrePage' => _("Ajout d'une nouvelle personne (physique ou morale)"), "jobList" => $jobList, "typeBoutonValidation" => "submit"));
         if (!empty($_POST) && !isset($_POST["archiLogin"])) {
             $t->assign_vars(array("firstname" => $_POST["prenom"], "name" => $_POST["nom"], "birth" => $_POST["dateNaissance"], "death" => $_POST["dateDeces"], "desc" => $_POST["descriptionPerson"]));
         }
     } else {
         $formAction = "ajoutNouveauDossier";
         if (!isset($arrayJsCoordonneesFromGoogleMap['jsFunctionCall'])) {
             $arrayJsCoordonneesFromGoogleMap['jsFunctionCall'] = 0;
         }
         // assignation du titre de la page
         $t->assign_vars(array('titrePage' => _("Ajout d'une nouvelle adresse"), 'typeBoutonValidation' => "submit"));
         // ********
         // on affiche la partie ajout d'une adresse
         $t->assign_block_vars('isNotAjoutSousEvenement', array());
         // ********
     }
     // ********
     // on affiche la partie "ajout d'un evenement"
     $t->assign_block_vars('afficheAjoutEvenement', array());
     // *******
     // ******
     // si la personne n'est pas admin elle verra une version simplifiée du formulaire
     $authentification = new archiAuthentification();
     $u = new archiUtilisateur();
     if ($authentification->estConnecte() && ($authentification->estAdmin() || $u->canAddWithoutStreet(array('idUtilisateur' => $authentification->getIdUtilisateur())))) {
         $t->assign_block_vars('afficheAjoutEvenement.isAdmin', array());
         $t->assign_vars(array("displayQuartiers" => 'table-row'));
         $t->assign_vars(array("displaySousQuartiers" => 'table-row'));
     } else {
         $t->assign_block_vars('afficheAjoutEvenement.isNotAdmin', array());
         $t->assign_vars(array("displayQuartiers" => 'none'));
         $t->assign_vars(array("displaySousQuartiers" => 'none'));
     }
     // ******
     $typeStructure = 0;
     if (isset($this->variablesPost['typeStructure']) && $this->variablesPost['typeStructure'] != '') {
         $typeStructure = $this->variablesPost['typeStructure'];
     }
     $groupeTypeEvenement = 2;
     // par defaut on selectionne les evenement de type 'travaux'
     if (isset($this->variablesPost['typeGroupeEvenement']) && $this->variablesPost['typeGroupeEvenement'] != '') {
         $groupeTypeEvenement = $this->variablesPost['typeGroupeEvenement'];
     }
     $typeEvenement = 0;
     if (isset($this->variablesPost['typeEvenement']) && $this->variablesPost['typeEvenement'] != '') {
         $typeEvenement = $this->variablesPost['typeEvenement'];
     }
     if (!(isset($this->variablesPost['typeEvenement']) && $this->variablesPost['typeEvenement'] != '') && isset($this->variablesGet['archiOptionAjoutDossier']) && $this->variablesGet["archiOptionAjoutDossier"] == "nouvelleDemolition") {
         $groupeTypeEvenement = 2;
         // travaux
         $typeEvenement = 6;
     }
     if (!(isset($this->variablesPost['typeEvenement']) && $this->variablesPost['typeEvenement'] != '') && isset($this->variablesGet['archiOptionAjoutDossier']) && $this->variablesGet["archiOptionAjoutDossier"] == "nouvelEvenementCulturel") {
         $groupeTypeEvenement = 1;
         // travaux
         $typeEvenement = 0;
     }
     $ISMH = false;
     if (isset($this->variablesPost['ISMH'])) {
         $ISMH = true;
     }
     $MH = false;
     if (isset($this->variablesPost['MH'])) {
         $MH = true;
     }
     $isDateDebutEnviron = false;
     if (isset($this->variablesPost['isDateDebutEnviron'])) {
         $isDateDebutEnviron = true;
     }
     $personnes = array();
     if (isset($this->variablesPost['personnes']) && count($this->variablesPost['personnes']) > 0) {
         $personnes = $this->variablesPost['personnes'];
     }
     $ville = 0;
     if (isset($this->variablesPost['ville']) && $this->variablesPost['ville'] != '0' && $this->variablesPost['ville'] != '') {
         $ville = $this->variablesPost['ville'];
     }
     // ***********************************************************************************
     // recuperation des valeurs des champs textes du formulaire validé,  les autres champs sont mis en place individuellement
     $listeChamps = array('titre', 'source', 'sourcetxt', 'dateDebut', 'dateFin', 'nbEtages', 'description', 'ville', 'villetxt');
     foreach ($listeChamps as $indice => $fieldName) {
         if (isset($this->variablesPost[$fieldName]) && $this->variablesPost[$fieldName] != '') {
             $t->assign_vars(array($fieldName => $this->variablesPost[$fieldName]));
         }
     }
     // gestion du favori de la ville ou si on a une ville generale courante
     if ($ville == '0' && !isset($this->variablesGet['archiIdVilleGeneral'])) {
         $reqVilleTxt = "select nom from ville where idVille = '" . $this->session->getFromSession('idVilleFavoris') . "'";
         $resVilleTxt = $this->connexionBdd->requete($reqVilleTxt);
         $fetchVilleTxt = mysql_fetch_assoc($resVilleTxt);
         $t->assign_vars(array('ville' => $this->session->getFromSession('idVilleFavoris'), 'villetxt' => $fetchVilleTxt['nom']));
         $ville = $this->session->getFromSession('idVilleFavoris');
     } elseif (isset($this->variablesGet['archiIdVilleGeneral'])) {
         $reqVilleTxt = "select nom from ville where idVille = '" . $this->variablesGet['archiIdVilleGeneral'] . "'";
         $resVilleTxt = $this->connexionBdd->requete($reqVilleTxt);
         $fetchVilleTxt = mysql_fetch_assoc($resVilleTxt);
         $t->assign_vars(array('ville' => $this->variablesGet['archiIdVilleGeneral'], 'villetxt' => $fetchVilleTxt['nom']));
         $ville = $this->variablesGet['archiIdVilleGeneral'];
     }
     // ***********************************************************************************
     // si un idVille existe sur le formulaire ,  on affiche les quartiers correspondants
     if ($ville != 0) {
         $resQuartiers = $this->connexionBdd->requete("select idQuartier,  nom from quartier where idVille = '" . $ville . "' order by nom");
         while ($fetchQuartiers = mysql_fetch_assoc($resQuartiers)) {
             $selected = "";
             if (isset($this->variablesPost['quartiers']) && $this->variablesPost['quartiers'] != '0' && $fetchQuartiers['idQuartier'] == $this->variablesPost['quartiers']) {
                 $selected = " selected";
             }
             if ($fetchQuartiers['nom'] != 'autre') {
                 if ($type == "personne") {
                 } else {
                     $t->assign_block_vars("isNotAjoutSousEvenement.quartiers", array('id' => $fetchQuartiers['idQuartier'], 'nom' => $fetchQuartiers['nom'], 'selected' => $selected));
                 }
             }
         }
     }
     // ***********************************************************************************
     // si on a des personnes selectionnees ,  on les ajoute
     $d = new droitsObject();
     $u = new archiUtilisateur();
     if ($d->isAuthorized('personne_sur_evenement_ajouter', $u->getIdProfilFromUtilisateur($authentification->getIdUtilisateur()))) {
         $t->assign_vars(array("affichePersonnesBlock" => "table-row"));
     } else {
         $t->assign_vars(array("affichePersonnesBlock" => "none"));
     }
     if ($d->isAuthorized('affiche_selection_source', $u->getIdProfilFromUtilisateur($authentification->getIdUtilisateur()))) {
         $t->assign_block_vars('afficheAjoutEvenement.isDisplaySource', array());
     } else {
         $t->assign_block_vars('afficheAjoutEvenement.isNotDisplaySource', array());
     }
     if (count($personnes) > 0) {
         $listePersonnes = implode("', '", $personnes);
         $reqPersonnes = "select idPersonne,  nom,  prenom from personne where idPersonne in ('" . $listePersonnes . "')";
         $resPersonnes = $this->connexionBdd->requete($reqPersonnes);
         while ($fetchPersonnes = mysql_fetch_assoc($resPersonnes)) {
             $t->assign_block_vars('personnes', array('id' => $fetchPersonnes['idPersonne'], 'nom' => $fetchPersonnes['nom'] . ' ' . $fetchPersonnes['prenom'], 'selected' => " selected"));
         }
     }
     // ***********************************************************************************
     // si un idQuartier existe sur le formulaire on affiche les sous quartier correspondants
     if (isset($this->variablesPost['quartiers']) && $this->variablesPost['quartiers'] != '') {
         $resSousQuartiers = $this->connexionBdd->requete("select idSousQuartier,  nom from sousQuartier where idQuartier = '" . $this->variablesPost['quartiers'] . "' order by nom");
         while ($fetchSousQuartiers = mysql_fetch_assoc($resSousQuartiers)) {
             $selected = "";
             if (isset($this->variablesPost['sousQuartiers']) && $this->variablesPost['sousQuartiers'] != '0' && $fetchSousQuartiers['idSousQuartier'] == $this->variablesPost['sousQuartiers']) {
                 $selected = " selected";
             }
             if ($fetchSousQuartiers['nom'] != 'autre') {
                 if ($type == "personne") {
                 } else {
                     $t->assign_block_vars("isNotAjoutSousEvenement.sousQuartiers", array('id' => $fetchSousQuartiers['idSousQuartier'], 'nom' => $fetchSousQuartiers['nom'], 'selected' => $selected));
                 }
             }
         }
     }
     $numLigne = 0;
     if (isset($this->variablesPost['idUnique'])) {
         foreach ($this->variablesPost['idUnique'] as $indice => $valueIdUnique) {
             if (isset($this->variablesGet['supprAdresse']) && $this->variablesGet['supprAdresse'] == $valueIdUnique) {
                 //
             } else {
                 $arrayAdresse[$numLigne]['idAdresse'] = 0;
                 $arrayAdresse[$numLigne]['txt'] = $this->variablesPost['ruetxt'][$valueIdUnique];
                 $arrayAdresse[$numLigne]['id'] = $this->variablesPost['rue'][$valueIdUnique];
                 $arrayAdresse[$numLigne]['numero'] = $this->variablesPost['numero'][$valueIdUnique];
                 $arrayAdresse[$numLigne]['indicatif'] = $this->variablesPost['indicatif'][$valueIdUnique];
                 $numLigne++;
             }
         }
         if (isset($this->variablesPost['ajouterAdresse'])) {
             $arrayAdresse[$numLigne]['idAdresse'] = 0;
             $arrayAdresse[$numLigne]['txt'] = "";
             $arrayAdresse[$numLigne]['id'] = "";
             $arrayAdresse[$numLigne]['numero'] = "";
             $arrayAdresse[$numLigne]['indicatif'] = "";
             $numLigne++;
         }
         if (count($this->variablesPost['idUnique']) == 1 && isset($this->variablesPost['enleverAdresse'])) {
             $arrayAdresse[$numLigne]['idAdresse'] = 0;
             $arrayAdresse[$numLigne]['txt'] = "";
             $arrayAdresse[$numLigne]['id'] = "";
             $arrayAdresse[$numLigne]['numero'] = "";
             $arrayAdresse[$numLigne]['indicatif'] = "";
             $numLigne++;
         }
     } else {
         $arrayAdresse[$numLigne]['idAdresse'] = 0;
         $arrayAdresse[$numLigne]['txt'] = "";
         $arrayAdresse[$numLigne]['id'] = "";
         $arrayAdresse[$numLigne]['numero'] = "";
         $arrayAdresse[$numLigne]['indicatif'] = "";
         $numLigne++;
     }
     $configArrayRetrieveCoordonneesGoogleMap = array();
     for ($i = 0; $i < $numLigne; $i++) {
         // affichage des indicatifs pour chaque adresse
         if ($type == "personne") {
         } else {
             $t->assign_block_vars("isNotAjoutSousEvenement.adresses", array('idUnique' => $i, 'onClickBoutonChoixRue' => "document.getElementById('paramChampAppelantRue').value= 'rue" . $i . "';document.getElementById('iFrameRue').src='" . $this->creerUrl('', 'afficheChoixRue', array('noHeaderNoFooter' => 1)) . "&archiIdVille='+document.getElementById('ville').value+'&archiIdQuartier='+document.getElementById('quartiers').value+'&archiIdSousQuartier='+document.getElementById('sousQuartiers').value;document.getElementById('calqueRue').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueRue').style.display='block';", "nomRue" => $arrayAdresse[$i]["txt"], "rue" => $arrayAdresse[$i]["id"], "numero" => $arrayAdresse[$i]["numero"], "onClickBoutonSupprAdresse" => "document.getElementById('formAjoutDossier').action='" . $this->creerUrl('', 'ajoutNouveauDossier', array('supprAdresse' => $i)) . "'"));
         }
         // gestion des indicatifs de chaque adresse
         $reqIndicatif = "select idIndicatif,  nom from indicatif";
         $resIndicatif = $this->connexionBdd->requete($reqIndicatif);
         while ($fetchIndicatif = mysql_fetch_assoc($resIndicatif)) {
             $selected = "";
             if (isset($this->variablesPost['indicatif' . $i]) && $this->variablesPost['indicatif' . $i] != '' && $this->variablesPost['indicatif' . $i] == $fetchIndicatif['idIndicatif']) {
                 $selected = " selected";
             }
             if ($type == "personne") {
             } else {
                 $t->assign_block_vars("isNotAjoutSousEvenement.adresses.indicatifs", array("id" => $fetchIndicatif['idIndicatif'], "nom" => $fetchIndicatif['nom'], "selected" => $selected));
             }
         }
         $configArrayRetrieveCoordonneesGoogleMap[$i] = array('nomChampLatitudeRetour' => 'latitude_' . $i, 'nomChampLongitudeRetour' => 'longitude_' . $i, 'getAdresseFromElementById' => true, 'jsAdresseValue' => "document.getElementById('numero" . $i . "').value+' '+document.getElementById('rue" . $i . "txt').value+' '+document.getElementById('villetxt').value", 'jsToExecuteIfNoAddressFound' => "document.getElementById('latitude_" . $i . "').value='';document.getElementById('longitude_" . $i . "').value='';");
     }
     $jsToExecute = "document.getElementById('formAjoutDossier').action='" . $this->creerUrl('ajoutNouveauDossier', '') . "';testAdresseValideAndSubmit('formAjoutDossier');";
     $arrayJsCoordonneesFromGoogleMap = $googleMap->getJSMultipleRetriveCoordonnees(array('jsToExecuteIfOK' => $jsToExecute), $configArrayRetrieveCoordonneesGoogleMap);
     $html .= $arrayJsCoordonneesFromGoogleMap['jsFunctionToExecute'];
     // **************************************************************************************
     // ***********************************************************************************
     // liste des courants architecturaux
     $resCourants = $this->connexionBdd->requete("select idCourantArchitectural, nom from courantArchitectural order by nom");
     $tableauHtml = new tableau();
     while ($fetchCourants = mysql_fetch_assoc($resCourants)) {
         $checked = "";
         if (isset($this->variablesPost["courantArchitectural"]) && in_array($fetchCourants["idCourantArchitectural"], $this->variablesPost["courantArchitectural"])) {
             $checked = " checked";
         }
         $tableauHtml->addValue("<input type='checkbox' name='courantArchitectural[]' value='" . $fetchCourants["idCourantArchitectural"] . "' " . $checked . ">&nbsp;" . $fetchCourants['nom']);
     }
     $t->assign_vars(array('listeCourantsArchitecturaux' => $tableauHtml->createHtmlTableFromArray(3, 'white-space:nowrap;border:1px solid #000000;', 'listeCourantsArchitecturaux')));
     if ($type == "adresse") {
         $t->assign_block_vars("afficheAjoutEvenement.isAddress", array());
         // ***********************************************************************************
         // les des types de structures
         $resTypeStructure = $this->connexionBdd->requete("SELECT idTypeStructure,  nom FROM typeStructure order by nom");
         while ($fetchTypeStructure = mysql_fetch_assoc($resTypeStructure)) {
             $selected = "";
             if ($typeStructure != '' && $typeStructure == $fetchTypeStructure["idTypeStructure"] || $typeStructure == "" && $fetchTypeStructure["idTypeStructure"] == $this->getIdTypeStructureImmeuble()) {
                 $selected = " selected";
             }
             if ($fetchTypeStructure["idTypeStructure"] > 0) {
                 $t->assign_block_vars('afficheAjoutEvenement.isAddress.typesStructure', array('id' => $fetchTypeStructure["idTypeStructure"], 'nom' => $fetchTypeStructure["nom"], 'selected' => $selected));
             }
         }
     }
     // ***********************************************************************************
     // le type de groupe d'evenement
     // 1 - culturel
     // 2 - travaux
     if ($groupeTypeEvenement == '2') {
         $t->assign_vars(array('checkedTypeEvenement2' => " checked"));
         $t->assign_vars(array('styleChampsSupplementaireCulturel' => "display:none;", 'styleChampsSupplementaireTravaux' => "display:block;"));
     } elseif ($groupeTypeEvenement == '1') {
         $t->assign_vars(array('checkedTypeEvenement1' => " checked"));
         $t->assign_vars(array('styleChampsSupplementaireCulturel' => "display:table-row;", 'styleChampsSupplementaireTravaux' => "display:none;"));
     }
     $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';"));
     if ($type == "adresse") {
         // ***********************************************************************************
         // 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 ($typeEvenement != "" && $typeEvenement == $fetchTypeEvenement["idTypeEvenement"]) {
                 $selected = "selected";
             }
             $t->assign_block_vars('afficheAjoutEvenement.isAddress.typesEvenement', array('id' => $fetchTypeEvenement['idTypeEvenement'], 'nom' => $fetchTypeEvenement['nom'], 'selected' => $selected));
         }
     }
     // ***********************************************************************************
     // ISMH   (inscrit au s des monuments historiques)
     // MH (monument historique)
     if ($ISMH) {
         $t->assign_vars(array('ISMHchecked' => ' checked'));
     }
     if ($MH) {
         $t->assign_vars(array('MHchecked' => ' checked'));
     }
     // ***********************************************************************************
     // ***********************************************************************************
     // 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());
     }
     // ***********************************************************************************
     // idem champ dateFin
     if ($utilisateur->canChangeDateFinField(array('idUtilisateur' => $authentification->getIdUtilisateur()))) {
         $t->assign_block_vars('afficheAjoutEvenement.canChangeDateFin', array());
     } else {
         $t->assign_block_vars('afficheAjoutEvenement.noChangeDateFin', array());
     }
     $recherche = new archiRecherche();
     $source = new archiSource();
     $onClickBoutonValider = $type == "adresse" ? "affichePopupAttente();" . $arrayJsCoordonneesFromGoogleMap['jsFunctionCall'] : "";
     $typeBoutonValidation = $type == "adresse" ? "button" : "submit";
     $t->assign_vars(array('formAction' => $this->creerUrl($formAction), 'popupCalendrier' => $this->getPopupCalendrier(), 'popupVilles' => $this->getPopupChoixVille('nouveauDossier'), 'popupRues' => $this->getPopupChoixRue('nouveauDossier'), 'popupSources' => $recherche->getPopupChoixSource('nouveauDossier'), 'popupPersonnes' => $recherche->getPopupChoixPersonne('nouveauDossier'), 'onClickBoutonAjouterAdresse' => "document.getElementById('formAjoutDossier').action='" . $this->creerUrl('', 'ajoutNouveauDossier') . "'", 'onClickBoutonEnleverAdresse' => "document.getElementById('formAjoutDossier').action='" . $this->creerUrl('', 'ajoutNouveauDossier') . "'", 'onClickBoutonValider' => $onClickBoutonValider, 'typeBoutonValidation' => $typeBoutonValidation, 'onClickBoutonChoixVille' => "document.getElementById('paramChampAppelantVille').value='ville';document.getElementById('calqueVille').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueVille').style.display='block';", 'onChangeListeQuartier' => "appelAjax('" . $this->creerUrl('', 'afficheSelectSousQuartier', array('noHeaderNoFooter' => 1)) . "&archiIdQuartier='+document.getElementById('quartiers').value, 'listeSousQuartier')", '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='personnes';document.getElementById('calquePersonne').style.top=(getScrollHeight()+150)+'px';document.getElementById('calquePersonne').style.display='block';", '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='dateDebut';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('paramChampAppelantDate').value='dateFin';document.getElementById('calqueDate').style.display='block';", 'popupAttente' => $this->getPopupAttente()));
     //document.getElementById('formAjoutDossier').action='".$this->creerUrl('ajoutNouveauDossier', '')."';testAdresseValideAndSubmit('formAjoutDossier');
     // ******************************************************************************************************************************
     // 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('nouveauDossier');
     $html .= ob_get_contents();
     ob_end_clean();
     return $html;
 }
 /**
  * Affichage d'un formulaire multiligne et dynamique ( pas de rechargement de page)
  * 
  * @param array $params Paramètres
  * 
  * @return string HTML
  * */
 public function getFormulaireMultiLignes($params = array())
 {
     $html = "";
     $t = new tableau();
     $identifiantUnique = 0;
     if (isset($params['identifiantUniqueFormulaire'])) {
         $identifiantUnique = $params['identifiantUniqueFormulaire'];
     }
     $formDebut = "<form name='frmWork_formMultiLignes{$identifiantUnique}' id='frmWork_formMultiLignes{$identifiantUnique}' enctype='multipart/form-data' method='POST' action='" . $params['formAction'] . "'>";
     $formFin = "</form>";
     //$boutonMoins="<input type='button' name='frmWork_Button_Moins$identifiantUnique' value='-' onclick=\"delRow$identifiantUnique('frmWork_Tableau$identifiantUnique');\">";
     $boutonPlus = "<input type='button' name='frmWork_Button_Plus{$identifiantUnique}' value='+' onclick=\"addRow{$identifiantUnique}('frmWork_Tableau{$identifiantUnique}');\">";
     $boutonSubmit = "<input type='submit' value='" . _("Valider") . "'>";
     // entetes du tableau
     $styleEntete = "";
     if (isset($params['htmlEnteteTableau'])) {
         $styleEntete = $params['htmlEnteteTableau'];
     }
     if (isset($params['configForm'])) {
         $t->addValue('suppr', $styleEntete);
         // premiere colonnes entete des cases a cocher de suppression
         $nbColonnesTableau = 0;
         foreach ($params['configForm'] as $nomChamps => $properties) {
             $nbColonnesTableau++;
             if ($properties['type'] == 'hidden') {
                 $styleHidden = "style='display:none;'";
                 $t->addValue($properties['libelle'], $styleHidden);
             } else {
                 $t->addValue($properties['libelle'], $styleEntete);
             }
         }
     }
     $nbColonnesTableau++;
     // pour l'affichage de la colonne contenant le bouton de suppression ou la case a cocher
     $d = new dateObject();
     $js = "\n        \n        <script  >\n          \n          var nbElementsFrmWorkFormMultiLigne{$identifiantUnique} = 0;\n            \n          function delRow{$identifiantUnique}(id, element)\n          {\n            var tbody = document.getElementById(id).getElementsByTagName('TBODY')[0];\n            tbody.removeChild(element);\n          }\n            \n          \n          function addRow{$identifiantUnique}(id)\n          {\n            var tbody = document.getElementById(id).getElementsByTagName('TBODY')[0];\n            var row = document.createElement('TR');\n\n            // la premiere colonne d'affichage de la case a cocher\n            var td = document.createElement('TD');\n            \n            \n            ";
     if (isset($params['alternanceStyleLignes'])) {
         $js .= "\n            \n            moduloStyle = nbElementsFrmWorkFormMultiLigne{$identifiantUnique}%" . count($params['alternanceStyleLignes']) . ";\n            if (moduloStyle==0) {                \n                td.className='" . $params['alternanceStyleLignes'][0] . "';\n            }\n            else\n            {\n                td.className='" . $params['alternanceStyleLignes'][1] . "';\n            }\n            \n            \n            ";
     }
     $js .= "\n        \n        td.innerHTML=\"<input type='checkbox' name='frmWork_checkBoxSuppr{$identifiantUnique}' onclick=\\\"delRow{$identifiantUnique}('frmWork_Tableau{$identifiantUnique}', this.parentNode.parentNode)\\\" value='\"+nbElementsFrmWorkFormMultiLigne{$identifiantUnique}+\"'>\";\n        row.appendChild(td);\n        ";
     $i = 0;
     foreach ($params['configForm'] as $nomChamps => $properties) {
         $defaultValuesTab[$nomChamps] = $properties['defaultValues'];
         if ($i == 0) {
             $nbLignes = count($properties['defaultValues']);
         }
         $js .= "\n                var td = document.createElement('TD');\n                td.innerHTML=\"" . $this->getFormElementByType(array('identifiantUnique' => $identifiantUnique, 'type' => $properties['type'], "displayMode" => "multiLignes", 'name' => $nomChamps . "_")) . "\";\n                row.appendChild(td);\n            ";
         if ($properties['type'] == 'hidden') {
             $js .= "td.style.display='none';";
         } else {
             $js .= "td.style.display='table-cell';";
         }
         $i++;
     }
     $js .= "   \n            tbody.appendChild(row);\n            nbElementsFrmWorkFormMultiLigne{$identifiantUnique}++;\n        }\n        ";
     $js .= "</script>";
     // gestion des valeurs par défaut - ou valeurs recuperée du POST par exemple
     $jsAfterDisplay = "";
     if (isset($defaultValuesTab)) {
         for ($i = 0; $i < $nbLignes; $i++) {
             $jsAfterDisplay .= "addRow{$identifiantUnique}('frmWork_Tableau{$identifiantUnique}');";
             foreach ($defaultValuesTab as $nomChamp => $values) {
                 $value = $defaultValuesTab[$nomChamp][$i];
                 $value = str_replace(array("\r\n"), "###RETOURLIGNE###", $value);
                 $value = str_replace(array("\n\r"), "###RETOURLIGNE###", $value);
                 $value = str_replace(array("\n"), "###RETOURLIGNE###", $value);
                 $value = str_replace(array("\r"), "###RETOURLIGNE###", $value);
                 $value = str_replace("###RETOURLIGNE###", "\\n", $value);
                 $jsAfterDisplay .= "document.getElementById('" . $nomChamp . "_" . $i . "').value=\"" . $value . "\";";
             }
         }
     }
     return array('html' => $formDebut . $js . $t->createHtmlTableFromArray($nbColonnesTableau, "border:0px solid #000000;", "", "", "id='frmWork_Tableau{$identifiantUnique}' name='frmWork_Tableau{$identifiantUnique}'") . $boutonPlus . $boutonSubmit . $formFin, "jsAfterMultiLigneArray" => "<script  >" . $jsAfterDisplay . "</script>");
 }
 /**
  * Renvoi l'affichage de toutes les vues avec pagination pour le lien sur la page d'accueil
  *
  * @return string
  * */
 public function getHtmlToutesLesVues()
 {
     $html = "<h1>Vues</h1><br>";
     $pagination = new paginationObject();
     $d = new dateObject();
     $adresse = new archiAdresse();
     $string = new stringObject();
     $bbCode = new bbCodeObject();
     $nbEnregistrementTotaux = $this->getDernieresVues(array("getNbVuesTotal" => true));
     $nbEnregistrementsParPage = 15;
     $arrayPagination = $pagination->pagination(array('nomParamPageCourante' => 'page', 'nbEnregistrementsParPage' => $nbEnregistrementsParPage, 'nbEnregistrementsTotaux' => $nbEnregistrementTotaux, 'typeLiens' => 'noformulaire'));
     $arrayVues = $this->getDernieresVues(array("sqlLimit" => "LIMIT " . $arrayPagination['limitSqlDebut'] . ",  " . $nbEnregistrementsParPage));
     $tab = new tableau();
     $i = 0;
     foreach ($arrayVues as $indice => $value) {
         $arrayIntituleAdressesVuesSur = array();
         foreach ($value['listeVueSur'] as $indice => $valueVuesSur) {
             $arrayIntituleAdressesVuesSur[] = $adresse->getIntituleAdresseFrom($valueVuesSur['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('ifTitreAfficheTitreSeulement' => true, 'noVille' => true, 'noQuartier' => true, 'noSousQuartier' => true));
         }
         $arrayIntituleAdressesPrisDepuis = array();
         foreach ($value['listePrisDepuis'] as $indice => $valuePrisDepuis) {
             $arrayIntituleAdressesPrisDepuis[] = "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $valuePrisDepuis['idAdresse'], 'archiIdEvenementGroupeAdresse' => $valuePrisDepuis['idEvenementGroupeAdresse'])) . "'>" . $adresse->getIntituleAdresseFrom($valuePrisDepuis['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('ifTitreAfficheTitreSeulement' => true, 'noVille' => true, 'noQuartier' => true, 'noSousQuartier' => true)) . "</a>";
         }
         $intituleAdresse1Adresse = $adresse->getIntituleAdresseFrom($value['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('ifTitreAfficheTitreSeulement' => true, 'noVille' => true, 'noQuartier' => true, 'noSousQuartier' => true));
         $intituleAdresseAlt = strip_tags(str_replace("\"", "'", $intituleAdresse1Adresse));
         $intituleAdresseVueSur = implode("/", $arrayIntituleAdressesVuesSur);
         $intituleAdressePrisDepuis = implode("", $arrayIntituleAdressesPrisDepuis);
         $urlImage = 'photos-' . $string->convertStringToUrlRewrite($intituleAdresse1Adresse) . '-' . $value['dateUpload'] . '-' . $value['idHistoriqueImage'] . '-mini.jpg';
         $tab->addValue("<a href='" . $this->creerUrl('', 'imageDetail', array("archiIdImage" => $value['idImage'], "archiRetourAffichage" => 'evenement', "archiRetourIdName" => 'idEvenement', "archiRetourIdValue" => $value['idEvenementGroupeAdresse'])) . "'>" . date('d/m/Y', strtotime($value['dateUpload'])) . " " . $intituleAdresseVueSur . "</a><br><span style='font-weight:bold;font-size:14px;'>Pris depuis</span> <span style='font-size:14px;'>" . $intituleAdressePrisDepuis . "</span><br><span style='font-size:12px;'>" . $string->coupureTexte($bbCode->convertToDisplay(array('text' => $this->getDescriptionFromIdImage(array("idImage" => $value['idImage'])))), 15) . "</span>");
         $tab->addValue("<img style='margin-right:2px;float:left;' align='middle' src='" . $urlImage . "' alt='' title=\"" . $intituleAdresseAlt . "\" alt=\"" . $intituleAdresseAlt . "\">");
         $i++;
     }
     $html .= $arrayPagination['html'];
     $html .= $tab->createHtmlTableFromArray(2, 'margin:0;padding:0;', '', '');
     return $html;
 }
 /**
  * Affichage du formulaire d'ajout/édition
  * 
  * @param array $params Paramètres
  * 
  * @return string HTML
  * */
 public function formulaireActualites($params = array())
 {
     $html = "";
     $f = new formGenerator();
     $d = new dateObject();
     $c = new calqueObject();
     $this->addToJsHeader("<script>" . $c->getJSScrollHeight() . "</script>");
     $html .= $c->getDiv(array('width' => 900, 'lienSrcIFrame' => '', 'titre' => 'Prévisualisation'));
     $idActualite = 0;
     $boutonNouveau = "";
     $boutonSupprimer = "";
     $boutonPrevisualiser = "<input type='button' name='previsualisation' value='Prévisualisation' onclick=\"tinyMCE.triggerSave(true,true);document.getElementById('" . $c->getJSDivId() . "').style.top=(50+getScrollHeight())+'px';document.getElementById('" . $c->getJSIFrameId() . "').src='" . $this->creerUrl('', 'previsualisationActualite', array()) . "';" . $c->getJSOpenPopup() . "\">";
     $boutonValiderEtEnvoiMailPrevisualisation = "<input type='button' name='valideEtEnvoi' id='valideEtEnvoi' value=\"Envoyer le mail tout de suite\" onclick=\"document.getElementById('formActu').action+='&previsualisationMail=1';document.getElementById('formActu').submit();\">\n        <input type='button' name='valideEtPrev' id='valideEtPrev' value='" . _("Prévisualiser le mail") . "' onclick=\"document.getElementById('formActu').action+='&previsualisationMail=1&preview=1';document.getElementById('formActu').setAttribute('target', '_blank'); document.getElementById('formActu').submit();\">\n        <input type='button' name='testMail' id='testMail' value='" . _("Envoyer un mail de test") . "' onclick=\"document.getElementById('formActu').action+='&previsualisationMail=1&preview=1&testMail=1';document.getElementById('formActu').setAttribute('target', '_blank'); document.getElementById('formActu').submit();\">\n        ";
     if (isset($this->variablesGet['archiIdActualite']) && $this->variablesGet['archiIdActualite'] != '') {
         $idActualite = $this->variablesGet['archiIdActualite'];
         $reqActu = "SELECT date,titre, sousTitre,photoIllustration, texte,urlFichier, fichierPdf, desactive,texteMailHebdomadaire,envoiMailHebdomadaire FROM actualites WHERE idActualite='" . $idActualite . "'";
         $resActu = $this->connexionBdd->requete($reqActu);
         $fetchActu = mysql_fetch_assoc($resActu);
         $date = $d->toFrenchAffichage($fetchActu['date']);
         $titre = $fetchActu['titre'];
         $sousTitre = $fetchActu['sousTitre'];
         $illustration = $fetchActu['photoIllustration'];
         $description = $fetchActu['texte'];
         $urlFichier = $fetchActu['urlFichier'];
         $fichierPdf = $fetchActu['fichierPdf'];
         $isDesactivated = $fetchActu['desactive'];
         $texteMailHebdomadaire = $fetchActu['texteMailHebdomadaire'];
         $isEnvoi = $fetchActu['envoiMailHebdomadaire'];
         $formAction = $this->creerUrl('modifierActu', 'adminActualites', array('archiIdActualite' => $idActualite));
         $boutonNouveau = "<input type='button' name='nouveauButton' value='Nouveau' onclick=\"location.href='" . $this->creerUrl('', 'adminActualites', array()) . "'\">";
         $boutonSupprimer = "<input type='button' name='supprimerBouton' value='Supprimer' onclick=\"location.href='" . $this->creerUrl('supprimerActu', 'adminActualites', array("idActuSuppr" => $idActualite)) . "'\">";
     } else {
         $date = date("d/m/Y");
         $titre = "";
         $sousTitre = "";
         $illustration = "";
         $description = "";
         $urlFichier = "";
         $fichierPdf = "";
         $isDesactivated = 0;
         $texteMailHebdomadaire = "";
         $isEnvoi = 0;
         $formAction = $this->creerUrl('ajouterActu', 'adminActualites', array('check' => 1));
         // check sert juste a ne pas avoir a gerer le ? ou le & dans l'url quand on rajoute un parametre en js
     }
     $idActualitePathImage = "";
     if ($idActualite != 0) {
         $idActualitePathImage = $idActualite;
     }
     // bibliotheques d'images
     $fileObject = new fileObject();
     $arrayFiles = $fileObject->getListeFichiersArrayFrom($this->getCheminPhysique() . "images/actualites/" . $idActualite . "/");
     $listeFichiers = "";
     $t = new tableau();
     foreach ($arrayFiles as $indiceFichier => $fichier) {
         if (strtolower($fileObject->getExtensionFromFile($fichier)) == 'jpg' || strtolower($fileObject->getExtensionFromFile($fichier)) == 'gif' || strtolower($fileObject->getExtensionFromFile($fichier)) == 'png') {
             $t->addValue("<a onclick='injectInTinyMce(\"<img src=\\\"" . $this->getUrlImage() . "actualites/" . $idActualite . "/" . str_replace("'", "\\\\'", $fichier) . "\\\" border=0>\");'><img src=\"" . $this->getUrlImage() . "actualites/" . $idActualite . "/" . $fichier . "\" border=0 width=100 height=100></a>");
             $t->addValue("{$fichier}");
         } else {
             $t->addValue("&nbsp;");
             $t->addValue("{$fichier}");
         }
     }
     $listeFichiers = $t->createTable(2);
     $gestionBibliothequeImages = "Bibliothèque d'images de l'actualité <span style='font-size:11px;'>(cliquez sur une image pour l'inserer à la position du curseur)</span> : <div id='listeFichiers' style='background-color:#87CEFF;width:300px;height:200px;overflow:scroll;'>" . $listeFichiers . "</div>";
     $this->addToJsHeader("<script>\n                function injectInTinyMce(txt)\n                {\n                    tinyMCE.execInstanceCommand('texte','mceInsertContent',false,txt);\n                }\n                \n                function goRedim(idActualite)\n                {\n                    // validation du formulaire pour creer l'identifiant de l'actu et pouvoir ranger les photos\n                    document.getElementById('formActu').submit();\n                }\n            </script>");
     // on ne gere pas de timestamp , on assume que seul l'admin fera des mises a jour des actualités
     $applet = $fileObject->getAppletUploadMultiple(array('cheminApplet' => $this->getUrlRacine() . "/includes/", 'uploadDirPart1' => $this->getCheminPhysique() . "images/", 'uploadDirPart2' => "uploadMultipleActualites/", 'jsFunctionNameOnExit' => "goRedim({$idActualite})"));
     $configFields = array('idActualite' => array('libelle' => "idActualite", 'type' => 'hidden', 'required' => true, 'value' => '', 'forceValueTo' => $idActualite, 'htmlCode' => '', 'error' => ''), 'desactive' => array('libelle' => "désactiver", 'type' => 'singleCheckBox', 'required' => false, 'value' => '', 'forceValueTo' => '1', 'isChecked' => $isDesactivated, 'htmlCode' => '', 'error' => '', 'default' => ''), 'date' => array('libelle' => "date", 'withDatePicker' => true, 'type' => 'date', 'required' => true, 'value' => '', 'forceValueTo' => $date, 'htmlCode' => '', 'error' => ''), 'titre' => array('libelle' => "titre", 'type' => 'text', 'required' => false, 'value' => '', 'forceValueTo' => $titre, 'htmlCode' => "style='width:300px;'", 'error' => ''), 'sousTitre' => array('libelle' => "sous-titre", 'type' => 'text', 'required' => false, 'value' => '', 'forceValueTo' => $sousTitre, 'htmlCode' => "style='width:300px;'", 'error' => ''), 'photoIllustration' => array('libelle' => "illustration", 'type' => 'uploadImage', 'required' => false, 'value' => '', 'forceValueTo' => $illustration, 'physicalImagePathForTestExists' => $this->getCheminPhysique() . "images/actualites/" . $idActualitePathImage . "/", 'urlImagePathForDisplayInForm' => $this->getUrlImage() . "actualites/" . $idActualitePathImage . "/", 'htmlCode' => '', 'error' => ''), 'texte' => array('libelle' => "description", 'type' => 'tinyMCE', 'required' => false, 'value' => '', 'forceValueTo' => $description, 'htmlCode' => "cols=80 rows=30", 'error' => '', 'htmlCode2' => $gestionBibliothequeImages . "<div><a onclick=\"if(document.getElementById('divApplet').style.display=='none'){document.getElementById('divApplet').style.display='block';}else{document.getElementById('divApplet').style.display='none';}\" style='cursor:pointer;'>Voir/cacher ajouter une image</a></div><div id='divApplet' style='float:left;display:none'>" . $applet . "</div>"), 'urlFichier' => array('libelle' => "url redirection", 'type' => 'text', 'required' => false, 'value' => '', 'forceValueTo' => $urlFichier, 'htmlCode' => "style='width:300px;'", 'error' => ''), 'fichierPdf' => array('libelle' => "fichier pdf", 'type' => 'text', 'required' => false, 'value' => '', 'forceValueTo' => $fichierPdf, 'htmlCode' => "style='width:300px;'", 'error' => ''), 'texteMailHebdomadaire' => array('libelle' => "description mail hebdomadaire <span style='color:red;'>(ne pas oublier de préciser le titre)</span>", 'type' => 'tinyMCE', 'required' => false, 'value' => '', 'forceValueTo' => $texteMailHebdomadaire, 'htmlCode' => "cols=80 rows=30", 'error' => ''), 'envoiMailHebdomadaire' => array('libelle' => "envoi avec la newsletter hebdomadaire", 'type' => 'singleCheckBox', 'required' => false, 'value' => '', 'forceValueTo' => '1', 'isChecked' => $isEnvoi, 'htmlCode' => '', 'error' => '', 'default' => ''));
     $configForm = array("fields" => $configFields, 'formAction' => $formAction, 'codeHtmlAfterSubmitButton' => $boutonNouveau . $boutonSupprimer . $boutonPrevisualiser . $boutonValiderEtEnvoiMailPrevisualisation, 'formName' => 'formActu');
     $html .= $f->afficherFromArray($configForm);
     return $html;
 }
 public function afficheCarteRecherche($params = array())
 {
     $html = "";
     $s = new objetSession();
     $a = new archiAdresse();
     $okCoord = false;
     if (isset($params['centrerSurVilleGeneral']) && $params['centrerSurVilleGeneral'] == true && $s->isInSession('archiIdVilleGeneral') && $s->getFromSession('archiIdVilleGeneral') != '') {
         // on recupere les coordonnées geogrphiques de la ville
         $reqCoordVille = "SELECT longitude,latitude FROM ville WHERE idVille = '" . $s->getFromSession('archiIdVilleGeneral') . "'";
         $resCoordVille = $this->connexionBdd->requete($reqCoordVille);
         if (mysql_num_rows($resCoordVille) > 0) {
             $fetchCoordVille = mysql_fetch_assoc($resCoordVille);
             if ($fetchCoordVille['longitude'] != '' && $fetchCoordVille['latitude'] != '') {
                 $villeLongitude = $fetchCoordVille['longitude'];
                 $villeLatitude = $fetchCoordVille['latitude'];
                 $okCoord = true;
             }
         }
     }
     if (!$okCoord) {
         $villeLongitude = "7.7400";
         // strasbourg
         $villeLatitude = "48.585000";
     }
     // recherche des villes
     $arrayRetourIdVilles = $this->getIdVillesNotEmpty();
     $arrayCoords = array();
     foreach ($arrayRetourIdVilles['coordonneesParIdVille'] as $idVille => $value) {
         if ($value['longitude'] != '' && $value['latitude'] != '') {
             $arrayNomVille = $a->getInfosVille($idVille, array("fieldList" => 'v.nom as nomVille'));
             $nomVille = $arrayNomVille['nomVille'];
             $arrayCoords[] = array('libelle' => 'NomVille', 'longitude' => $value['longitude'], 'latitude' => $value['latitude'], 'jsCodeOnClickMarker' => "location.href='" . html_entity_decode($this->creerUrl('', 'listByVille', array('recherche_ville' => $idVille))) . "';");
         }
     }
     $zoom = 15;
     if ($s->isInSession('archiIdVilleGeneral') && $s->getFromSession('archiIdVilleGeneral') == '1' || !$s->isInSession('archiIdVilleGeneral')) {
         // pour strasbourg on met un zoom un peu plus eloigné
         $zoom = 13;
     } elseif (isset($params['zoom'])) {
         $zoom = $params['zoom'];
     }
     // si le zoom est assez proche , on affiche les points des adresses autour du centre courant de la carte
     /*if($zoom>13)
     		{
     
     		$arrayGoogleMapCoord = $a->getArrayGoogleMapConfigCoordonneesFromCenter(array('longitude'=>$villeLongitude,'latitude'=>$villeLatitude,'rayon'=>500,'urlIcon'=>$this->urlImages."pointGM.png","dimIconX"=>'9',"dimIconY"=>'9'));
     		$listeCoords = $arrayGoogleMapCoord['arrayConfigCoordonnees'];
     
     
     		$arrayCoords = array_merge($arrayCoords,$listeCoords);
     
     		}
     
     		*/
     $gm = new googleMap(array('googleMapKey' => $this->googleMapKey, 'zoom' => $zoom, 'height' => 500, 'width' => 700, 'centerLong' => $villeLongitude, 'centerLat' => $villeLatitude));
     $this->addToJsHeader($gm->getJsFunctions());
     //$html.="<h2>Cliquez sur un point de la carte pour afficher la liste des immeubles a proximité.</h2>";
     $html .= "<h2>Recherche par carte</h2>";
     $html .= $gm->getMap(array('listeCoordonnees' => $arrayCoords, "urlImageIcon" => $this->getUrlImage(null, "maison2.png"), "pathImageIcon" => $this->getCheminPhysique() . "images/maison2.png"));
     // load
     // affichage de la legende sous la carte
     $t = new tableau();
     $html .= "<h3>Légende : </h3>";
     $t->addValue("<img src='" . $this->urlImages . "maison2.png' border=0>", "align=center");
     $t->addValue("Cliquez sur la maison bleue pour accéder à l'accueil de la ville.");
     $t->addValue("<img src='" . $this->urlImages . "legendeCarteGM.jpg' border=0>", "align=center");
     $t->addValue("Cliquez sur la rue qui vous intéresse pour voir les bâtiments qui bordent la zone.");
     $html .= $t->createHtmlTableFromArray(2);
     // evenement quand on clique sur la carte ( mais pas sur une maison
     $html .= $gm->setOnClickEvent(array('jsCode' => "location.href='?archiAffichage=recherche&submit=Rechercher&longitude='+point.lng()+'&latitude='+point.lat();"));
     /*if($zoom>13)
     		 {
     
     		$html.="<script  >";
     		$html.="GEvent.addListener(
     				map,
     				'dragend',
     				function(){appelAjaxReturnJs('".$this->creerUrl('','majGoogleMapNewCenter',array('noRefresh'=>0,'noHTMLHeaderFooter'=>1,'noHeaderNoFooter'=>1,'latitudeHome'=>$villeLatitude,'longitudeHome'=>$villeLongitude))."&longitudeCenter='+map.getCenter().lng()+'&latitudeCenter='+map.getCenter().lat()+'&rayon=800','divListeAdressesAjax')}
     		);";
     		$html.="</script>";
     		$html.="<div id='divListeAdressesAjax' style='background-color:lime;'></div>";
     		}
     		*/
     return $html;
 }
 /**
  * Formulaire de mise a jour d'un profil
  * 
  * @param array $params Paramètres
  * 
  * @return string HTML
  * */
 public function getFormulaireGestionDroits($params = array())
 {
     $retour = "";
     $idProfilCourant = 1;
     if (isset($this->variablesGet['archiIdProfil']) && $this->variablesGet['archiIdProfil'] != '' && $this->variablesGet['archiIdProfil'] != '0') {
         $idProfilCourant = $this->variablesGet['archiIdProfil'];
     }
     $reqElements = "SELECT * FROM droitsElementsSite";
     /*"SELECT * FROM droits
      * WHERE idProfil=(SELECT idProfil FROM droitsProfils
      * WHERE libelle='".$params['nomProfil']."')";*/
     $resElements = $this->connexionBdd->requete($reqElements);
     $tableau = new tableau();
     $tableau->addValue("Tag élément du site", "style='font-weight:bold;'");
     $tableau->addValue("droits", "style='font-weight:bold;'");
     while ($fetchElements = mysql_fetch_assoc($resElements)) {
         $tableau->addValue($fetchElements['libelle']);
         $reqProfil = "\n                    SELECT d.idDroit as idDroit, d.idProfil as idProfil,\n                    d.idElementSite as idElementSite, d.acces as acces,\n                    des.libelle as libelleElementSite,dp.libelle as libelleProfil\n                    FROM droits d\n                    LEFT JOIN droitsElementsSite des\n                        ON des.idElementSite = d.idElementSite\n                    LEFT JOIN droitsProfils dp ON dp.idProfil = d.idProfil\n                    WHERE dp.idProfil='" . $idProfilCourant . "'\n                    AND des.idElementSite='" . $fetchElements['idElementSite'] . "'\n                    ";
         $resProfil = $this->connexionBdd->requete($reqProfil);
         $fetchProfil = mysql_fetch_assoc($resProfil);
         $checked = "";
         if (isset($fetchProfil['acces']) && $fetchProfil['acces'] == '1') {
             $checked = "checked";
         }
         $tableau->addValue("<input type='checkbox'name='idElementSite[]'\n                value='" . $fetchElements['idElementSite'] . "' {$checked}>");
     }
     $retour = $tableau->createHtmlTableFromArray(2);
     $retour .= "<input type='hidden' name='idProfilCourant'\n            value='" . $idProfilCourant . "'>";
     return $retour;
 }