You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.1 KiB
66 lines
2.1 KiB
<?php |
|
/** |
|
* Plugin mailsubscribers |
|
* |
|
* @plugin Formidable : abonnement à des listes de diffusion |
|
* @copyright 2017 |
|
* @author tcharlss |
|
* @licence GNU/GPL |
|
* @package SPIP\FormidableMailsubscribers\pipelines |
|
*/ |
|
|
|
// Sécurité |
|
if (!defined('_ECRIRE_INC_VERSION')) { |
|
return; |
|
} |
|
|
|
|
|
/** |
|
* Modifier le tableau retourné par la fonction charger des formulaires |
|
* |
|
* On précharge l'email et le nom pour l'abonnement aux newsletters |
|
* dans les formulaires formidables avec le traitement adéquat activé. |
|
* |
|
* @note |
|
* On s'aligne sur le charger du formulaire `newsletter_subscribe` |
|
* |
|
* @see formulaires_newsletter_subscribe_charger_dist() |
|
* |
|
* @param array $flux |
|
* @return array |
|
*/ |
|
function formidable_mailsubscribers_formulaire_charger($flux) { |
|
include_spip('formidable_fonctions'); |
|
|
|
// Recherche des éventuels traitements |
|
if (isset($flux['data']['_formidable']['traitements'])) { |
|
$traitements = function_exists('formidable_deserialize') ? formidable_deserialize($flux['data']['_formidable']['traitements']) : unserialize($flux['data']['_formidable']['traitements']); |
|
} else { |
|
$traitements = array(); |
|
} |
|
|
|
if ( |
|
$flux['args']['form'] === 'formidable' |
|
and is_array($traitements) |
|
and in_array('mailsubscribe', array_keys($traitements)) |
|
and !(isset($flux['args']['args'][2]) and $flux['args']['args'][2])// argument 2 dans le tableau, 3 de l'appel à #FORMIDABLE_CHARGER, c'est la réponse qu'on précharge, dans ce cas garder les valeurs de la réponse, et ne pas prendre en session |
|
) { |
|
foreach (array('email', 'nom') as $champ) { |
|
$nom_champ = (isset($traitements['mailsubscribe']["champ_${champ}_mailsubscribe"]) ? $traitements['mailsubscribe']["champ_${champ}_mailsubscribe"] : null); |
|
if ( |
|
isset($GLOBALS['visiteur_session'][$champ]) |
|
and !_request($nom_champ) |
|
and $nom_champ |
|
) { |
|
$flux['data'][$nom_champ] = $GLOBALS['visiteur_session'][$champ]; |
|
} elseif ( |
|
isset($GLOBALS['visiteur_session']["session_$champ"]) |
|
and !_request($nom_champ) |
|
) { |
|
$flux['data'][$nom_champ] = $GLOBALS['visiteur_session']["session_$champ"]; |
|
} |
|
} |
|
} |
|
|
|
return $flux; |
|
}
|
|
|