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

<?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;
}