0) $erreurs['objet'] = _T('nospam:erreur_spam'); // on analyse le texte $infos_texte = nospam_analyser_spams($texte); if ($infos_texte['nombre_liens'] > 0) { // si un lien a un titre de moins de 3 caracteres = spam ! if ($infos_texte['caracteres_texte_lien_min'] < 3) { $erreurs['texte'] = _T('nospam:erreur_spam'); } // si le texte contient plus de trois lien = spam ! $nb_lien = lire_config('gamucontact/nb_lien'); $nb_lien = intval($nb_lien); if ($infos_texte['nombre_liens'] > $nb_lien) { $erreurs['texte'] = _T('nospam:erreur_spam'); } } $supprimer_si_arobase = lire_config('gamucontact/supprimer_si_arobase'); if ($supprimer_si_arobase !== 'non' && strrchr($texte, '@')) { $erreurs['texte'] = _T('nospam:erreur_spam'); } } if (count($erreurs)) { return $erreurs; } $f = charger_fonction('gamucontact', 'inc'); $saisies = $f(); //champs obligatoire foreach ($saisies as $s) { if ($s['options']['obligatoire'] === 'oui') { $name = $s['options']['nom']; if (!_request($name)) $erreurs[$name] = 'Ce champs est obligatoire'; } } // pas de mail bidon if (!email_valide(_request('email_contact'))) { //$erreurs['texte'] = _T('gamucontact:erreur_mail_invalide'); $erreurs['email_contact'] = _T('gamucontact:erreur_mail_invalide'); } return $erreurs; } function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') { $retour = []; $set = []; include_spip('classes/facteur'); $f = charger_fonction('gamucontact', 'inc'); $saisies = $f(); if (!empty($saisies)) { foreach ($saisies as $saisie) { $champ = $saisie['options']['nom']; if ( isset($saisies['options']['fonction']) and $f = $saisies['options']['fonction'] ) { $f($id_auteur, $champ, _request($champ)); } elseif ( isset($saisies['options']['modifier']) and $m = $saisies['options']['modifier'] ) { $set[$champ] = $m($champ, _request($champ)); } else { $set[$champ] = _request($champ); } } $set['date_heure'] = date("Y-m-d H:i:s"); $set['statut'] = 'publie'; $set['titre'] = _T('gamucontact:formulaire_contact'); if (count($set) > 0) { $set = pipeline( 'pre_edition', [ 'args' => [ 'table' => 'spip_messages', 'id_objet' => 0, 'action' => 'gamucontact_pre_contact', ], 'data' => $set ] ); $id_message = sql_insertq('spip_messages', $set); } } $destinataires = []; if (intval($id_auteur)) { $email = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($id_auteur)); if ($email) { $destinataires[] = $email; } } $liste_emails = lire_config('gamucontact/liste_emails'); if (strlen($liste_emails)) { $Tliste_emails = explode(';', $liste_emails); if (is_array($Tliste_emails) and count($Tliste_emails)) { $destinataires = array_merge($Tliste_emails, $destinataires); } } $liste_id_auteur = lire_config('gamucontact/liste_id_auteur'); if (strlen($liste_id_auteur)) { $Tliste_id_auteur = explode(';', $liste_id_auteur); if (is_array($Tliste_id_auteur) and count($Tliste_id_auteur)) { $t = sql_allfetsel('email', 'spip_auteurs', sql_in('id_auteur', $Tliste_id_auteur)); if(!empty($t)) { $t = array_column($t, 'email'); $destinataires = array_merge($t, $destinataires); } } } if (!count($destinataires)) { $email_webmaster = lire_config('email_webmaster'); if (strlen($email_webmaster)) { $destinataires[] = $email_webmaster; } } $test_mail = true; if (count($destinataires)) { $langue_defaut = lire_config('langue_site'); $GLOBALS['forcer_lang'] = false; include_spip('facteur_fonctions'); // envoi du mail dans la langue par défaut du site $html = recuperer_fond('modeles/gamucontact_message', ['id_message' => $id_message, 'lang' => $langue_defaut]); $texte = facteur_mail_html2text($html); $corps = [ 'html' => $html, 'texte' => $texte, ]; $sujet = _request('objet'); // pour ne pas avoir de warning de la fonction envoyer_mail() on doit lui passer un paramètre $from et un $header $from = ''; $header = 'X-Originating-IP: '.$GLOBALS['ip']; $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); $test_mail = $envoyer_mail($destinataires, $sujet, $corps, $from, $header); } if (intval($id_message) and $test_mail) { $retour['message_ok'] = _T('gamucontact:formulaire_bien_envoye'); } if ($redirect) { $retour['redirect'] = $redirect; } return $retour; }