/**
  * ?
  * 
  * @param string $nomChamp ?
  * @param string $nomForm  ?
  * 
  * @return array
  * */
 private function getBBCodeJSMiseEnForme($nomChamp = '', $nomForm = '')
 {
     $bbCode = new bbCodeObject();
     $arrayRetour = $bbCode->getBoutonsMiseEnFormeTextArea(array('formName' => $nomForm, 'fieldName' => $nomChamp, 'idDivPrevisualisation' => 'previsualisationSource'));
     return $arrayRetour;
 }
 private function getUserFormMail($idUtilisateur)
 {
     $infosArray = $this->getArrayInfosFromUtilisateur($idUtilisateur);
     $mail = new mailObject();
     if ($infosArray['displayProfilContactForm'] == '1' && $infosArray['mail'] != '' && $mail->isMail($infosArray['mail'])) {
         $authentification = new archiAuthentification();
         $mailUtilisateurConnecte = "";
         if ($authentification->estConnecte()) {
             $idUtilisateurConnecte = $authentification->getIdUtilisateur();
             $mailUtilisateurConnecte = $this->getMailUtilisateur($idUtilisateurConnecte);
             if (!$mail->isMail($mailUtilisateurConnecte)) {
                 $mailUtilisateurConnecte = "";
             }
         }
         $f = new formGenerator();
         $bb = new bbCodeObject();
         $configBoutonsBBCode = array('formName' => 'messagePrive', 'fieldName' => 'message', 'noUrlInterneButton' => true);
         $help = $this->getHelpMessages('helpEvenement');
         foreach ($help as $index => $value) {
             $configBoutonsBBCode[$index] = $value;
         }
         $configBoutonsBBCode["msgQuote"] = "Selectionnez une partie de votre texte pour le mettre entre quotes";
         $configBoutonsBBCode["msgUrlExterne"] = "Tapez une url commencant par http:// ,  et selectionnez la pour en faire un lien";
         $arrayBBCode = $bb->getBoutonsMiseEnFormeTextArea($configBoutonsBBCode);
         if ($authentification->estConnecte()) {
             $configFieldsContact = array('idUtilisateurDestinataire' => array('type' => 'hidden', 'value' => '', 'forceValueTo' => $idUtilisateur, 'htmlCode' => '', 'default' => '', 'error' => '', 'required' => true), 'mailEnvoyeur' => array('type' => 'email', 'value' => '', 'forceValueTo' => $mailUtilisateurConnecte, 'htmlCode' => '', 'default' => '', 'libelle' => 'Votre mail', 'error' => '', 'required' => true), 'message' => array('type' => 'bigText', 'value' => '', 'htmlCode' => "style='width:400px;height:100px;'", 'default' => '', 'libelle' => 'Votre message', 'error' => '', 'required' => true, 'htmlCodeBeforeField' => $arrayBBCode['boutonsHTML']));
         } else {
             $configFieldsContact = array('idUtilisateurDestinataire' => array('type' => 'hidden', 'value' => '', 'forceValueTo' => $idUtilisateur, 'htmlCode' => '', 'default' => '', 'error' => '', 'required' => true), 'mailEnvoyeur' => array('type' => 'email', 'value' => '', 'forceValueTo' => $mailUtilisateurConnecte, 'htmlCode' => '', 'default' => '', 'libelle' => 'Votre mail', 'error' => '', 'required' => true), 'message' => array('type' => 'bigText', 'value' => '', 'htmlCode' => "style='width:400px;height:100px;'", 'default' => '', 'libelle' => 'Votre message', 'error' => '', 'required' => true, 'htmlCodeBeforeField' => $arrayBBCode['boutonsHTML']), 'captcha' => array('type' => 'captcha', 'value' => '', 'htmlCode' => "", 'default' => '', 'libelle' => 'Vérification', 'error' => '', 'required' => true));
         }
         if (isset($this->variablesPost['message'])) {
             $errors = $f->getArrayFromPost($configFieldsContact);
             $complementMsgVisiteAdresse = "";
             if (isset($this->variablesGet['archiIdEvenementGroupeAdresseOrigine']) && $this->variablesGet['archiIdEvenementGroupeAdresseOrigine'] != '') {
                 // recuperation de l'intitule de l'adresse
                 $adresse = new archiAdresse();
                 $idAdresseMessage = $adresse->getIdAdresseFromIdEvenementGroupeAdresse($this->variablesGet['archiIdEvenementGroupeAdresseOrigine']);
                 $intituleAdresse = $adresse->getIntituleAdresseFrom($this->variablesGet['archiIdEvenementGroupeAdresseOrigine'], 'idEvenementGroupeAdresse', array('ifTitreAfficheTitreSeulement' => true, 'noQuartier' => true, 'noSousQuartier' => true, 'noVille' => true));
                 $complementMsgVisiteAdresse = " à visité l'adresse <a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $idAdresseMessage, 'archiIdEvenementGroupeAdresse' => $this->variablesGet['archiIdEvenementGroupeAdresseOrigine'])) . "'>" . $intituleAdresse . "</a> et";
             }
             if (count($errors) == 0) {
                 // envoi du mail
                 $contenu = "Bonjour, <br><br>";
                 $contenu .= "Un utilisateur d'archi-strasbourg (<a href=\"mailto:" . $this->variablesPost['mailEnvoyeur'] . "\">" . $this->variablesPost['mailEnvoyeur'] . "</a>){$complementMsgVisiteAdresse} vous envoie un message privé :<br><br>";
                 $contenu .= stripslashes($bb->convertToDisplay(array('text' => $this->variablesPost['message'])));
                 $contenu .= "";
                 $contenu .= "";
                 if ($mail->sendMail($this->siteMail, $infosArray['mail'], "Un utilisateur d'archi-strasbourg vous envoie un message", $contenu, $writeMailToLogs = false, $this->variablesPost['mailEnvoyeur'])) {
                     echo "<span style='color:red;'>Mail envoyé.</span>";
                 }
             }
         }
         $arrayUrlViensDeAdresse = array();
         if (isset($this->variablesGet['archiIdEvenementGroupeAdresseOrigine']) && $this->variablesGet['archiIdEvenementGroupeAdresseOrigine'] != '') {
             $arrayUrlViensDeAdresse = array('archiIdEvenementGroupeAdresseOrigine' => $this->variablesGet['archiIdEvenementGroupeAdresseOrigine']);
         }
         $configForm = array('formAction' => $this->creerUrl('', 'detailProfilPublique', array_merge($arrayUrlViensDeAdresse, array('archiIdUtilisateur' => $idUtilisateur))), 'fields' => $configFieldsContact, 'formName' => 'messagePrive', 'codeHtmlInFormAfterFields' => "Prévisualisation :" . $arrayBBCode['divAndJsAfterForm']);
         $html .= "<br><br><h2>Lui envoyer un message personnel :</h2>";
         $html .= $f->afficherFromArray($configForm);
     }
     return $html;
 }
 /**
  * Afficher la gestion des étapes d'un parcours
  * 
  * @param array $params Paramètres
  * 
  * @return string HTML
  * */
 public function getHtmlGestionEtapesParcours($params = array())
 {
     $html = "<h1>Gestion des étapes du parcours</h1>";
     $idParcours = 0;
     if (isset($this->variablesGet['archiIdParcours']) && $this->variablesGet['archiIdParcours'] != '') {
         $f = new formGenerator();
         $a = new archiAdresse();
         $bbCode = new bbCodeObject();
         $s = new stringObject();
         $formName = 'formGestionEtapes';
         $popupChoixAdresses = new calqueObject(array('idPopup' => 'popupChoixAdresses'));
         $popupVisualisationGoogleMap = new calqueObject(array('idPopup' => 'popupVisualisationGoogleMap'));
         $idParcours = $this->variablesGet['archiIdParcours'];
         $reqNbEtapes = "SELECT idEtape FROM etapesParcoursArt WHERE idParcours = '" . $idParcours . "'";
         $resNbEtapes = $this->connexionBdd->requete($reqNbEtapes);
         $html .= "<br>nombre d'étapes : " . mysql_num_rows($resNbEtapes) . "<br>";
         $reqListeEtapes = "SELECT idEtape,idEvenementGroupeAdresse,position,commentaireEtape FROM etapesParcoursArt WHERE idParcours = '" . $idParcours . "' ORDER BY position ASC,idEtape ASC";
         $resListeEtapes = $this->connexionBdd->requete($reqListeEtapes);
         $listeTriableObject = new imageObject();
         // dans l'objet image , il y a une fonction qui permet de creer des listes triables par drag and drop
         $html .= "<script>" . $listeTriableObject->getJSFunctionsDragAndDrop() . "</script>";
         $i = 0;
         $arrayListeEtapes = array();
         while ($fetchListeEtapes = mysql_fetch_assoc($resListeEtapes)) {
             $arrayListeEtapes[$i]['idEtape'] = array('value' => $fetchListeEtapes['idEtape'], 'type' => 'identifiant');
             $arrayListeEtapes[$i]['#'] = array('value' => $i + 1, 'type' => 'free');
             $arrayListeEtapes[$i]['&nbsp;'] = array('value' => "<a href='" . $this->creerUrl('', 'etapesParcoursFormulaire', array('archiIdEtape' => $fetchListeEtapes['idEtape'], 'archiIdParcours' => $idParcours)) . "'>" . $fetchListeEtapes['idEtape'] . "</a>", 'type' => 'free', 'widthColonne' => 50);
             $arrayListeEtapes[$i]['adresse'] = array('value' => $a->getIntituleAdresseFrom($fetchListeEtapes['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('setSeparatorAfterTitle' => '<br>', 'displayFirstTitreAdresse' => true, 'noVille' => true, 'noQuartier' => true, 'noSousQuartier' => true)), 'type' => 'free', 'widthColonne' => 250);
             $arrayListeEtapes[$i]['commentaire'] = array('type' => 'free', 'widthColonne' => 400, 'value' => $s->coupureTexte($s->sansBalisesHtml(stripslashes($fetchListeEtapes['commentaireEtape'])), 10));
             $coords = $a->getCoordonneesFrom($fetchListeEtapes['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
             $i++;
         }
         $boutonValidationOrdreEtapes = "<input type='button' name='validationOrdreAffichage' value='Validation ordre des étapes' onclick=\"document.getElementById('" . $formName . "').action='" . $this->creerUrl('enregistrerOrdreEtapesParcours', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours)) . "';" . $listeTriableObject->getJSSubmitDragAndDrop() . "document.getElementById('" . $formName . "').submit();\">";
         $html .= $listeTriableObject->createSortableFormListeFromArray($arrayListeEtapes, array('styleEntete' => 'font-weight:bold;background-color:#007799;color:#FFFFFF;')) . $boutonValidationOrdreEtapes;
         $sousTitre = "Ajout d'une étape";
         $idEtape = 0;
         $libelleAdresse = '';
         $commentaireEtape = '';
         $idAdresse = '';
         $idEvenementGroupeAdresse = 0;
         $boutonNouveau = "";
         $boutonVisualisation = "<input type='button' name='visualisation' value='Visualiser' onclick=\"" . $popupVisualisationGoogleMap->getJSOpenPopup() . "document.getElementById('" . $popupVisualisationGoogleMap->getJSIFrameId() . "').src='" . $this->creerUrl('', 'carteGoogleMapParcoursArt', array('noHeaderNoFooter' => 1, 'archiIdParcours' => $idParcours)) . "'\">";
         $boutonRetour = "<input type='button' name='retour' value='Retour' onclick=\"location.href='" . $this->creerUrl('', 'adminListeParcours', array()) . "';\">";
         $boutonSupprimer = "";
         // ajout d'une nouvelle etape
         $formAction = $this->creerUrl('ajouterEtapeParcours', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours));
         if (mysql_num_rows($resNbEtapes) == 0) {
             // si pas d'etapes encore , on peut definir un message
         } else {
             // il y a une ou plusieurs etapes dans le parcours
             if (isset($this->variablesGet['archiIdEtape']) && $this->variablesGet['archiIdEtape'] != '') {
                 $idEtape = $this->variablesGet['archiIdEtape'];
                 $reqEtape = "SELECT idEvenementGroupeAdresse,commentaireEtape FROM etapesParcoursArt WHERE idEtape='" . $idEtape . "'";
                 $resEtape = $this->connexionBdd->requete($reqEtape);
                 $fetchEtape = mysql_fetch_assoc($resEtape);
                 $sousTitre = _("Modification d'une étape");
                 $formAction = $this->creerUrl('modifierEtapeParcours', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours, 'archiIdEtape' => $this->variablesGet['archiIdEtape']));
                 $commentaireEtape = $fetchEtape['commentaireEtape'];
                 $libelleAdresse = $a->getIntituleAdresseFrom($fetchEtape['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
                 $idAdresse = '';
                 $idEvenementGroupeAdresse = $fetchEtape['idEvenementGroupeAdresse'];
                 $boutonNouveau = "<input type='button' name='boutonNouveau' value='Nouveau' onclick=\"location.href='" . $this->creerUrl('', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours)) . "';\">";
                 $boutonSupprimer = "<input type='button' name='boutonSupprimer' value='Supprimer' onclick=\"location.href='" . $this->creerUrl('supprimerEtapeParcours', 'etapesParcoursFormulaire', array('archiIdParcours' => $idParcours, 'archiIdEtapeSupprimer' => $idEtape)) . "';\">";
                 $coord = $a->getCoordonneesFrom($fetchEtape['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse');
             } else {
                 $coord = array("latitude" => "", "longitude" => "");
             }
         }
         $bbCodeElementsArray = $bbCode->getBoutonsMiseEnFormeTextArea(array('formName' => $formName, 'fieldName' => 'commentaireEtape'));
         $html .= "<hr/>";
         // formulaire ajout-modif etape
         $html .= "<h2>{$sousTitre}</h2>";
         $configFields = array('idParcours' => array('libelle' => 'idParcours', 'type' => 'hidden', 'error' => '', 'value' => '', 'forceValueTo' => $idParcours, 'htmlCode' => ''), 'idEtape' => array('libelle' => 'idEtape', 'type' => 'hidden', 'error' => '', 'value' => '', 'forceValueTo' => $idEtape, 'htmlCode' => ''), 'libelleEvenementGroupeAdresse' => array('libelle' => _('Adresse'), 'type' => 'text', 'error' => '', 'value' => '', 'forceValueTo' => $libelleAdresse, 'htmlCode' => "style='width:300px;' disabled", 'htmlCode2' => "<input type='button' name='choixAdresse' value='Choisir' onclick=\"document.getElementById('" . $popupChoixAdresses->getJSDivId() . "').style.top=(getScrollHeight()+70)+'px';" . $popupChoixAdresses->getJSOpenPopup() . "document.getElementById('" . $popupChoixAdresses->getJSIFrameId() . "').src='" . $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdresseAdminParcours')) . "';\">"), 'latitude' => array('libelle' => _('Latitude'), 'type' => 'text', 'error' => '', 'value' => '', 'forceValueTo' => $coord["latitude"], 'htmlCode' => "style='width:300px;' readonly onclick='this.select();'"), 'longitude' => array('libelle' => _('Longitude'), 'type' => 'text', 'error' => '', 'value' => '', 'forceValueTo' => $coord["longitude"], 'htmlCode' => "style='width:300px;' readonly onclick='this.select();'"), 'idEvenementGroupeAdresse' => array('libelle' => 'idEvenementGroupeAdresse', 'type' => 'hidden', 'error' => '', 'value' => '', 'forceValueTo' => $idEvenementGroupeAdresse, 'htmlCode' => "style='width:300px;'"), 'commentaireEtape' => array('libelle' => 'commentaire', 'type' => 'bigText', 'error' => '', 'value' => '', 'forceValueTo' => $commentaireEtape, 'default' => '', 'htmlCode' => "style='width:500px;height:200px;'", 'htmlCodeBeforeField' => $bbCodeElementsArray['boutonsHTML'], 'htmlCode2' => $bbCodeElementsArray['divAndJsAfterForm']));
         $configForm = array('fields' => $configFields, 'formAction' => $formAction, 'formName' => $formName, 'onClickSubmitButton' => $listeTriableObject->getJSSubmitDragAndDrop(), 'codeHtmlAfterSubmitButton' => $boutonSupprimer . $boutonNouveau . $boutonVisualisation . $boutonRetour, 'codeHtmlInFormAfterFields' => $listeTriableObject->getJSInitAfterListDragAndDrop());
         $html .= $f->afficherFromArray($configForm);
         $html .= $popupChoixAdresses->getDiv(array('lienSrcIFrame' => $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdresseAdminParcours')), 'width' => 750, 'height' => 500, 'left' => 10, 'top' => 70, 'titre' => 'archi-strasbourg.org : Parcours'));
         $html .= $popupVisualisationGoogleMap->getDiv(array('lienSrcIFrame' => ''));
         // on ne precharge pas la carte google map sinon il y a un bug au niveau de la carte , le centre se placerai en haut a gauche
         $html .= "<script  >" . $popupChoixAdresses->getJsToDragADiv() . "</script>";
         // on rend le div deplacable
         $html .= "<script  >" . $popupVisualisationGoogleMap->getJsToDragADiv() . "</script>";
         // on rend le div deplacable
     }
     return $html;
 }