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;
 }
 function getArrayFromPost(&$tableauTravail = array(), $param = null, $captcha = false)
 {
     global $config;
     if (empty($param)) {
         $param = $_POST;
     }
     $errors = array();
     foreach ($tableauTravail as $name => $value) {
         switch ($value['type']) {
             case 'multiple':
                 if (isset($param[$name])) {
                     $tableauTravail[$name]['value'] = $param[$name];
                 }
                 if ($tableauTravail[$name]["required"]) {
                     if (!isset($param[$name]) or count($param[$name]) < 1) {
                         $errors[] = $name;
                         $tableauTravail[$name]['error'] = 'Champ obligatoire';
                     }
                 }
                 break;
             case 'numeric':
                 if (isset($param[$name])) {
                     $tableauTravail[$name]['value'] = $param[$name];
                 }
                 if ($tableauTravail[$name]["required"]) {
                     if ($param[$name] != $tableauTravail[$name]["default"] and $this->estChiffre($param[$name])) {
                         // OK
                     } else {
                         if (!$this->estChiffre($param[$name])) {
                             $errors[] = 'Ce champ requière une valeur numérique';
                             $tableauTravail[$name]['error'] = 'Ce champ requière une valeur numérique';
                         } else {
                             $errors[] = 'Valeur obligatoire';
                             $tableauTravail[$name]['error'] = 'Valeur obligatoire';
                         }
                     }
                 } elseif (isset($tableauTravail[$name]) && isset($param[$name]) && $tableauTravail[$name]["required"] == false && $param[$name] != '' && !$this->estChiffre($param[$name])) {
                     $errors[] = 'Ce champ requière une valeur numérique';
                     $tableauTravail[$name]['error'] = 'Ce champ requière une valeur numérique';
                 } else {
                     if (isset($param[$name]) && $param[$name] == '') {
                         $tableauTravail[$name]['value'] = $tableauTravail[$name]['default'];
                     }
                 }
                 break;
             case 'date':
                 if (isset($param[$name])) {
                     $tableauTravail[$name]['value'] = $param[$name];
                     $dateSansSeparateur = preg_replace('#[^0-9/]#', '', $param[$name]);
                     if ($tableauTravail[$name]['required'] == true) {
                         if (pia_strlen($param[$name]) > 0) {
                             if (pia_strlen($dateSansSeparateur) == 4) {
                                 $tableauTravail[$name]['value'] = '00/00/' . $dateSansSeparateur;
                             } else {
                                 $tabDate = explode('/', $param[$name]);
                                 if (count($tabDate) === 2) {
                                     $tableauTravail[$name]['value'] = '00/' . $tabDate[0] . '/' . $tabDate[1];
                                 } else {
                                     if (count($tabDate) === 3) {
                                         $tableauTravail[$name]['value'] = $tabDate[0] . '/' . $tabDate[1] . '/' . $tabDate[2];
                                     } else {
                                         $errors[] = 'date';
                                         $tableauTravail[$name]['error'] = 'Ce champ doit comprendre 8 chiffres';
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     $tableauTravail[$name]['value'] = $tableauTravail[$name]['default'];
                 }
                 break;
             case 'hidden':
             case 'bigText':
             case 'simpleList':
             case 'text':
                 if (isset($param[$name])) {
                     $tableauTravail[$name]['value'] = $param[$name];
                     if ($tableauTravail[$name]["required"]) {
                         // le champs est requis
                         if ($param[$name] != $tableauTravail[$name]["default"] && trim($param[$name]) != "") {
                             // rien
                         } else {
                             // erreur
                             $errors[] = $name;
                             $tableauTravail[$name]['error'] = 'Champ obligatoire';
                         }
                     }
                 } else {
                     $tableauTravail[$name]['value'] = $tableauTravail[$name]['default'];
                 }
                 break;
             case 'email':
                 if (isset($param[$name])) {
                     $tableauTravail[$name]['value'] = $param[$name];
                     if ($tableauTravail[$name]["required"]) {
                         $mailObj = new mailObject();
                         // le champs est requis
                         if ($param[$name] != $tableauTravail[$name]["default"] && trim($param[$name]) != "" && $mailObj->isMail($param[$name])) {
                             // rien
                         } else {
                             // erreur
                             $errors[] = $name;
                             $tableauTravail[$name]['error'] = 'Champ obligatoire';
                         }
                     }
                 } else {
                     $tableauTravail[$name]['value'] = $tableauTravail[$name]['default'];
                 }
                 break;
             case 'checkbox':
                 if (isset($param[$name])) {
                     $tableauTravail[$name]['value'] = '1';
                 } else {
                     if ($tableauTravail[$name]['default'] != '') {
                         $tableauTravail[$name]['value'] = $tableauTravail[$name]['default'];
                     } else {
                         $tableauTravail[$name]['value'] = '0';
                     }
                 }
                 break;
             case 'radio':
                 $tableauTravail[$name]['value'] = $param[$name];
                 if ($tableauTravail[$name]["required"]) {
                     // le champs est requis
                     if ($param[$name] != $tableauTravail[$name]["default"] && $param[$name] != "") {
                         // rien
                     } else {
                         // erreur
                         $errors[] = $name;
                         $tableauTravail[$name]['error'] = 'Champ obligatoire';
                     }
                 }
                 break;
             case 'checklist':
                 $tableauTravail[$name]['value'] = $param[$name];
                 foreach ($param[$name] as $idCourant) {
                     if (!$this->estChiffre($idCourant)) {
                         $errors[] = $name;
                         $tableauTravail[$name]['error'] = 'Mauvaise valeur !';
                     }
                 }
                 break;
             case 'password':
                 $tableauTravail[$name]['value'] = $param[$name];
                 // si le champ est différent de '' c'est qu'on va modifier le mot de passe
                 // sinon on ne modifie pas
                 // erreur si les deux champs sont différents
                 if ($tableauTravail[$name]['value'] != "") {
                     if (isset($tableauTravail[$name]['fieldToCompare'])) {
                         if ($tableauTravail[$name]['value'] == $param[$tableauTravail[$name]['fieldToCompare']]) {
                             // rien
                         } else {
                             $errors[] = $name;
                             $tableauTravail[$name]['error'] = 'Les mots de passe diffèrent';
                         }
                     }
                 } else {
                     if ($tableauTravail[$name]['required']) {
                         $errors[] = $name;
                         $tableauTravail[$name]['error'] = 'Mot de passe requis';
                     }
                 }
                 break;
             case 'captcha':
                 $securimage = new Securimage();
                 //debug(array('fonction' =>$securimage->check($param[$name]) , 'param' => $param[$name],'name' => $name));
                 if ($securimage->check($param[$name]) == false) {
                     // the code was incorrect
                     // handle the error accordingly with your other error checking
                     $errors[] = $name;
                     $tableauTravail[$name]['error'] = 'Erreur dans le code à recopier';
                 }
                 break;
             default:
                 $tableauTravail[$name]['error'] = 'Ce type de champ n\'existe pas !';
                 break;
         }
         // verification de l'existence d'un identifiant au moment de l'ajout quand il y a une liaison vers une autre table ,  cas des listes select,  multiple etc
         // si la valeur n'existe pas ,  on renvoi une erreur
         if (isset($tableauTravail[$name]['checkExist']) && $tableauTravail[$name]['error'] == '' and $tableauTravail[$name]['value'] != 0) {
             if (is_array($tableauTravail[$name]['value'])) {
                 $liste = implode("', '", $tableauTravail[$name]['value']);
                 $sql = "SELECT DISTINCT " . $tableauTravail[$name]['checkExist']['primaryKey'] . " \n                        FROM " . $tableauTravail[$name]['checkExist']['table'] . " \n                        WHERE " . $tableauTravail[$name]['checkExist']['primaryKey'] . " IN ('" . $liste . "')";
                 $resCheck = $this->connexionBdd->requete($sql);
                 if (mysql_num_rows($resCheck) != count($tableauTravail[$name]['value'])) {
                     $tableauTravail[$name]['error'] = "Un élément a été supprimé de la base de données";
                 }
             } else {
                 $sql = "SELECT DISTINCT " . $tableauTravail[$name]['checkExist']['primaryKey'] . " \n                        FROM " . $tableauTravail[$name]['checkExist']['table'] . " \n                        WHERE " . $tableauTravail[$name]['checkExist']['primaryKey'] . "='" . $tableauTravail[$name]['value'] . "' LIMIT 1";
                 $resCheck = $this->connexionBdd->requete($sql);
                 if (mysql_num_rows($resCheck) == 0) {
                     $tableauTravail[$name]['error'] = "Cet élément a été supprimé de la base de données";
                 }
             }
         }
     }
     if ($captcha) {
         if (isset($param["g-recaptcha-response"])) {
             $ch = curl_init();
             curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($ch, CURLOPT_POSTFIELDS, array('secret' => $config->captchakey, 'response' => $param["g-recaptcha-response"]));
             $resp = json_decode(curl_exec($ch));
             if (!$resp->success) {
                 $errors['captcha-error'] = 'Captcha incorrect !';
             }
         } else {
             $errors['captcha-error'] = 'Captcha manquant !';
         }
     }
     return $errors;
 }