Browse Source

Ajout d'un plugin qui ajoute un traitement à formidable : s'abonner à des listes de diffusion via mailsubscribers. Nécessite une version récente de ce dernier (> 1.10)

issue_3
tcharlss@bravecassine.com 6 years ago
commit
7e78a6a794
  1. 7
      .gitattributes
  2. 23
      lang/formidable_mailsubscribers_fr.php
  3. 14
      lang/paquet-formidable_mailsubscribers_fr.php
  4. 21
      paquet.xml
  5. BIN
      prive/themes/spip/images/formidable_mailsubscribers-64.png
  6. 69
      traiter/mailsubscribe.php
  7. 31
      traiter/mailsubscribe.yaml

7
.gitattributes vendored

@ -0,0 +1,7 @@
* text=auto !eol
lang/formidable_mailsubscribers_fr.php -text
lang/paquet-formidable_mailsubscribers_fr.php -text
/paquet.xml -text
prive/themes/spip/images/formidable_mailsubscribers-64.png -text
traiter/mailsubscribe.php -text
traiter/mailsubscribe.yaml -text

23
lang/formidable_mailsubscribers_fr.php

@ -0,0 +1,23 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
'traiter_mailsubscribe_titre' => 'Abonner à des listes de diffusion',
'traiter_mailsubscribe_description' => 'Traiter les abonnements aux listes de diffusion du plugin mailsubscribers.',
'traiter_mailsubscribe_champ_email_label' => 'Champ de l\'Email',
'traiter_mailsubscribe_champ_nom_label' => 'Champ du nom',
'traiter_mailsubscribe_champ_listes_label' => 'Champ des listes de diffusion',
'traiter_mailsubscribe_champ_notify_label' => 'Notification',
'traiter_mailsubscribe_champ_notify_label_case' => 'Envoyer une notification à l\'abonné',
'traiter_mailsubscribe_champ_invite_email_from_label' => 'Expéditeur de l\'invitation',
'traiter_mailsubscribe_champ_invite_email_from_explication' => 'Laisser vide pour utiliser la valeur par défaut',
'traiter_mailsubscribe_champ_invite_email_text_label' => 'Message personnalisé d\'invitation',
'traiter_mailsubscribe_champ_invite_email_text_explication' => 'Laisser vide pour utiliser le texte par défaut',
);

14
lang/paquet-formidable_mailsubscribers_fr.php

@ -0,0 +1,14 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// F
'formidable_mailsubscribers_description' => 'Ajout d\'un traitement aux formulaires formidables pour permettre l\'abonnement aux listes de diffusion du plugin Mailsubscribers.',
'formidable_mailsubscribers_nom' => 'Formidable : abonnements à des listes de diffusion',
'formidable_mailsubscribers_slogan' => 'Extension du plugin formidable',
);

21
paquet.xml

@ -0,0 +1,21 @@
<paquet
prefix="formidable_mailsubscribers"
categorie="communication"
version="1.0.0"
etat="test"
compatibilite="[3.0.0;3.2.*]"
logo="prive/themes/spip/images/formidable_mailsubscribers-64.png"
documentation=""
>
<nom>Formidable : abonnements à des listes de diffusion</nom>
<auteur lien="https://bravecassine.com">tcharlss</auteur>
<auteur lien="https://www.ldd.fr">Les Développements Durables</auteur>
<licence>GNU/GPL</licence>
<necessite nom="formidable" compatibilite="[2.5.11;]" />
<necessite nom="mailsubscribers" compatibilite="[1.10.0;]" />
</paquet>

BIN
prive/themes/spip/images/formidable_mailsubscribers-64.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

69
traiter/mailsubscribe.php

@ -0,0 +1,69 @@
<?php
/**
* Traitement abonnement à des listes de diffusion à la saisie d'un formulaire
*
* @plugin Formidable : abonnement à des listes de diffusion
* @copyright 2017
* @author tcharlss
* @licence GNU/GPL
* @package SPIP\FormidableMailsubscribers\traiter\mailsubscribe
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Traitements
*
* @note
* Il reste quelques options non utilisées pour la fonction d'abonnement :
* - lang : code de langue
* - force : true pour bypasser le doubleoptin, -1 pour le forcer
* - graceful : false = ne pas inscrire un auteur désabonné
*
* @param array $args
* @param bool $retours
* @return bool
*/
function traiter_mailsubscribe_dist($args, $retours){
$formulaire = $args['formulaire'];
$options = $args['options'];
$saisies = unserialize($formulaire['saisies']);
$traitements = unserialize($formulaire['traitements']);
// Récupérons les noms des champs configurés
$champ_email = isset($options['champ_email_mailsubscribe']) ? $options['champ_email_mailsubscribe'] : null;
$champ_nom = isset($options['champ_nom_mailsubscribe']) ? $options['champ_nom_mailsubscribe'] : null;
$champ_listes = isset($options['champ_listes_mailsubscribe']) ? $options['champ_listes_mailsubscribe'] : null;
// Il faut au minimum un email pour procéder
if ($email = _request($champ_email)) {
// Les options à transmettre à la fonction d'abonnement
$options_subscribe = array();
// 1) options : valeurs saisies par l'utilisateur
if ($nom = _request($champ_nom)){
$options_subscribe['nom'] = $nom;
}
if ($listes = _request($champ_listes)){
$options_subscribe['listes'] = $listes;
}
// 2) options : valeurs configurées dans les traitements
if (isset($options['notify'])
and $notify = $options['notify']
){
$options_subscribe['notify'] = true;
}
// Go go go
$subscribe = charger_fonction('subscribe', 'newsletter');
$subscribe($email, $options_subscribe);
}
// noter qu'on a deja fait le boulot, pour ne pas risquer double appel
$retours['traitements']['newsletters'] = true;
return $retours;
}

31
traiter/mailsubscribe.yaml

@ -0,0 +1,31 @@
titre: '<:formidable_mailsubscribers:traiter_mailsubscribe_titre:>'
description: '<:formidable_mailsubscribers:traiter_mailsubscribe_description:>'
options:
-
saisie: 'champ'
options:
nom: 'champ_email_mailsubscribe'
label: '<:formidable_mailsubscribers:traiter_mailsubscribe_champ_email_label:>'
obligatoire: 'oui'
env: true
-
saisie: 'champ'
options:
nom: 'champ_nom_mailsubscribe'
label: '<:formidable_mailsubscribers:traiter_mailsubscribe_champ_nom_label:>'
obligatoire: ''
env: true
-
saisie: 'champ'
options:
nom: 'champ_listes_mailsubscribe'
label: '<:formidable_mailsubscribers:traiter_mailsubscribe_champ_listes_label:>'
obligatoire: 'oui'
env: true
-
saisie: 'case'
options:
nom: 'notify'
label: '<:formidable_mailsubscribers:traiter_mailsubscribe_champ_notify_label:>'
label_case: '<:formidable_mailsubscribers:traiter_mailsubscribe_champ_notify_label_case:>'
defaut: 'on'
Loading…
Cancel
Save