Feat: ajout du téléphone dans les coordonnées demandées (configurable). Par ailleurs le truc d'un mail par langue est une embuscade si on veut pouvoir utiliser des mails ne correspondant pas à des auteurs du site (ce qu'autorise la conf de Gamucontact ou si on utilise le mail par défaut du site) ...alors comme en plus ça ne change quasi rien pour le destinataire : KISS = on supprime
This commit is contained in:
parent
3c9534e4cf
commit
6ff3231416
8 changed files with 98 additions and 89 deletions
|
@ -37,7 +37,7 @@ function gamucontact_declarer_tables_objets_sql($tables) {
|
||||||
'nom' => "varchar(255) NOT NULL",
|
'nom' => "varchar(255) NOT NULL",
|
||||||
'telephone' => "varchar(55) NOT NULL",
|
'telephone' => "varchar(55) NOT NULL",
|
||||||
'email_contact' => "varchar(255) 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_heure' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
|
||||||
'date_fin' => "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 ''",
|
'rv' => "varchar(3) NOT NULL DEFAULT ''",
|
||||||
|
|
|
@ -10,20 +10,31 @@
|
||||||
#ACTION_FORMULAIRE
|
#ACTION_FORMULAIRE
|
||||||
<input type='submit' class='btn submit' value='<:bouton_enregistrer:>' style="display:none;"/>
|
<input type='submit' class='btn submit' value='<:bouton_enregistrer:>' style="display:none;"/>
|
||||||
|
|
||||||
<div class="fieldset">
|
|
||||||
<fieldset id="destinataires">
|
<fieldset id="destinataires">
|
||||||
<legend>Destinataires</legend>
|
<legend><:gamucontacts:destinataires:></legend>
|
||||||
|
<div class="editer_groupe">
|
||||||
#SAISIE{input, liste_id_auteur, label=Destinaires auteurs SPIP, explication=une liste d'id_auteur séparés par des ;}
|
#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}
|
#SAISIE{textarea, liste_emails, label=Destinaires sans compte auteur, explication=une liste d'emails séparés par des ;, rows=3}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset id="telephone">
|
||||||
|
<legend><:gamucontacts:telephone:></legend>
|
||||||
|
<div class="editer_groupe">
|
||||||
|
#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} }
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset id="anti-spam">
|
<fieldset id="anti-spam">
|
||||||
<legend>Anti Spams</legend>
|
<legend><:gamucontacts:antispam:></legend>
|
||||||
|
<div class="editer_groupe">
|
||||||
#SAISIE{input, nb_lien, defaut=0, label=Nombre maximum de liens autorisés dans un message}
|
#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{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_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 }
|
#SAISIE{input, temps_hash_ip, defaut=24, label=Durée avant hashage de l'IP dans la bdd }
|
||||||
</fieldset>
|
|
||||||
</div>
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<input type="hidden" name="_meta_casier" value="gamucontact" />
|
<input type="hidden" name="_meta_casier" value="gamucontact" />
|
||||||
|
|
||||||
<p class="boutons">
|
<p class="boutons">
|
||||||
|
|
|
@ -66,6 +66,7 @@ function formulaires_gamucontact_verifier_dist($id_auteur = 0, $redirect = '') {
|
||||||
|
|
||||||
$f = charger_fonction('gamucontact', 'inc');
|
$f = charger_fonction('gamucontact', 'inc');
|
||||||
$saisies = $f();
|
$saisies = $f();
|
||||||
|
|
||||||
//champs obligatoire
|
//champs obligatoire
|
||||||
foreach ($saisies as $s) {
|
foreach ($saisies as $s) {
|
||||||
if ($s['options']['obligatoire'] === 'oui') {
|
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 = '') {
|
function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') {
|
||||||
|
|
||||||
|
$retour = [];
|
||||||
|
$set = [];
|
||||||
|
|
||||||
include_spip('classes/facteur');
|
include_spip('classes/facteur');
|
||||||
$f = charger_fonction('gamucontact', 'inc');
|
$f = charger_fonction('gamucontact', 'inc');
|
||||||
$saisies = $f();
|
$saisies = $f();
|
||||||
|
|
||||||
$retour = [];
|
|
||||||
$set = [];
|
|
||||||
if (!empty($saisies)) {
|
if (!empty($saisies)) {
|
||||||
foreach ($saisies as $saisie) {
|
foreach ($saisies as $saisie) {
|
||||||
$champ = $saisie['options']['nom'];
|
$champ = $saisie['options']['nom'];
|
||||||
|
@ -109,14 +111,14 @@ function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') {
|
||||||
if (count($set) > 0) {
|
if (count($set) > 0) {
|
||||||
$set = pipeline(
|
$set = pipeline(
|
||||||
'pre_edition',
|
'pre_edition',
|
||||||
array(
|
[
|
||||||
'args' => array(
|
'args' => [
|
||||||
'action' => 'gamucontact_pre_contact',
|
|
||||||
'table' => 'spip_messages',
|
'table' => 'spip_messages',
|
||||||
'id_objet' => 0
|
'id_objet' => 0,
|
||||||
),
|
'action' => 'gamucontact_pre_contact',
|
||||||
|
],
|
||||||
'data' => $set
|
'data' => $set
|
||||||
)
|
]
|
||||||
);
|
);
|
||||||
$id_message = sql_insertq('spip_messages', $set);
|
$id_message = sql_insertq('spip_messages', $set);
|
||||||
}
|
}
|
||||||
|
@ -149,56 +151,34 @@ function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$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)) {
|
if (!count($destinataires)) {
|
||||||
$email_webmaster = lire_config('email_webmaster');
|
$email_webmaster = lire_config('email_webmaster');
|
||||||
if (strlen($email_webmaster)) {
|
if (strlen($email_webmaster)) {
|
||||||
$Tdest_langue[] = $email_webmaster;
|
$destinataires[] = $email_webmaster;
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$Tdest_langue = $destinataires;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// envoi du mail dans cette langue
|
$test_mail = true;
|
||||||
$html = recuperer_fond('modeles/gamucontact_message', ['id_message' => $id_message, 'lang' => $langue]);
|
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);
|
$texte = facteur_mail_html2text($html);
|
||||||
$corps = array(
|
$corps = [
|
||||||
'html' => $html,
|
'html' => $html,
|
||||||
'texte' => $texte,
|
'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');
|
$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) {
|
if (intval($id_message) and $test_mail) {
|
||||||
$retour['message_ok'] = _T('gamucontact:formulaire_bien_envoye');
|
$retour['message_ok'] = _T('gamucontact:formulaire_bien_envoye');
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ function gamucontact_upgrade($nom_meta_base_version, $version_cible) {
|
||||||
$maj = array();
|
$maj = array();
|
||||||
|
|
||||||
$maj['create'] = array(array('maj_tables', array('spip_messages')));
|
$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')));
|
$maj['1.0.6'] = array(array('maj_tables', array('spip_messages')));
|
||||||
|
|
||||||
include_spip('base/upgrade');
|
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) {
|
function gamucontact_vider_tables($nom_meta_base_version) {
|
||||||
|
|
||||||
|
|
||||||
effacer_meta($nom_meta_base_version);
|
effacer_meta($nom_meta_base_version);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function inc_gamucontact_dist(){
|
function inc_gamucontact_dist(){
|
||||||
|
$saisies = [
|
||||||
return [
|
|
||||||
[
|
[
|
||||||
'saisie' => 'input',
|
'saisie' => 'input',
|
||||||
'options' => array(
|
'options' => array(
|
||||||
|
@ -25,26 +24,42 @@ function inc_gamucontact_dist(){
|
||||||
'obligatoire' => 'oui',
|
'obligatoire' => 'oui',
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
[
|
];
|
||||||
|
|
||||||
|
// 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',
|
'saisie' => 'input',
|
||||||
'options' => array(
|
'options' => [
|
||||||
|
'nom' => 'telephone',
|
||||||
|
'label' => '<:gamucontact:votre_telephone:>',
|
||||||
|
'obligatoire' => lire_config('gamucontact/telephone_obligatoire') === 'oui' ? 'oui' : 'non',
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$saisies[] = [
|
||||||
|
'saisie' => 'input',
|
||||||
|
'options' => [
|
||||||
'nom' => 'objet',
|
'nom' => 'objet',
|
||||||
'label' => '<:gamucontact:objet:>',
|
'label' => '<:gamucontact:objet:>',
|
||||||
'obligatoire' => 'oui',
|
'obligatoire' => 'oui',
|
||||||
'class' => 'w100'
|
'class' => 'w100'
|
||||||
//'fonction' => 'ma_super_fonction'
|
//'fonction' => 'ma_super_fonction'
|
||||||
)
|
]
|
||||||
],
|
];
|
||||||
[
|
$saisies[] = [
|
||||||
'saisie' => 'textarea',
|
'saisie' => 'textarea',
|
||||||
'options' => array(
|
'options' => [
|
||||||
'nom' => 'texte',
|
'nom' => 'texte',
|
||||||
'label' => '<:gamucontact:message:>',
|
'label' => '<:gamucontact:message:>',
|
||||||
'obligatoire' => 'oui',
|
'obligatoire' => 'oui',
|
||||||
'class' => 'w100',
|
'class' => 'w100',
|
||||||
'rows' => 4
|
'rows' => 4
|
||||||
//'fonction' => 'ma_super_fonction'
|
//'fonction' => 'ma_super_fonction'
|
||||||
)
|
]
|
||||||
],
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
return $saisies;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
||||||
// V
|
// V
|
||||||
'votre_nom' => 'Your name',
|
'votre_nom' => 'Your name',
|
||||||
'votre_email' => 'Your email',
|
'votre_email' => 'Your email',
|
||||||
|
'votre_telephone' => 'Your telephone number',
|
||||||
|
|
||||||
|
|
||||||
// T
|
// T
|
||||||
'titre_page_configurer_gamucontact' => 'GamuContact',
|
'titre_page_configurer_gamucontact' => 'GamuContact',
|
||||||
|
|
|
@ -35,6 +35,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
||||||
// V
|
// V
|
||||||
'votre_nom' => 'Votre nom',
|
'votre_nom' => 'Votre nom',
|
||||||
'votre_email' => 'Votre email',
|
'votre_email' => 'Votre email',
|
||||||
|
'votre_telephone' => 'Votre numéro de téléphone',
|
||||||
|
|
||||||
// T
|
// T
|
||||||
'titre_page_configurer_gamucontact' => 'GamuContact',
|
'titre_page_configurer_gamucontact' => 'GamuContact',
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
categorie="communication"
|
categorie="communication"
|
||||||
version="1.0.6"
|
version="1.0.6"
|
||||||
etat="test"
|
etat="test"
|
||||||
compatibilite="[3.2.10;4.1.*]"
|
compatibilite="[3.2.10;4.2.*]"
|
||||||
logo="./gamucontact-xx.svg"
|
logo="./gamucontact-xx.svg"
|
||||||
documentation=""
|
documentation=""
|
||||||
schema="1.0.6"
|
schema="1.0.6"
|
||||||
|
|
Loading…
Add table
Reference in a new issue