source: spip-zone/_squelettes_/html5up_alpha/formulaires/newsletter_subscribe.php @ 103764

Last change on this file since 103764 was 103764, checked in by ben.spip@…, 3 years ago

newsletter

File size: 2.9 KB
Line 
1<?php
2/**
3 * Plugin mailsubscribers
4 * (c) 2012 Cédric Morin
5 * Licence GNU/GPL v3
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10
11/**
12 * Declarer les champs postes et y integrer les valeurs par defaut
13 * @param string|array $listes
14 * @param string $option
15 *   '', 'checklist', 'list'
16 * @return array|bool
17 */
18function formulaires_newsletter_subscribe_charger_dist($listes = '', $option = '') {
19        if ($listes AND is_string($listes)) {
20                $listes = explode(',', $listes);
21        }
22
23        $valeurs = array(
24                'session_email' => ''
25        );
26
27        if (isset($GLOBALS['visiteur_session']['email'])) {
28                $valeurs['session_email'] = $GLOBALS['visiteur_session']['email'];
29        } elseif (isset($GLOBALS['visiteur_session']['session_email'])) {
30                $valeurs['session_email'] = $GLOBALS['visiteur_session']['session_email'];
31        }
32
33        if ($listes){
34                if ($option==='checklist') {
35                        $valeurs['_listes_choix'] = $listes;
36                        $valeurs['_checkable'] = ' ';
37                        $valeurs['listes'] = $listes;
38                }
39                elseif($option==='list') {
40                        $valeurs['_listes_choix'] = $listes;
41                }
42        }
43
44        return $valeurs;
45}
46
47/**
48 * Verifier les champs postes et signaler d'eventuelles erreurs
49 */
50function formulaires_newsletter_subscribe_verifier_dist($listes = '', $option = '') {
51
52        $erreurs = array();
53
54        if ($listes AND is_string($listes)) {
55                $listes = explode(',', $listes);
56        }
57
58        if ($listes and $option==='checklist' and !_request('listes')){
59                $erreurs['listes'] = _T('info_obligatoire');
60                set_request('listes',array());
61        }
62
63        if (!$email = _request('session_email')) {
64                $erreurs['session_email'] = _T('info_obligatoire');
65        } else {
66                // verifier que l'email est valide
67                if (!email_valide($email)) {
68                        $erreurs['session_email'] = _T('info_email_invalide');
69                }
70        }
71
72        return $erreurs;
73}
74
75/**
76 * Traiter les champs postes
77 */
78function formulaires_newsletter_subscribe_traiter_dist($listes = '', $option = '') {
79
80        // langue par defaut lors de l'inscription : la langue courante dans la page
81        $options = array('lang' => $GLOBALS['spip_lang']);
82        $email = _request('session_email');
83        if ($listes AND is_string($listes)) {
84                $listes = explode(',', $listes);
85        }
86        if ($listes AND is_array($listes) AND count($listes)) {
87                if ($option==='checklist'){
88                        $listes = array_intersect($listes, _request('listes'));
89                }
90                include_spip('inc/mailsubscribers');
91                $listes_dispo = mailsubscribers_listes(array('status'=>'open'));
92                $listes = array_intersect($listes, array_keys($listes_dispo));
93                $options['listes'] = $listes;
94        }
95
96        $res = array(
97                'editable' => true
98        );
99
100        $newsletter_subscribe = charger_fonction("subscribe", "newsletter");
101        if ($newsletter_subscribe($email, $options)) {
102                if (lire_config('mailsubscribers/double_optin', 0)) {
103                        $res['message_ok'] = _T('newsletter:subscribe_message_ok_confirm', array('email' => "<b>$email</b>"));
104                } else {
105                        $res['message_ok'] = _T('newsletter:subscribe_message_ok', array('email' => "<b>$email</b>"));
106                }
107        } else {
108                $res['message_erreur'] = _T('mailsubscriber:erreur_technique_subscribe');
109        }
110        set_request('session_email');
111
112        return $res;
113}
114
Note: See TracBrowser for help on using the repository browser.