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

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

bis repetita. Oublié de mettre les mots clés svn entre quotes dans la ligne de commande

  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 6.3 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: 48919 $
9 // $LastChangedBy: paladin@quesaco.org $
10 // $LastChangedDate: 2011-06-19 08:12:50 +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                                $contexte = array(
114                                        'message_ok' => _T('spiplistes:vous_etes_desinscrit')
115                                );
116                        }
117                }
118                else
119                {
120                        $prev_format = spiplistes_format_abo_demande($id_auteur);
121               
122                        $listes_souhaitees =
123                                (is_array($listes) && count($listes))
124                                ? $listes
125                                : array()
126                                ;
127                        if (count ($listes_souhaitees))
128                        {
129                                $listes_souhaitees = array_flip ($listes_souhaitees);
130                               
131                                // abonner aux listes demandées
132                                foreach (array_keys($listes_souhaitees) as $id_liste)
133                                {
134                                        if (!isset($mes_abos[$id_liste]))
135                                        {
136                                                spiplistes_abonnements_ajouter ($id_auteur, $id_liste);
137                                                $mes_abos[$id_liste] = '';
138                                        }
139                                }
140                               
141                                // désabonner les listes non souhaitées
142                                foreach (array_keys($mes_abos) as $id_liste)
143                                {
144                                        if (!isset ($listes_souhaitees[$id_liste]))
145                                        {
146                                                spiplistes_abonnements_auteur_desabonner ($id_auteur, $id_liste);
147                                        }
148                                }
149                               
150                                // abonner aux listes demandées,
151                                // si pas déjà abonné
152                                foreach (array_keys($listes_souhaitees) as $id_liste)
153                                {
154                                        if (!isset ($mes_abos[$id_liste]))
155                                        {
156                                                if(spiplistes_abonnements_ajouter($id_auteur, $id_liste) !== false)
157                                                {
158                                                        // @todo a ameliorer, style une ligne de confirmation par liste ?
159                                                        $message_ok = _T('spiplistes:abonnement_modifie');
160                                                }
161                                        }
162                                }
163                        }
164                        else if (count ($mes_abos))
165                        {
166                                // tout est déselectionné ?
167                                // supprimer tout les abonnements !
168                                spiplistes_abonnements_auteur_desabonner ($id_auteur, 'toutes');
169                                $mes_abos = array();
170                        }
171                       
172                        if($format != $prev_format)
173                        {
174                                if ($format == 'non')
175                                {
176                                        if (count ($mes_abos))
177                                        {
178                                                spiplistes_abonnements_auteur_desabonner ($id_auteur, 'toutes');
179                                        }
180                                       
181                                        $message_ok = _T('spiplistes:desabonnement_valid').' :&nbsp;'.$email; 
182                                }
183                                else {
184                                        spiplistes_format_abo_modifier($id_auteur, $format);
185                                        $message_ok = _T('spiplistes:abonnement_modifie');
186                                        $message_ok .= '<br />'._T('spiplistes:abonnement_nouveau_format').$format;
187                                }
188                        }
189                       
190                        spiplistes_auteurs_cookie_oubli_updateq ('', $d, $true);
191               
192                        $contexte = array(
193                                'editable' => true,
194                                'message_ok' => $message_ok,
195                                'format' => $format,
196                                'id_auteur' => $id_auteur
197                        );
198                }
199        }
200       
201        return ($contexte);
202}
203
204/**
205 * Recuperer id_auteur, statut, nom et email pour :
206 * -* l'auteur associé au cookie de l'environnement
207 * -* ou l'auteur de la session en cours
208 * @return array
209 */
210function spiplistes_auteur_cookie_ou_session ($d)
211{
212        //spiplistes_debug_log ("spiplistes_auteur_cookie_ou_session($d)");
213        $return = array();
214        // si pas de cookie on chope l'auteur de la session
215        if(empty($d)) {
216                if($id_auteur=$GLOBALS['visiteur_session']['id_auteur']) {
217                        $return['id_auteur'] = intval($id_auteur);
218                        $row = sql_fetsel(
219                                'id_auteur,statut,nom,email',
220                                'spip_auteurs',
221                                'id_auteur='.sql_quote($id_auteur)
222                        );
223                        if($row) {
224                                $return['id_auteur'] = $row['id_auteur'];
225                                $return['statut'] = $row['statut'];
226                                $return['nom'] = $row['nom'];
227                                $return['email'] = $row['email'];
228                        }
229                }
230        }
231        // recuperer les donnes de l'auteur associe au cookie
232        if(!empty($d))
233        {
234                $row = sql_fetsel(
235                        'id_auteur,statut,nom,email',
236                        'spip_auteurs',
237                        'cookie_oubli='.sql_quote($d).' AND statut<>'.sql_quote('5poubelle')
238                );
239                if($row)
240                {
241                        $return['id_auteur'] = $row['id_auteur'];
242                        $return['statut'] = $row['statut'];
243                        $return['nom'] = $row['nom'];
244                        $return['email'] = $row['email'];
245                }
246                else {
247                        spiplistes_debug_log ("spiplistes_auteur_cookie_ou_session ni cookie, ni id ?");
248                }
249        }
250        return $return;
251}
Note: See TracBrowser for help on using the repository browser.