diff --git a/base/gamucontact.php b/base/gamucontact.php index b654969..178d2f5 100644 --- a/base/gamucontact.php +++ b/base/gamucontact.php @@ -37,7 +37,7 @@ function gamucontact_declarer_tables_objets_sql($tables) { 'nom' => "varchar(255) NOT NULL", 'telephone' => "varchar(55) NOT NULL", 'email_contact' => "varchar(255) NOT NULL", - 'type' => "varchar(6) NOT NULL DEFAULT ''", + 'type' => "varchar(25) NOT NULL DEFAULT ''", 'date_heure' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'", 'date_fin' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'", 'rv' => "varchar(3) NOT NULL DEFAULT ''", diff --git a/formulaires/configurer_gamucontact.html b/formulaires/configurer_gamucontact.html index 611bb40..5fbd52d 100644 --- a/formulaires/configurer_gamucontact.html +++ b/formulaires/configurer_gamucontact.html @@ -10,20 +10,31 @@ #ACTION_FORMULAIRE -
- Destinataires - #SAISIE{input, liste_id_auteur, label=Destinaires auteurs SPIP, explication=une liste d'id_auteur séparés par des ;} - #SAISIE{textarea, liste_emails, label=Destinaires sans compte auteur, explication=une liste d'emails séparés par des ;, rows=3} + <:gamucontacts:destinataires:> +
+ #SAISIE{input, liste_id_auteur, label=Destinaires auteurs SPIP, explication=une liste d'id_auteur séparés par des ;} + #SAISIE{textarea, liste_emails, label=Destinaires sans compte auteur, explication=une liste d'emails séparés par des ;, rows=3} +
+
+ <:gamucontacts:telephone:> +
+ #SAISIE{radio, telephone_contact, label=Afficher le champ Numéro de téléphone, data=#ARRAY{oui,Oui, '',Non}} + #SAISIE{radio, telephone_obligatoire, label=Obligatoire ?, data=#ARRAY{oui,Oui, '',Non} } +
+
- Anti Spams - #SAISIE{input, nb_lien, defaut=0, label=Nombre maximum de liens autorisés dans un message} - #SAISIE{radio, verif_ip, defaut=oui, data=#ARRAY{oui,Oui,non,Non}, label=Utilisation de l'IP stocké pour détecter un robot spammeur } - #SAISIE{input, temps_verif_ip, defaut=300, label=Durée maximale entre 2 messages provenant de la meme IP} - #SAISIE{input, temps_hash_ip, defaut=24, label=Durée avant hashage de l'IP dans la bdd } + <:gamucontacts:antispam:> +
+ #SAISIE{input, nb_lien, defaut=0, label=Nombre maximum de liens autorisés dans un message} + #SAISIE{radio, verif_ip, defaut=oui, data=#ARRAY{oui,Oui,non,Non}, label=Utilisation de l'IP stocké pour détecter un robot spammeur } + #SAISIE{input, temps_verif_ip, defaut=300, label=Durée maximale entre 2 messages provenant de la meme IP} + #SAISIE{input, temps_hash_ip, defaut=24, label=Durée avant hashage de l'IP dans la bdd } +
-
+ +

diff --git a/formulaires/gamucontact.php b/formulaires/gamucontact.php index fff8b27..f075955 100644 --- a/formulaires/gamucontact.php +++ b/formulaires/gamucontact.php @@ -66,6 +66,7 @@ function formulaires_gamucontact_verifier_dist($id_auteur = 0, $redirect = '') { $f = charger_fonction('gamucontact', 'inc'); $saisies = $f(); + //champs obligatoire foreach ($saisies as $s) { if ($s['options']['obligatoire'] === 'oui') { @@ -79,12 +80,13 @@ function formulaires_gamucontact_verifier_dist($id_auteur = 0, $redirect = '') { function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') { + $retour = []; + $set = []; + include_spip('classes/facteur'); $f = charger_fonction('gamucontact', 'inc'); $saisies = $f(); - $retour = []; - $set = []; if (!empty($saisies)) { foreach ($saisies as $saisie) { $champ = $saisie['options']['nom']; @@ -109,14 +111,14 @@ function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') { if (count($set) > 0) { $set = pipeline( 'pre_edition', - array( - 'args' => array( + [ + 'args' => [ + 'table' => 'spip_messages', + 'id_objet' => 0, 'action' => 'gamucontact_pre_contact', - 'table' => 'spip_messages', - 'id_objet' => 0 - ), + ], 'data' => $set - ) + ] ); $id_message = sql_insertq('spip_messages', $set); } @@ -149,56 +151,34 @@ function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') { } } } + if (!count($destinataires)) { + $email_webmaster = lire_config('email_webmaster'); + if (strlen($email_webmaster)) { + $destinataires[] = $email_webmaster; + } + } $test_mail = true; - $GLOBALS['forcer_lang'] = false; - $langue_defaut = lire_config('langue_site'); - include_spip('classes/facteur'); + if (count($destinataires)) { + $langue_defaut = lire_config('langue_site'); + $GLOBALS['forcer_lang'] = false; + include_spip('facteur_fonctions'); - // 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, - ); + // 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($Tdest_langue, _request('objet'), $corps, '', 'X-Originating-IP: '.$GLOBALS['ip']); - } + $test_mail = $envoyer_mail($destinataires, $sujet, $corps, $from, $header); + } if (intval($id_message) and $test_mail) { $retour['message_ok'] = _T('gamucontact:formulaire_bien_envoye'); } diff --git a/gamucontact_administrations.php b/gamucontact_administrations.php index 68b7417..4ee49e0 100644 --- a/gamucontact_administrations.php +++ b/gamucontact_administrations.php @@ -27,6 +27,7 @@ function gamucontact_upgrade($nom_meta_base_version, $version_cible) { $maj = array(); $maj['create'] = array(array('maj_tables', array('spip_messages'))); + $maj['1.0.5'] = array(array('maj_tables', array('spip_messages'))); $maj['1.0.6'] = array(array('maj_tables', array('spip_messages'))); include_spip('base/upgrade'); @@ -43,6 +44,5 @@ function gamucontact_upgrade($nom_meta_base_version, $version_cible) { **/ function gamucontact_vider_tables($nom_meta_base_version) { - effacer_meta($nom_meta_base_version); } diff --git a/inc/gamucontact.php b/inc/gamucontact.php index 352d30f..0f6a076 100644 --- a/inc/gamucontact.php +++ b/inc/gamucontact.php @@ -4,8 +4,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { } function inc_gamucontact_dist(){ - - return [ + $saisies = [ [ 'saisie' => 'input', 'options' => array( @@ -25,26 +24,42 @@ function inc_gamucontact_dist(){ 'obligatoire' => 'oui', ) ], - [ - 'saisie' => 'input', - 'options' => array( - 'nom' => 'objet', - 'label' => '<:gamucontact:objet:>', - 'obligatoire' => 'oui', - 'class' => 'w100' - //'fonction' => 'ma_super_fonction' - ) - ], - [ - 'saisie' => 'textarea', - 'options' => array( - 'nom' => 'texte', - 'label' => '<:gamucontact:message:>', - 'obligatoire' => 'oui', - 'class' => 'w100', - 'rows' => 4 - //'fonction' => 'ma_super_fonction' - ) - ], ]; + + // intégrer ou pas le téléphone selon la config + $telephone_contact = lire_config('gamucontact/telephone_contact'); + if ($telephone_contact === 'oui') { + $saisies[] = [ + 'saisie' => 'input', + 'options' => [ + 'nom' => 'telephone', + 'label' => '<:gamucontact:votre_telephone:>', + 'obligatoire' => lire_config('gamucontact/telephone_obligatoire') === 'oui' ? 'oui' : 'non', + ] + ]; + } + + $saisies[] = [ + 'saisie' => 'input', + 'options' => [ + 'nom' => 'objet', + 'label' => '<:gamucontact:objet:>', + 'obligatoire' => 'oui', + 'class' => 'w100' + //'fonction' => 'ma_super_fonction' + ] + ]; + $saisies[] = [ + 'saisie' => 'textarea', + 'options' => [ + 'nom' => 'texte', + 'label' => '<:gamucontact:message:>', + 'obligatoire' => 'oui', + 'class' => 'w100', + 'rows' => 4 + //'fonction' => 'ma_super_fonction' + ] + ]; + + return $saisies; } diff --git a/lang/gamucontact_en.php b/lang/gamucontact_en.php index 2cf2684..5237221 100644 --- a/lang/gamucontact_en.php +++ b/lang/gamucontact_en.php @@ -35,6 +35,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( // V 'votre_nom' => 'Your name', 'votre_email' => 'Your email', + 'votre_telephone' => 'Your telephone number', + // T 'titre_page_configurer_gamucontact' => 'GamuContact', diff --git a/lang/gamucontact_fr.php b/lang/gamucontact_fr.php index 51db7f1..67c4ac9 100644 --- a/lang/gamucontact_fr.php +++ b/lang/gamucontact_fr.php @@ -35,6 +35,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( // V 'votre_nom' => 'Votre nom', 'votre_email' => 'Votre email', + 'votre_telephone' => 'Votre numéro de téléphone', // T 'titre_page_configurer_gamucontact' => 'GamuContact', diff --git a/paquet.xml b/paquet.xml index 76cece5..d6e49cc 100644 --- a/paquet.xml +++ b/paquet.xml @@ -3,7 +3,7 @@ categorie="communication" version="1.0.6" etat="test" - compatibilite="[3.2.10;4.1.*]" + compatibilite="[3.2.10;4.2.*]" logo="./gamucontact-xx.svg" documentation="" schema="1.0.6"