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'); } } } 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'; } } return $erreurs; } function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') { include_spip('classes/facteur'); $f = charger_fonction('gamucontact', 'inc'); $saisies = $f(); $retour = []; $set = []; 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', array( 'args' => array( 'action' => 'gamucontact_pre_contact', 'table' => 'spip_messages', 'id_objet' => 0 ), '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); } } } $test_mail = true; $GLOBALS['forcer_lang'] = false; $langue_defaut = lire_config('langue_site'); include_spip('classes/facteur'); // récupérer les infos de langue des destinataires $dest_langues = sql_allfetsel('id_auteur, lang, email', 'spip_auteurs', sql_in('email', $destinataires), 'email'); // array avec les langues des destinataires if (is_array($dest_langues) and count($dest_langues)) { $langues = array_filter(array_unique(array_column($dest_langues, 'lang'))); } if(empty($langues)) { $langues[] = lire_config('langue_site'); } // trier les destinataires par langue et envoyer un mail par langue foreach ($langues as $langue) { $Tdest_langue = []; foreach ($dest_langues as $dest) { if ($dest['lang'] == '') { $dest['lang'] = $langue_defaut; } if ($dest['lang'] == $langue) { $Tdest_langue[] = $dest['email']; } } // pour la langue du site, si pas de destinataire prendre le mail du webmestre if ($langue === $langue_defaut and !count($dest_langues)) { if (!count($destinataires)) { $email_webmaster = lire_config('email_webmaster'); if (strlen($email_webmaster)) { $Tdest_langue[] = $email_webmaster; } } else { $Tdest_langue = $destinataires; } } // envoi du mail dans cette langue $html = recuperer_fond('modeles/gamucontact_message', ['id_message' => $id_message, 'lang' => $langue]); $texte = facteur_mail_html2text($html); $corps = array( 'html' => $html, 'texte' => $texte, ); $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); $test_mail = $envoyer_mail($Tdest_langue, _request('objet'), $corps, '', 'X-Originating-IP: '.$GLOBALS['ip']); } if (intval($id_message) and $test_mail) { $retour['message_ok'] = _T('gamucontact:formulaire_bien_envoye'); } if ($redirect) { $retour['redirect'] = $redirect; } return $retour; }