source: spip-zone/_plugins_/spip-listes/spip-listes_1_9_3/formulaires/gestion_abonnement.php @ 48921

Last change on this file since 48921 was 48921, checked in by paladin@…, 10 years ago

Révision du formulaire de gestion abonnement.

  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 6.2 KB
Line 
1<?php
2/**
3 * @since SPIP 2.0
4 * @see http://www.spip.net/fr_article3800.html (les formulaires CVT)
5 * @see http://www.spip.net/fr_article3796.html (CVT par l'exemple)
6 * @package spiplistes
7 */
8 // $LastChangedRevision: 48921 $
9 // $LastChangedBy: paladin@quesaco.org $
10 // $LastChangedDate: 2011-06-19 10:55:40 +0000 (Sun, 19 Jun 2011) $
11
12if (!defined("_ECRIRE_INC_VERSION")) return;    #securite
13
14include_spip('inc/spiplistes_api');
15include_spip('inc/spiplistes_api_globales');
16
17function formulaires_gestion_abonnement_charger_dist($id_liste=''){
18        //spiplistes_debug_log ('formulaires_gestion_abonnement_charger_dist()');
19       
20        $d = _request('d');
21        $stop = intval(_request('stop'));
22        $valeurs = array();
23        $valeurs['id_liste'] = $id_liste;
24        $valeurs['d'] = $d;
25        $valeurs['editable'] = false;
26       
27        if($auteur = spiplistes_auteur_cookie_ou_session($d))
28        {
29                $id_auteur = $auteur['id_auteur'];
30                $valeurs['id_auteur'] = intval($id_auteur);
31                $valeurs['format'] = spiplistes_format_abo_demande($id_auteur);
32                $valeurs['editable'] = true;
33               
34                /**
35                 * Recupere la liste des abonnements en cours
36                 * pour cet auteur (avec titre des  listes)
37                 */
38                $mes_abos = spiplistes_abonnements_listes_auteur ($id_auteur, true);
39               
40                /**
41                 * Si c'est un desabonnement a une liste
42                 * affiche juste la demande de confirmation
43                 */
44                if ($stop > 0)
45                {
46                        if ($id_auteur > 0)
47                        {
48                                $id_liste = $stop;
49                               
50                                // verifier qu'il est encore abonne' a cette liste
51                                if (
52                                        $mes_abos
53                                        && isset($mes_abos[$id_liste])
54                                )
55                                {
56                                        $row = spiplistes_listes_liste_fetsel ($id_liste, 'titre,descriptif');
57                                        $valeurs['titre_liste'] = $row['titre'];
58                                        $valeurs['descriptif'] = $row['descriptif'];
59                                        $valeurs['stop'] = $stop;
60                                }
61                                else
62                                {
63                                        $valeurs['errormsg'] = _T('spiplistes:pas_abonne_liste');
64                                }
65                        }
66                        else
67                        {
68                                unset ($valeurs['d']);
69                                unset ($valeurs['editable']);
70                        }
71                }
72        }
73        else
74        {
75                spiplistes_log ('ERR: UNSUBSCRIBE id_auteur #'.$id_auteur.' id_liste #'.$id_liste);
76                $valeurs['errormsg'] = _T('spiplistes:action_interdite');
77        }
78        return $valeurs;
79}
80
81function formulaires_gestion_abonnement_verifier($id_liste='') {
82        //spiplistes_debug_log('formulaires_gestion_abonnement_verifier()');
83       
84        $erreurs = array();
85        return $erreurs;
86}
87
88function formulaires_gestion_abonnement_traiter_dist($id_liste='') {
89        //spiplistes_debug_log('formulaires_gestion_abonnement_traiter_dist()');
90       
91        $d = _request('d');
92        $listes = _request('listes');
93        $format = _request('suppl_abo');
94        $stop = intval(_request('stop'));
95       
96        if ($auteur = spiplistes_auteur_cookie_ou_session($d))
97        {
98                $id_auteur = $auteur['id_auteur'];
99                $email = $auteur['email'];
100               
101                // la liste des abonnements en cours
102                // pour cet auteur
103                $mes_abos = spiplistes_abonnements_listes_auteur ($id_auteur, true);
104                                                         
105                // demander de stopper une inscription ?
106                if ($stop > 0)
107                {
108                        $id_liste = $stop;
109                       
110                        if (isset ($mes_abos[$id_liste]))
111                        {
112                                spiplistes_abonnements_auteur_desabonner ($id_auteur, $id_liste);
113                                $message_ok = _T('spiplistes:abonnement_modifie').'.'
114                                        . '<br />' . PHP_EOL
115                                        . _T('spiplistes:vous_n_etes_plus_abonne_aux_listes')
116                                        ;
117                        }
118                }
119                else
120                {
121                        $prev_format = spiplistes_format_abo_demande($id_auteur);
122               
123                        $listes_souhaitees =
124                                (is_array($listes) && count($listes))
125                                ? $listes
126                                : array()
127                                ;
128                       
129                        /**
130                         * supprime d'abord tous les abonnements
131                         */
132                        spiplistes_abonnements_auteur_desabonner ($id_auteur, 'toutes');
133                        $message_ok = _T('spiplistes:abonnement_modifie').'.';
134                       
135                        /**
136                         * Abonne aux listes sélectionnées
137                         */
138                        if (count ($listes_souhaitees))
139                        {
140                                                                         
141                                // les cles sont les id_listes
142                                $listes_souhaitees = array_flip ($listes_souhaitees);
143                               
144                                spiplistes_abonnements_ajouter ($id_auteur
145                                                                                                , array_keys($listes_souhaitees)
146                                                                                                );
147                                $nb = count ($listes_souhaitees);
148                                if ($nb >= 1)
149                                {
150                                        $message_ok .= '<br />' . PHP_EOL;
151                                        $message_ok .=
152                                                ($nb > 1)
153                                                ? _T('spiplistes:vous_etes_abonne_aux_listes_selectionnees')
154                                                : _T('spiplistes:vous_etes_abonne_a_la_liste_selectionnee')
155                                                ;
156                                }
157                        }
158                        else if (count($mes_abos))
159                        {
160                                $message_ok .= '<br />' . PHP_EOL
161                                        . _T('spiplistes:vous_n_etes_plus_abonne_aux_listes')
162                                        ;
163                        }
164                       
165                        if($format != $prev_format)
166                        {
167                                if ($format == 'non')
168                                {
169                                        if (count ($mes_abos))
170                                        {
171                                                spiplistes_abonnements_auteur_desabonner ($id_auteur, 'toutes');
172                                        }
173                                       
174                                        $message_ok = _T('spiplistes:abonnement_modifie').'.'
175                                                . '<br />' . PHP_EOL
176                                                . _T('spiplistes:vous_n_etes_plus_abonne_aux_listes')
177                                                ; 
178                                }
179                                else {
180                                        spiplistes_format_abo_modifier($id_auteur, $format);
181                                        $message_ok = _T('spiplistes:abonnement_modifie');
182                                        $message_ok .= '<br />'._T('spiplistes:abonnement_nouveau_format').$format;
183                                }
184                        }
185                       
186                        spiplistes_auteurs_cookie_oubli_updateq ('', $d, $true);
187               
188                        $contexte = array(
189                                'editable' => true,
190                                'message_ok' => $message_ok,
191                                'format' => $format,
192                                'id_auteur' => $id_auteur
193                        );
194                }
195        }
196       
197        return ($contexte);
198}
199
200/**
201 * Recuperer id_auteur, statut, nom et email pour :
202 * -* l'auteur associé au cookie de l'environnement
203 * -* ou l'auteur de la session en cours
204 * @return array
205 */
206function spiplistes_auteur_cookie_ou_session ($d)
207{
208        //spiplistes_debug_log ("spiplistes_auteur_cookie_ou_session($d)");
209        $return = array();
210        // si pas de cookie on chope l'auteur de la session
211        if(empty($d)) {
212                if($id_auteur=$GLOBALS['visiteur_session']['id_auteur']) {
213                        $return['id_auteur'] = intval($id_auteur);
214                        $row = sql_fetsel(
215                                'id_auteur,statut,nom,email',
216                                'spip_auteurs',
217                                'id_auteur='.sql_quote($id_auteur)
218                        );
219                        if($row) {
220                                $return['id_auteur'] = $row['id_auteur'];
221                                $return['statut'] = $row['statut'];
222                                $return['nom'] = $row['nom'];
223                                $return['email'] = $row['email'];
224                        }
225                }
226        }
227        // recuperer les donnes de l'auteur associe au cookie
228        if(!empty($d))
229        {
230                $row = sql_fetsel(
231                        'id_auteur,statut,nom,email',
232                        'spip_auteurs',
233                        'cookie_oubli='.sql_quote($d).' AND statut<>'.sql_quote('5poubelle')
234                );
235                if($row)
236                {
237                        $return['id_auteur'] = $row['id_auteur'];
238                        $return['statut'] = $row['statut'];
239                        $return['nom'] = $row['nom'];
240                        $return['email'] = $row['email'];
241                }
242                else {
243                        spiplistes_debug_log ("spiplistes_auteur_cookie_ou_session ni cookie, ni id ?");
244                }
245        }
246        return $return;
247}
Note: See TracBrowser for help on using the repository browser.