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; }