source: spip-zone/_plugins_/parrainage/trunk/parrainage_pipelines.php

Last change on this file was 79272, checked in by kent1@…, 6 years ago

Moins de log

File size: 4.8 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6function parrainage_taches_generales_cron($taches){
7        $taches['parrainage_contacts'] = 24 * 3600;
8        return $taches;
9}
10
11/**
12 * Insertion dans le pipeline formulaire_charger (SPIP)
13 *
14 * On charge le code d'activation si présent dans l'URL
15 *
16 * @param array $flux
17 *              Le contexte du pipeline
18 * @return array $flux
19 *              Le contexte du pipeline modifié
20 */
21function parrainage_formulaire_charger($flux){
22        if ($flux['args']['form'] == 'inscription'){
23                if ($code_invitation = _request('invitation'))
24                        $flux['data']['code_invitation'] = $code_invitation;
25                else
26                        $flux['data']['code_invitation'] = '';
27        }
28       
29        return $flux;
30}
31
32/**
33 * Insertion dans le pipeline recuperer_fond (SPIP)
34 *
35 * Sur le formulaire d'inscription, on ajoute la saisie du code d'invitation
36 *
37 * @param array $flux
38 *              Le contexte du pipeline
39 * @return array $flux
40 *              Le contexte du pipeline modifié
41 */
42function parrainage_recuperer_fond($flux){
43        if ($flux['args']['fond'] == 'formulaires/inscription'){
44                include_spip('inc/config');
45                $obligatoire = lire_config('parrainage/invitation_obligatoire','') ? 'oui' : 'non';
46                $saisie = recuperer_fond(
47                        'saisies/_base',
48                        array($flux['args']['contexte']['code_invitation'],
49                                'type_saisie' => 'input',
50                                'nom' => 'code_invitation',
51                                'valeur' => $flux['args']['contexte']['code_invitation'],
52                                'erreurs' => $flux['args']['contexte']['erreurs'],
53                                'label' => _T('parrainage:inscription_code_invitation_label'),
54                                'obligatoire' => $obligatoire
55                        )
56                );
57                $flux['data']['texte'] = preg_replace("%<li class='.*?saisie_mail_inscription.*?</li>%is", '$0'.$saisie, $flux['data']['texte']);
58        }
59        if ($flux['args']['fond'] == 'formulaires/configurer_visiteurs'){
60                include_spip('inc/config');
61                if(lire_config('parrainage/invitation_obligatoire','') == 'on'){
62                        $texte = _T('parrainage:message_ouvrir_visiteur');
63                        $flux['data']['texte'] = preg_replace("%<p class=\"explication.*?</p>%is", '<p class="explication">'.$texte.'</p>', $flux['data']['texte']);
64                }
65        }
66        return $flux;
67}
68
69/**
70 * Insertion dans le pipeline formulaire_verifier
71 *
72 * Vérifications sur le code d'inscription :
73 * -* Si le code d'invitation est obligatoire, refuser l'inscription si pas de code d'invitation
74 * ou code d'invitation invalide;
75 * -* Si code d'invitation fourni, refuser l'inscription si l'email ne correspond pas
76 *
77 * @param array $flux
78 *              Le contexte du pipeline
79 * @return array $flux
80 *              Le contexte du pipeline modifié
81 */
82function parrainage_formulaire_verifier($flux){
83        if ($flux['args']['form'] == 'inscription'){
84                include_spip('inc/config');
85                $code_invitation = _request('code_invitation');
86                // Si l'invitation est obligatoire
87                if ((lire_config('parrainage/invitation_obligatoire','') == 'on') and !$code_invitation)
88                        $flux['data']['code_invitation'] = _T('parrainage:erreur_invitation_obligatoire');
89                // Si le code d'invitation est dans l'URL mais ne correspond pas à l'email donné
90                elseif ($code_invitation && (!$email = sql_getfetsel('email', 'spip_filleuls', 'code_invitation = '.sql_quote($code_invitation))
91                        or $email != _request('mail_inscription'))
92                )
93                        $flux['data']['code_invitation'] = _T('parrainage:erreur_invitation_invalide');
94        }
95        return $flux;
96}
97
98/**
99 * Insertion dans le pipeline formulaire_traiter (SPIP)
100 *
101 * Au traitement du formulaire d'inscription, on update le filleul lié au code d'inscription
102 *
103 * @param array $flux
104 *              Le contexte du pipeline
105 * @return array $flux
106 *              Le contexte du pipeline modifié
107 */
108function parrainage_formulaire_traiter($flux){
109        if ($flux['args']['form'] == 'inscription' and $code_invitation = _request('code_invitation')){
110                spip_log('On a un code d invitation?','test.'._LOG_ERREUR);
111                // On doit d'abord chercher l'id_auteur qui vient d'être créé
112                $email = _request('mail_inscription');
113                $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'email = '.sql_quote($email));
114               
115                // Si l'auteur est bien là, on fait le lien entre le nouvel inscrit et le filleul
116                if ($id_auteur > 0)
117                        sql_updateq(
118                                'spip_filleuls',
119                                array(
120                                        'statut' => 'filleul',
121                                        'id_auteur' => $id_auteur
122                                ),
123                                array(
124                                        'code_invitation = '.sql_quote($code_invitation),
125                                        'email = '.sql_quote(_request('mail_inscription'))
126                                )
127                        );
128        }
129       
130        return $flux;
131}
132
133/**
134 * Insertion dans le pipeline intranet_pages_ok (Plugin intranet)
135 *
136 * Permettre l'accès à la page d'inscription si le code d'invitation est obligatoire, et que l'on a
137 * ce code dans l'Url
138 *
139 * @param array $pages_ok
140 *              Tableau des types de pages acceptées
141 * @return array $pages_ok
142 *              Le tableau des types de pages acceptées complété
143 */
144function parrainage_intranet_pages_ok($pages_ok){
145        if(include_spip('inc/config') && (lire_config('parrainage/invitation_obligatoire','') == 'on') && _request('invitation'))
146                $pages_ok[] = 'inscription';
147       
148        return $pages_ok;
149}
150?>
Note: See TracBrowser for help on using the repository browser.