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

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

squelette de complement pour formulaire d'abonnement

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: 47063 $
9 // $LastChangedBy: paladin@quesaco.org $
10 // $LastChangedDate: 2011-04-25 18:46:50 +0200 (Lun 25 avr 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 = 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                // la liste des abonnements en cours
35                // pour cet auteur (avec titre des  listes)
36                $mes_abos = spiplistes_abonnements_listes_auteur ($id_auteur, true);
37               
38                // si c'est un desabonnement a une liste
39                // affiche juste la demande de confirmation
40                if ($stop > 0)
41                {
42                        if ($id_auteur > 0)
43                        {
44                                $id_liste = $stop;
45                               
46                                // verifier qu'il est encore abonne' a cette liste
47                                if (
48                                        $mes_abos
49                                        && isset($mes_abos[$id_liste])
50                                )
51                                {
52                                        $row = spiplistes_listes_liste_fetsel ($id_liste, 'titre,descriptif');
53                                        $valeurs['titre_liste'] = $row['titre'];
54                                        $valeurs['descriptif'] = $row['descriptif'];
55                                        $valeurs['stop'] = $stop;
56                                }
57                                else
58                                {
59                                        $valeurs['errormsg'] = _T('spiplistes:pas_abonne_liste');
60                                }
61                        }
62                        else
63                        {
64                                unset ($valeurs['d']);
65                                unset ($valeurs['editable']);
66                        }
67                }
68        }
69        else
70        {
71                spiplistes_log ('ERR: UNSUBSCRIBE id_auteur #'.$id_auteur.' id_liste #'.$id_liste);
72                $valeurs['errormsg'] = _T('spiplistes:action_interdite');
73        }
74        return $valeurs;
75}
76
77function formulaires_gestion_abonnement_verifier($id_liste='') {
78        //spiplistes_debug_log('formulaires_gestion_abonnement_verifier()');
79       
80        $erreurs = array();
81        return $erreurs;
82}
83
84function formulaires_gestion_abonnement_traiter_dist($id_liste='') {
85        //spiplistes_debug_log('formulaires_gestion_abonnement_traiter_dist()');
86       
87        $d = _request('d');
88        $listes = _request('listes');
89        $format = _request('suppl_abo');
90        $stop = intval(_request('stop'));
91       
92        if ($auteur = auteur_cookie_ou_session($d))
93        {
94                $id_auteur = $auteur['id_auteur'];
95                $email = $auteur['email'];
96               
97                // la liste des abonnements en cours
98                // pour cet auteur
99                $mes_abos = spiplistes_abonnements_listes_auteur ($id_auteur, true);
100               
101                // demander de stopper une inscription ?
102                if ($stop > 0)
103                {
104                        $id_liste = $stop;
105                       
106                        if (isset ($mes_abos[$id_liste]))
107                        {
108                                spiplistes_abonnements_auteur_desabonner ($id_auteur, $id_liste);
109                                $contexte = array(
110                                        'message_ok' => _T('spiplistes:vous_etes_desinscrit')
111                                );
112                        }
113                }
114                else
115                {
116                        $prev_format = spiplistes_format_abo_demande($id_auteur);
117               
118                        $listes_souhaitees =
119                                (is_array($listes) && count($listes))
120                                ? $listes
121                                : array()
122                                ;
123                        if (count ($listes_souhaitees))
124                        {
125                                $listes_souhaitees = array_flip ($listes_souhaitees);
126                               
127                                // abonner aux listes demandées
128                                foreach (array_keys($listes_souhaitees) as $id_liste)
129                                {
130                                        if (!isset($mes_abos[$id_liste]))
131                                        {
132                                                spiplistes_abonnements_ajouter ($id_auteur, $id_liste);
133                                                $mes_abos[$id_liste] = '';
134                                        }
135                                }
136                               
137                                // désabonner les listes non souhaitées
138                                foreach (array_keys($mes_abos) as $id_liste)
139                                {
140                                        if (!isset ($listes_souhaitees[$id_liste]))
141                                        {
142                                                spiplistes_abonnements_auteur_desabonner ($id_auteur, $id_liste);
143                                        }
144                                }
145                               
146                                // abonner aux listes demandées,
147                                // si pas déjà abonné
148                                foreach (array_keys($listes_souhaitees) as $id_liste)
149                                {
150                                        if (!isset ($mes_abos[$id_liste]))
151                                        {
152                                                if(spiplistes_abonnements_ajouter($id_auteur, $id_liste) !== false)
153                                                {
154                                                        // @todo a ameliorer, style une ligne de confirmation par liste ?
155                                                        $message_ok = _T('spiplistes:abonnement_modifie');
156                                                }
157                                        }
158                                }
159                        }
160                        else if (count ($mes_abos))
161                        {
162                                // tout est déselectionné ?
163                                // supprimer tout les abonnements !
164                                spiplistes_abonnements_auteur_desabonner ($id_auteur, 'toutes');
165                                $mes_abos = array();
166                        }
167                       
168                        if($format != $prev_format)
169                        {
170                                if ($format == 'non')
171                                {
172                                        if (count ($mes_abos))
173                                        {
174                                                spiplistes_abonnements_auteur_desabonner ($id_auteur, 'toutes');
175                                        }
176                                       
177                                        $message_ok = _T('spiplistes:desabonnement_valid').' :&nbsp;'.$email; 
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                        );
193                }
194        }
195       
196        return ($contexte);
197}
198
199// recuperer id_auteur, statut, nom et email pour :
200// -* l'auteur associé au cookie de l'environnement
201// -* ou l'auteur de la session en cours
202function auteur_cookie_ou_session($d)
203{
204        //spiplistes_debug_log ("auteur_cookie_ou_session($d)");
205        $return = array();
206        // si pas de cookie on chope l'auteur de la session
207        if(empty($d)) {
208                if($id_auteur=$GLOBALS['visiteur_session']['id_auteur']) {
209                        $return['id_auteur'] = intval($id_auteur);
210                        $row = sql_fetsel(
211                                'id_auteur,statut,nom,email',
212                                'spip_auteurs',
213                                'id_auteur='.sql_quote($id_auteur)
214                        );
215                        if($row) {
216                                $return['id_auteur'] = $row['id_auteur'];
217                                $return['statut'] = $row['statut'];
218                                $return['nom'] = $row['nom'];
219                                $return['email'] = $row['email'];
220                        }
221                }
222        }
223        // recuperer les donnes de l'auteur associe au cookie
224        if(!empty($d))
225        {
226                $row = sql_fetsel(
227                        'id_auteur,statut,nom,email',
228                        'spip_auteurs',
229                        'cookie_oubli='.sql_quote($d).' AND statut<>'.sql_quote('5poubelle')
230                );
231                if($row)
232                {
233                        $return['id_auteur'] = $row['id_auteur'];
234                        $return['statut'] = $row['statut'];
235                        $return['nom'] = $row['nom'];
236                        $return['email'] = $row['email'];
237                }
238                else {
239                        spiplistes_debug_log ("auteur_cookie_ou_session ni cookie, ni id ?");
240                }
241        }
242        return $return;
243}
244
Note: See TracBrowser for help on using the repository browser.