source: spip-zone/_plugins_/mailsubscribers/trunk/formulaires/configurer_mailsubscribers.php @ 69683

Last change on this file since 69683 was 69683, checked in by marcimat@…, 7 years ago

Oups, il ne faut pas considérer une nouvelle liste créée comme un renommage de 'newsletter::newsletter' !!

File size: 3.2 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;
9include_spip("inc/mailsubscribers");
10include_spip("inc/config");
11include_spip("inc/cvt_configurer");
12
13function formulaires_configurer_mailsubscribers_charger_dist(){
14        $valeurs = array(
15                'proposer_signup_optin' => lire_config('mailsubscribers/proposer_signup_optin',0),
16                'double_optin' => lire_config('mailsubscribers/double_optin',1),
17                'lists' => lire_config('mailsubscribers/lists',array()),
18        );
19
20        foreach ($valeurs['lists'] as $k => $v){
21                $valeurs['lists'][$k]['id'] = mailsubscribers_filtre_liste($v['id']);
22        }
23
24        return $valeurs;
25}
26
27function formulaires_configurer_mailsubscribers_verifier_dist(){
28        $erreurs = array();
29
30        if ($lists = _request('lists')) {
31                foreach ($lists as $k => $v){
32                        if (strlen($v['id'])  AND !strlen($v['titre'])){
33                                $erreurs['lists'][$k]['titre'] = _T('info_obligatoire');
34                        }
35                }
36        }
37
38        return $erreurs;
39}
40
41/**
42 * Enregistrement de la configuration de mailsubscribers
43 *
44 * @note
45 *   La liste des listes de diffusion déclarées en configuration
46 *   est systématiquement complétée par celles présentes réellement
47 *   en base dans spip_mailsubscribers.
48 *
49 *   Changer l'identifiant d'une liste nécessite aussi de le
50 *   modifier dans spip_mailsubscribers.
51 *
52 * @return array
53**/
54function formulaires_configurer_mailsubscribers_traiter_dist(){
55
56        if ($lists = _request('lists')) {
57                $renommages = array(); # un renommage a t'il eu lieu ?
58                foreach (_request('lists') as $k => $v) {
59
60                        // l'ancien nom d'identifiant. Ne pas normaliser s'il est vide !
61                        // sinon cela lui met 'newsletter::newsletter' d'office.
62                        if ($v['id_bak']) {
63                                $id_bak = mailsubscribers_normaliser_nom_liste($v['id_bak']);
64                        } else {
65                                $id_bak = '';
66                        }
67                        unset($v['id_bak']);
68
69                        // cas d'une suppression de liste d'information
70                        if ($v['status'] == 'delete') {
71                                mailsubscribers_supprimer_identifiant_liste($id_bak);
72                                unset($lists[$k]);
73                                continue;
74                        }
75
76                        // autres cas (nouvelle ou modification)
77                        if (strlen(trim($v['id']))) {
78                                $lists[$k]['id'] = mailsubscribers_normaliser_nom_liste($v['id']);
79                                if (!in_array($v['status'], array('open', 'close'))) {
80                                        $lists[$k]['status'] = 'open';
81                                }
82
83                                // renommage d'une liste (il existe un ancien identifiant non vide)
84                                if ($id_bak AND ($lists[$k]['id'] != $id_bak)) {
85                                        mailsubscribers_renommer_identifiant_liste($id_bak, $lists[$k]['id']);
86                                        $renommages[$k] = $lists[$k]['id'];
87                                }
88                        }
89                        else {
90                                unset($lists[$k]);
91                        }
92                }
93
94                // si une liste est renommée (identifiant) du nom d'une autre existante,
95                // on supprime la liste renommée.
96                if ($renommages) {
97                        foreach ($renommages as $c => $id) {
98                                foreach ($lists as $k => $v) {
99                                        if (($c != $k) AND ($v['id'] == $id)) {
100                                                unset($lists[$c]);
101                                                break;
102                                        }
103                                }
104                        }
105                }
106
107                set_request('lists',array_merge($lists)); // array_merge pour renumeroter les cles numeriques...
108                ecrire_config('mailsubscribers/',array('lists'=>$lists));
109        }
110
111
112        $trace = cvtconf_formulaires_configurer_enregistre('configurer_mailsubscribers',array());
113        $res = array('message_ok'=>_T('config_info_enregistree').$trace,'editable'=>true);
114
115        // et on efface le request
116        set_request('lists');
117
118        return $res;
119}
Note: See TracBrowser for help on using the repository browser.