source: spip-zone/_plugins_/spip-lettres/classes/abonne.php @ 47522

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

on enlève le log;

File size: 20.6 KB
Line 
1<?php
2
3
4        /**
5         * SPIP-Lettres
6         *
7         * Copyright (c) 2006-2009
8         * Agence Artégo http://www.artego.fr
9         * 
10         * Ce programme est un logiciel libre distribue sous licence GNU/GPLv3.
11         * Pour plus de details voir http://www.gnu.org/licenses/gpl-3.0.html
12         * 
13         **/
14
15
16        include_spip('lettres_fonctions');
17        include_spip('public/assembler');
18        include_spip('inc/distant');
19        include_spip('inc/rubriques');
20        include_spip('base/lettres');
21        include_spip('classes/lettre');
22
23        /**
24         * abonne - classe pour la gestion des abonnes
25         *
26         * @copyright 2006-2009 Artégo
27         */
28
29        class abonne {
30
31                var $id_abonne;
32                var $objet = 'abonnes';
33                var $id_objet;
34                var $email;
35                var $code;
36                var $nom;
37                var $format = 'mixte';
38                var $extra;
39
40                var $existe = false;
41
42
43                /**
44                 * abonne : constructeur
45                 *
46                 * @param int id_abonne
47                 * @param string email
48                 * @return void
49                 **/
50                function abonne($id_abonne=0, $email='') {
51                        global $table_des_abonnes;
52                        if (intval($id_abonne) != 0) {
53                                $this->id_abonne = intval($id_abonne);
54                                $spip_abonne = sql_select('*', 'spip_abonnes', 'id_abonne='.$this->id_abonne);
55                                if (sql_count($spip_abonne) == 1) {
56                                        $abo = sql_fetch($spip_abonne);
57                                        $table                  = $table_des_abonnes[$abo['objet']]['table'];
58                                        $champ_email    = $table_des_abonnes[$abo['objet']]['champ_email'];
59                                        $champ_id               = $table_des_abonnes[$abo['objet']]['champ_id'];
60                                        $champ_nom              = $table_des_abonnes[$abo['objet']]['champ_nom'];
61                                        $obj = sql_select('OBJ.'.$champ_email.' AS email, '.(empty($champ_nom) ? '' : ' OBJ.'.$champ_nom.' AS nom, ').'OBJ.'.$champ_id.' AS id_objet', 'spip_'.$table.' AS OBJ', 'OBJ.'.$champ_id.'='.$abo['id_objet']);
62                                        if (sql_count($obj) == 1) {
63                                                $arr = sql_fetch($obj);
64                                                $this->existe           = true;
65                                                $this->objet            = $abo['objet'];
66                                                $this->id_objet         = $abo['id_objet'];
67                                                $this->email            = $arr['email'];
68                                                $this->code                     = $abo['code'];
69                                                $this->nom                      = $arr['nom'];
70                                                $this->format           = $abo['format'];
71                                                $this->extra            = $abo['extra'];
72                                                $this->maj                      = $abo['maj'];
73                                        }
74                                }
75                        } else if ($email AND lettres_verifier_validite_email($email)) {
76                                $this->email = $email;
77                                foreach ($table_des_abonnes as $valeur) {
78                                        $spip_objets = @sql_select('*', 'spip_'.$valeur['table'], $valeur['champ_email'].'='.sql_quote($this->email));
79                                        if ($arr = sql_fetch($spip_objets)) {
80                                                $this->nom                      = $arr[$valeur['champ_nom']];
81                                                $this->objet            = $valeur['table'];
82                                                $this->id_objet         = $arr[$valeur['champ_id']];
83                                                $spip_abonnes = sql_select('*', 'spip_abonnes', 'objet="'.$valeur['table'].'" AND id_objet='.$arr[$valeur['champ_id']]);
84                                                if (sql_count($spip_abonnes) == 1) {
85                                                        $abo = sql_fetch($spip_abonnes);
86                                                        $this->id_abonne        = $abo['id_abonne'];
87                                                        $this->code                     = $abo['code'];
88                                                        $this->format           = $abo['format'];
89                                                        $this->extra            = $abo['extra'];
90                                                        $this->maj                      = $abo['maj'];
91                                                        $this->existe           = true;
92                                                        break;
93                                                }
94                                        }
95                                }
96                        }
97                }
98
99
100                function enregistrer() {
101                        global $table_des_abonnes;
102                        if ($this->existe) {
103                                sql_updateq('spip_abonnes', array('format' => $this->format), 'id_abonne='.$this->id_abonne);
104                                if ($this->objet == 'abonnes')
105                                        sql_updateq('spip_abonnes', array('nom' => ucwords($this->nom), 'email' => strtolower($this->email)), 'id_abonne='.$this->id_abonne);
106                        } else {
107                                foreach ($table_des_abonnes as $valeur) {
108                                        $spip_objets = @sql_select('*', 'spip_'.$valeur['table'], $valeur['champ_email'].'='.sql_quote($this->email));
109                                        if (@sql_count($spip_objets) == 1) {
110                                                $arr = sql_fetch($spip_objets);
111                                                $this->objet    = $valeur['table'];
112                                                $this->id_objet = $arr[$valeur['champ_id']];
113                                                break;
114                                        }
115                                }
116                                $this->code = md5(uniqid(rand()));
117                                $this->id_abonne = sql_insertq('spip_abonnes', 
118                                                                                                array(
119                                                                                                        'objet' => $this->objet, 
120                                                                                                        'code' => $this->code, 
121                                                                                                        'format' => $this->format
122                                                                                                        )
123                                                                                                );
124
125                                if (!intval($this->id_objet))
126                                        $this->id_objet = $this->id_abonne;
127                                sql_updateq('spip_abonnes', array('id_objet' => intval($this->id_objet)), 'id_abonne='.intval($this->id_abonne));
128                                if ($this->objet == 'abonnes') {
129                                        sql_updateq('spip_abonnes', array('email' => strtolower($this->email), 'nom' => ucwords($this->nom)), 'id_abonne='.intval($this->id_abonne));
130                                }
131                                $req = sql_select('*', 'spip_abonnes_statistiques', 'periode="'.date('Y-m').'"');
132                                if (sql_count($req) == 0)
133                                        sql_insertq('spip_abonnes_statistiques', array('periode' => date('Y-m')));
134                                sql_update('spip_abonnes_statistiques', array('nb_inscriptions' => 'nb_inscriptions+1'), 'periode="'.date('Y-m').'"');
135                        }
136                        $this->existe = true;
137                        $this->enregistrer_champs_extra();
138                        $this->enregistrer_maj();
139                }
140
141
142                function enregistrer_statut($statut) {
143                        $ancien_statut = $this->statut;
144                        switch ($statut) {
145                                case 'valider':
146                                        $this->valider_abonnements_en_attente();
147                                        $redirection = generer_url_ecrire('abonnes', 'id_abonne='.$this->id_abonne, true);
148                                        break;
149                                case 'poubelle':
150                                        $this->supprimer();
151                                        $redirection = generer_url_ecrire('abonnes_tous');
152                                        break;
153                        }
154                        return $redirection;
155                }
156
157
158                function enregistrer_champs_extra($manuellement=false) {
159                        if (!$manuellement) {
160                                if ($champs_extra = $GLOBALS['champs_extra']['abonnes']) {
161                                        $extra = array();
162                                        foreach ($champs_extra as $cle => $valeur) {
163                                                $extra[$cle] = _request('suppl_'.$cle);
164                                        }
165                                        $this->extra = serialize($extra);
166                                }
167                        }
168                        sql_updateq('spip_abonnes', array('extra' => $this->extra), 'id_abonne='.intval($this->id_abonne));
169                }
170               
171               
172                function enregistrer_maj() {
173                        sql_updateq('spip_abonnes', array('maj' => 'NOW()'), 'id_abonne='.intval($this->id_abonne));
174                }
175               
176               
177                function enregistrer_abonnement($id_rubrique=0) {
178                        include_spip('inc/autoriser');
179                        if (autoriser('abonner','rubrique',$id_rubrique) OR lettres_rubrique_autorisee($id_rubrique)) {
180                                if (sql_countsel('spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne).' AND id_rubrique='.intval($id_rubrique)))
181                                        sql_updateq('spip_abonnes_rubriques', array('statut' => 'a_valider', 'date_abonnement' => 'NOW()'), 'id_abonne='.intval($this->id_abonne).' AND id_rubrique='.intval($id_rubrique));
182                                else
183                                        sql_insertq('spip_abonnes_rubriques', array('id_abonne' => intval($this->id_abonne), 'id_rubrique' => intval($id_rubrique), 'statut' => 'a_valider', 'date_abonnement' => 'NOW()'));
184                                $this->enregistrer_maj();
185                        }
186                }
187
188
189                function enregistrer_format($format) {
190                        $this->format = $format;
191                        sql_updateq('spip_abonnes', array('format' => $this->format), 'id_abonne='.intval($this->id_abonne));
192                        $this->enregistrer_maj();
193                }
194
195
196                function enregistrer_envoi($id_lettre, $resultat) {
197                        static $mois = null;
198                        $statut = $resultat?'envoye':'echec';
199                       
200                        if (sql_countsel('spip_abonnes_lettres', 'id_abonne='.intval($this->id_abonne).' AND id_lettre='.intval($id_lettre)))
201                                sql_updateq('spip_abonnes_lettres', array('statut' => $statut, 'format' => $this->format, 'maj' => 'NOW()'), 'id_abonne='.intval($this->id_abonne).' AND id_lettre='.intval($id_lettre));
202                        else
203                                sql_insertq('spip_abonnes_lettres', array('id_abonne' => intval($this->id_abonne), 'id_lettre' => intval($id_lettre), 'statut' => $statut, 'format' => $this->format, 'maj' => 'NOW()'));
204
205                        if (!$mois) {
206                                $mois = date('Y-m');
207                                if (!sql_countsel('spip_lettres_statistiques', 'periode='.sql_quote($mois)))
208                                        sql_insertq('spip_lettres_statistiques', array('periode' => $mois,'nb_envois'=>0));
209                        }
210                        sql_update('spip_lettres_statistiques', array('nb_envois' => 'nb_envois+1'), 'periode='.sql_quote($mois));
211                }
212
213
214                function enregistrer_clic($id_clic) {
215                        $verification_url = sql_select('url, id_lettre', 'spip_clics', 'id_clic='.intval($id_clic));
216                        if (sql_count($verification_url) == 1) {
217                                $url = sql_fetch($verification_url);
218                                $redirection = $url['url'];
219                                $id_lettre = intval($url['id_lettre']);
220                        };
221                        if ($GLOBALS['meta']['spip_lettres_cliquer_anonyme']=='non') {
222                                $verification_abonne = sql_select('C.url', 'spip_clics AS C INNER JOIN spip_abonnes_lettres AS AL ON AL.id_lettre=C.id_lettre', 'AL.id_abonne='.intval($this->id_abonne).' AND C.id_clic='.intval($id_clic));
223                                if (sql_count($verification_abonne) == 1) {
224                                        sql_insertq('spip_abonnes_clics', array('id_abonne' => $this->id_abonne, 'id_clic' => intval($id_clic), 'id_lettre' => $id_lettre)); // le champ id_lettre pourrait être supprimé de la bdd, mais comme il est là on le renseigne
225                                        $urldeja = $url;
226                                        $url = sql_fetch($verification_abonne);         // inutile semblerait-il
227                                        $redirection = $url['url'];                             // inutile semblerait-il
228                                        if ($urldeja != $url)                                           // pour détecter si jamais c'est utile
229                                                spip_log ("Ya un truc à piger dans spip-lettres : urldeja=$urldeja different de url=$url", "enquete"); 
230                                        $this->enregistrer_maj();
231                                }
232                        } else  // on enregistre tout sur le compte du non-abonné '0'
233                                sql_insertq('spip_abonnes_clics', array('id_abonne' => 0, 'id_clic' => intval($id_clic), 'id_lettre' => $id_lettre));
234
235                        if ($redirection)
236                                return $redirection;
237                        else
238                                return $GLOBALS['meta']['adresse_site'];
239                }
240               
241                function envoyer_notification($action, $arguments=array()) {
242
243                        if (isset($arguments['rubriques'])) {
244                                foreach ($arguments['rubriques'] as $id_rubrique)
245                                        $chaine_rubriques.= '&rubriques[]='.$id_rubrique;
246                        }
247                        if (!empty($arguments['format'])) {
248                                $this->format = $arguments['format'];
249                                $chaine_format = '&format='.$this->format;
250                        }
251                        $parametres = 'lang='.$arguments['lang'].$chaine_rubriques.'&code='.$this->code.'&email='.$this->email.$chaine_format;
252
253                        switch ($action) {
254
255                                case 'abonnements':
256                                        $objet                  = recuperer_fond('emails/lettres_abonnements_titre', $arguments);
257                                        $message_html   = recuperer_fond('emails/lettres_abonnements_html', $arguments);
258                                        $message_texte  = recuperer_fond('emails/lettres_abonnements_texte', $arguments);
259                                        $url_action_validation_abonnements = url_absolue(generer_url_action('validation_abonnements', $parametres, true));
260                                        $message_html   = str_replace("%%URL_VALIDATION_ABONNEMENTS%%", $url_action_validation_abonnements, $message_html);
261                                        $message_texte  = str_replace("%%URL_VALIDATION_ABONNEMENTS%%", $url_action_validation_abonnements, $message_texte);
262                                        break;
263                                       
264                                case 'desabonnements':
265                                        $objet                  = recuperer_fond('emails/lettres_desabonnements_titre', $arguments);
266                                        $message_html   = recuperer_fond('emails/lettres_desabonnements_html', $arguments);
267                                        $message_texte  = recuperer_fond('emails/lettres_desabonnements_texte', $arguments);
268                                        $url_action_validation_desabonnements = url_absolue(generer_url_action('validation_desabonnements', $parametres, true));
269                                        $message_html   = str_replace("%%URL_VALIDATION_DESABONNEMENTS%%", $url_action_validation_desabonnements, $message_html);
270                                        $message_texte  = str_replace("%%URL_VALIDATION_DESABONNEMENTS%%", $url_action_validation_desabonnements, $message_texte);
271                                        break;
272                                       
273                                case 'changement_format':
274                                        $objet                  = recuperer_fond('emails/lettres_changement_format_titre', $arguments);
275                                        $message_html   = recuperer_fond('emails/lettres_changement_format_html', $arguments);
276                                        $message_texte  = recuperer_fond('emails/lettres_changement_format_texte', $arguments);
277                                        $url_action_validation_changement_format = url_absolue(generer_url_action('validation_changement_format', $parametres, true));
278                                        $message_html   = str_replace("%%URL_VALIDATION_CHANGEMENT_FORMAT%%", $url_action_validation_changement_format, $message_html);
279                                        $message_texte  = str_replace("%%URL_VALIDATION_CHANGEMENT_FORMAT%%", $url_action_validation_changement_format, $message_texte);
280                                        break;
281                                       
282                        }
283
284                        switch ($this->format) {
285                                case 'html':
286                                        $corps = array('html' => $message_html, 'texte' => '');
287                                        break;
288                                case 'texte':
289                                        $corps = array('html' => '', 'texte' => $message_texte);
290                                        break;
291                                case 'mixte':
292                                default:
293                                        $corps = array('html' => $message_html, 'texte' => $message_texte);
294                                        break;
295                        }
296
297                        $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
298                        return $envoyer_mail($this->email, $objet, $corps);
299                }
300
301
302                function envoyer_lettre($id_lettre) {
303                        if (!$this->existe)
304                                return;
305                        global $champs_extra;
306
307                        // le verrouillage est fait en amont, par la gestion des queue
308                        $lettre = new lettre($id_lettre);
309
310                        $objet = $lettre->titre;
311                        if ($lettre->statut == 'brouillon')
312                                $objet = 'TEST - '.$lettre->titre;
313
314                        $message_html   = $lettre->message_html;
315                        $message_texte  = $lettre->message_texte;
316
317                        $parametres = 'lang='.$lettre->lang.'&rubriques[]=-1&code='.$this->code.'&email='.$this->email;
318                        $url_action_validation_desabonnements = url_absolue(generer_url_action('validation_desabonnements', $parametres, true));
319                        $message_html   = str_replace("%%URL_VALIDATION_DESABONNEMENTS%%", $url_action_validation_desabonnements, $message_html);
320                        $message_texte  = str_replace("%%URL_VALIDATION_DESABONNEMENTS%%", $url_action_validation_desabonnements, $message_texte);
321
322                        $objet                  = str_replace("%%EMAIL%%", $this->email, $objet);
323                        $message_html   = str_replace("%%EMAIL%%", $this->email, $message_html);
324                        $message_texte  = str_replace("%%EMAIL%%", $this->email, $message_texte);
325
326                        $message_html   = str_replace("%%CODE%%", $this->code, $message_html);
327                        $message_texte  = str_replace("%%CODE%%", $this->code, $message_texte);
328
329                        $objet                  = lettres_remplacer_raccourci('NOM', $this->nom, $objet);
330                        $message_html   = lettres_remplacer_raccourci('NOM', $this->nom, $message_html);
331                        $message_texte  = lettres_remplacer_raccourci('NOM', $this->nom, $message_texte);
332
333                        if ($champs_extra['abonnes']) {
334                                $extra = unserialize($this->extra);
335                                foreach ($champs_extra['abonnes'] as $raccourci => $bidon) {
336                                        $objet                  = lettres_remplacer_raccourci($raccourci, $extra[$raccourci], $objet);
337                                        $message_html   = lettres_remplacer_raccourci($raccourci, $extra[$raccourci], $message_html);
338                                        $message_texte  = lettres_remplacer_raccourci($raccourci, $extra[$raccourci], $message_texte);
339                                }
340                        }
341
342                        if (function_exists('formulaires_remplacer_raccourci')) {
343                                $message_html   = formulaires_remplacer_raccourci($message_html, $this->email);
344                                $message_texte  = formulaires_remplacer_raccourci($message_texte, $this->email);
345                        }
346
347                        if (function_exists('lettres_specifique')) {
348                                $message_html   = lettres_specifique($message_html, $this->email);
349                                $message_texte  = lettres_specifique($message_texte, $this->email);
350                        }
351                       
352                        switch ($this->format) {
353                                case 'html':
354                                        $corps = array('html' => $message_html, 'texte' => '');
355                                        break;
356                                case 'texte':
357                                        $corps = array('html' => '', 'texte' => $message_texte);
358                                        break;
359                                case 'mixte':
360                                default:
361                                        $corps = array('html' => $message_html, 'texte' => $message_texte);
362                                        break;
363                        }
364
365                        $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
366
367                        // si signe_par_auteurs = oui
368                        if ($GLOBALS['meta']['spip_lettres_signe_par_auteurs'] == 'oui') {
369                               
370                                // on récupère le 1er auteur; pas traité si plusieurs auteurs
371                                $envoyeur = sql_fetsel(
372                                        "nom, email", 
373                                        "spip_auteurs LEFT JOIN spip_auteurs_lettres USING(id_auteur)",
374                                        "id_lettre=".$id_lettre
375                                        );
376                                $nom_envoyeur = $envoyeur['nom'];
377                                $email_envoyeur = $envoyeur['email'];
378                                $corps = array( 
379                                        'html' => $message_html, 
380                                        'texte' => $message_texte,
381                                        'nom_envoyeur' =>  $nom_envoyeur
382                                );
383                                $expediteur = $email_envoyeur;
384                        }
385                        return $envoyer_mail($this->email, $objet, $corps, $expediteur);
386                }
387               
388               
389                function renvoyer_lettre($id_lettre) {
390                        $resultat = $this->envoyer_lettre($id_lettre);
391                        if ($resultat) {
392                                $this->enregistrer_envoi($id_lettre, $resultat);
393                                return true;
394                        }
395                        return false;   
396                }
397               
398               
399                function verifier_code($code) {
400                        if (strcmp($this->code, $code) == 0)
401                                return true;
402                        else
403                                return false;
404                }
405               
406               
407                function valider_abonnement($id_rubrique=0, $partie_publique=false) {
408                        include_spip('inc/autoriser');
409                        if (autoriser('validerabonnement','rubrique',$id_rubrique) OR lettres_rubrique_autorisee($id_rubrique)) {
410                                sql_updateq('spip_abonnes_rubriques', array('statut' => 'valide', 'date_abonnement' => 'NOW()'), 'id_abonne='.intval($this->id_abonne).' AND id_rubrique='.intval($id_rubrique));
411                                $this->enregistrer_maj();
412                        }
413                        if ($partie_publique)
414                                $this->oublier_desabonnement();
415                        $this->supprimer_abonnements_inutiles();
416                }
417               
418               
419                function valider_abonnements_en_attente() {
420                        sql_updateq('spip_abonnes_rubriques', array('statut' => 'valide', 'date_abonnement' => 'NOW()'), 'id_abonne='.intval($this->id_abonne).' AND statut="a_valider"');
421                        $this->enregistrer_maj();
422                        $this->supprimer_abonnements_inutiles();
423                }
424               
425               
426                function valider_desabonnement($id_rubrique=0) {
427                        if ($id_rubrique == -1) {
428                                $this->memoriser_desabonnement();
429                                $this->supprimer();
430                        } else {
431                                include_spip('inc/autoriser');
432                                if (autoriser('validerdesabonnement','rubrique',$id_rubrique) or lettres_rubrique_autorisee($id_rubrique))
433                                        sql_delete('spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne).' AND id_rubrique='.intval($id_rubrique));
434                        }
435                        $this->enregistrer_maj();
436                }
437               
438               
439                function memoriser_desabonnement() {
440                        sql_insertq('spip_desabonnes', array('email' => $this->email));
441                }
442               
443               
444                function oublier_desabonnement() {
445                        sql_delete('spip_desabonnes', 'email='.sql_quote($this->email));
446                }
447               
448               
449                function calculer_nombre_abonnements($mode='total') {
450                        $a_valider      = sql_countsel('spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne).' AND statut="a_valider"');
451                        $valide = sql_countsel('spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne).' AND statut="valide"');
452                        $total = $a_valider + $valide;
453                        switch ($mode) {
454                                case 'a_valider':
455                                        return $a_valider;
456                                case 'valide':
457                                        return $valide;
458                                case 'total':
459                                default:
460                                        return $total;
461                        }
462                }
463               
464               
465                function calculer_statut() {
466                        $statut = 'vide';
467                        $abonnements_a_valider  = sql_countsel('spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne).' AND statut="a_valider"');
468                        if ($abonnements_a_valider > 0)
469                                $statut = 'a_valider';
470                        $abonnements_valides    = sql_countsel('spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne).' AND statut="valide"');
471                        if ($abonnements_valides > 0)
472                                $statut = 'valide';
473                        return $statut;
474                }
475               
476               
477                function recuperer_abonnements($seulement_valides=true) {
478                        $abonnements = array();
479                        if ($seulement_valides)
480                                $res = sql_select('id_rubrique', 'spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne).' AND statut="valide"');
481                        else
482                                $res = sql_select('id_rubrique', 'spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne));
483                        while ($arr = sql_fetch($res)) {
484                                $abonnements[] = $arr['id_rubrique'];
485                        }
486                        return $abonnements;
487                }
488               
489               
490                function supprimer() {
491                        if ($GLOBALS['meta']['spip_lettres_notifier_suppression_abonne'] == 'oui') {
492                                $objet                  = recuperer_fond('emails/lettres_suppression_abonne_titre', array('email' => $this->email));
493                                $message_html   = recuperer_fond('emails/lettres_suppression_abonne_html', array('email' => $this->email));
494                                $message_texte  = recuperer_fond('emails/lettres_suppression_abonne_texte', array('email' => $this->email));
495                                $corps = array('html' => $message_html, 'texte' => $message_texte);
496                                $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
497                                $envoyer_mail($GLOBALS['meta']['email_webmaster'], $objet, $corps);
498                        }
499                        $req = sql_select('*', 'spip_abonnes_statistiques', 'periode="'.date('Y-m').'"');
500                        if (sql_count($req) == 0)
501                                sql_insertq('spip_abonnes_statistiques', array('periode' => date('Y-m')));
502                        sql_update('spip_abonnes_statistiques', array('nb_desinscriptions' => 'nb_desinscriptions+1'), 'periode='.sql_quote(date('Y-m')));
503                        sql_delete('spip_abonnes', 'id_abonne='.intval($this->id_abonne));
504                        sql_delete('spip_abonnes_clics', 'id_abonne='.intval($this->id_abonne));
505                        sql_delete('spip_abonnes_lettres', 'id_abonne='.intval($this->id_abonne));
506                        sql_delete('spip_abonnes_rubriques', 'id_abonne='.intval($this->id_abonne));
507                }
508
509
510                function supprimer_si_zero_abonnement() {
511                        $nb_abonnements = count($this->recuperer_abonnements(false));
512                        if ($nb_abonnements == 0)
513                                $this->supprimer();
514                }
515               
516               
517                function supprimer_abonnements_inutiles() {
518                        $test_racine = sql_countsel('spip_abonnes_rubriques', 'id_rubrique=0 AND id_abonne='.intval($this->id_abonne));
519                        if ($test_racine)
520                                sql_delete('spip_abonnes_rubriques', 'id_rubrique!=0 AND id_abonne='.intval($this->id_abonne));
521                }
522
523
524        }
525
526?>
Note: See TracBrowser for help on using the repository browser.