source: spip-zone/_plugins_/mailsuscribers/mailsuscribers_pipelines.php @ 67840

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

Prise en charge de l'option "Proposer l'inscription à la Newsletter lors de l'inscription au site" (l'inscription repose sur l'api qui reste a implementer)

File size: 4.4 KB
Line 
1<?php
2/**
3 * Plugin mailsuscribers
4 * (c) 2012 Cédric Morin
5 * Licence GNU/GPL v3
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10/**
11 * Ajouter un jeton unique sur chaque inscrit (sert aux signatures d'action)
12 * @param $flux
13 * @return mixed
14 */
15function mailsuscribers_pre_insertion($flux){
16        if ($flux['args']['table']=='spip_mailsuscribers'
17          AND !isset($flux['data']['jeton'])){
18                include_spip("inc/acces");
19                $flux['data']['jeton'] = creer_uniqid();
20        }
21        return $flux;
22}
23
24/**
25 * Quand le statut de l'abonnement est change, tracer par qui (date, ip, #id si auteur loge, nom/email si en session)
26 * Permet d'opposer l'optin d'un internaute a son abonnement
27 * (et a contrario de tracer que l'abonnement n'a pas ete fait par lui si c'est le cas...)
28 * @param $flux
29 * @return mixed
30 */
31function mailsuscribers_pre_edition($flux){
32        if ($flux['args']['table']=='spip_mailsuscribers'
33          AND $flux['args']['action']=='instituer'
34          AND $id_mailsuscriber = $flux['args']['id_objet']
35          AND $statut_ancien = $flux['args']['statut_ancien']
36          AND isset($flux['data']['statut'])
37          AND $statut = $flux['data']['statut']
38          AND $statut != $statut_ancien
39          AND ($statut=='valide' OR $statut_ancien=='valide')){
40
41                // on change le statut : logons date et par qui dans le champ optin
42                $optin = sql_getfetsel("optin","spip_mailsuscribers","id_mailsuscriber=".intval($id_mailsuscriber));
43                $optin = trim($optin);
44                $optin .=
45                  "\n"
46                  . _T('mailsuscriber:info_statut_'.$statut)." : "
47                        . date('Y-m-d H:i:s').", "
48                  . _T('public:par_auteur').' '
49                          . (isset($GLOBALS['visiteur_session']['id_auteur'])?"#".$GLOBALS['visiteur_session']['id_auteur'].' ':'')
50                          . (isset($GLOBALS['visiteur_session']['nom'])?$GLOBALS['visiteur_session']['nom'].' ':'')
51                          . (isset($GLOBALS['visiteur_session']['session_nom'])?$GLOBALS['visiteur_session']['session_nom'].' ':'')
52                          . (isset($GLOBALS['visiteur_session']['session_email'])?$GLOBALS['visiteur_session']['session_email'].' ':'')
53                    . '('.$GLOBALS['ip'].')'
54                ;
55                $optin = trim($optin);
56                $flux['data']['optin'] = $optin;
57        }
58        return $flux;
59}
60
61
62/**
63 * Optimiser la base de donnee en supprimant inscriptions non confirmees
64 * ainsi que les inscriptions a la poubelle
65 *
66 * @param array $flux
67 * @return array
68 */
69function mailsuscribers_optimiser_base_disparus($flux){
70        $n = &$flux['data'];
71        $mydate = $flux['args']['date'];
72
73
74        # passer en refuser les inscriptions en attente non confirmees
75        sql_updateq("spip_mailsuscribers",array("statut"=>"refuse"), "statut=".sql_quote('prepa')." AND date < ".sql_quote($mydate));
76
77        # supprimer les inscriptions a la poubelle
78        sql_delete("spip_mailsuscribers", "statut=".sql_quote('poubelle')." AND date < ".sql_quote($mydate));
79
80        return $flux;
81
82}
83
84/**
85 * Ajout de la coche d'optin sur le formulaire inscription
86 *
87 * @param array $flux
88 * @return array
89 */
90function mailsuscribers_formulaire_charger($flux){
91        if ($flux['args']['form']=="inscription"){
92                // ici on ne lit pas la config pour aller plus vite (pas grave si on a ajoute le champ sans l'utiliser)
93                $flux['data']['mailsuscriber_optin'] = '';
94        }
95        return $flux;
96}
97
98/**
99 * Ajout de la coche d'optin sur le formulaire inscription
100 *
101 * @param array $flux
102 * @return array
103 */
104function mailsuscribers_formulaire_fond($flux){
105        if ($flux['args']['form']=="inscription"){
106                include_spip('inc/config');
107                if (lire_config("mailsuscribers/proposer_signup_optin",0)){
108                        if (($p = strpos($flux['data'],"</ul>"))!==false){
109                                $input = recuperer_fond("formulaires/inc-optin-suscribe",$flux['args']['contexte']);
110                                $flux['data'] = substr_replace($flux['data'],$input,$p,0);
111                        }
112                }
113        }
114        return $flux;
115}
116
117/**
118 * Ajout de la coche d'optin sur le formulaire inscription
119 *
120 * @param array $flux
121 * @return array
122 */
123function mailsuscribers_formulaire_traiter($flux){
124        if ($flux['args']['form']=="inscription"
125          AND _request('mailsuscriber_optin')
126          AND isset($flux['data']['id_auteur'])
127                AND $id_auteur = $flux['data']['id_auteur']){
128                // si on a poste l'optin et auteur inscrit en base
129                // verifier quand meme que la config autorise cet optin, et que l'inscription s'est bien faite)
130                include_spip('inc/config');
131                if (lire_config("mailsuscribers/proposer_signup_optin",0)){
132                        $row = sql_fetsel('nom,email','spip_auteurs','id_auteur='.intval($id_auteur));
133                        if ($row){
134                                // inscrire le nom et email
135                                $newsletter_suscribe = charger_fonction('suscribe','newsletter');
136                                $newsletter_suscribe($row['email'],array('nom'=>$row['nom']));
137                        }
138                }
139        }
140        return $flux;
141}
142
143?>
Note: See TracBrowser for help on using the repository browser.