source: spip-zone/_plugins_/parrainage/parrainage_pipelines.php @ 54053

Last change on this file since 54053 was 54053, checked in by rastapopoulos@…, 9 years ago

Importation du plugin "Parrainage", permettant de faire des campagnes de... parrainage.

N'importe quel utilisateur peut avoir une liste de contacts à qui faire la pub du site. Tout contact est identifié par son adresse email. Dans sa liste, on peut ajouter un contact avec un formulaire simple (nom, email) : #FORMULAIRE_AJOUTER_FILLEUL. On peut aussi utiliser le plugin "Importateur de contacts", notamment avec OpenInviter?, pour importer en masse : #FORMULAIRE_IMPORTER_CONTACTS{#SELF, parrainage_importer_contacts}.

On voit sa liste avec #FORMULAIRE_PARRAINAGE. On peut alors sélectionner à qui envoyer le message, ajouter un texte, et balancer tout ça. Chaque contact a un statut (juste un contact, déjà contacté, déjà inscrit mais pas grâce à toi, ou filleul cad inscrit grace à toi).

Les filleuls potentiels reçoivent un mail invitant à s'inscrire. Lors de l'inscription, un champ supplémentaire permet de renseigner la clé du parrain (c'est automatique si on suit le lien du mail). Un utilisateur inscrit de cette manière, sera alors lié à son parrain.

Il est possible de configurer le plugin pour *obliger* les inscrits à avoir un parrain. Il est alors impossible de s'inscrire sur le site si l'on a pas reçu une invitation. Cela permet de faire un peu de "buzz".

File size: 2.5 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6function parrainage_formulaire_charger($flux){
7        if ($flux['args']['form'] == 'inscription'){
8                if ($code_invitation = _request('invitation'))
9                        $flux['data']['code_invitation'] = $code_invitation;
10                else
11                        $flux['data']['code_invitation'] = '';
12        }
13       
14        return $flux;
15}
16
17function parrainage_recuperer_fond($flux){
18        if ($flux['args']['fond'] == 'formulaires/inscription'){
19                include_spip('inc/config');
20                $obligatoire = lire_config('parrainage/invitation_obligatoire','') ? 'oui' : 'non';
21                $saisie = recuperer_fond(
22                        'saisies/_base',
23                        array($flux['args']['contexte']['code_invitation'],
24                                'type_saisie' => 'input',
25                                'nom' => 'code_invitation',
26                                'valeur' => $flux['args']['contexte']['code_invitation'],
27                                'erreurs' => $flux['args']['contexte']['erreurs'],
28                                'label' => _T('parrainage:inscription_code_invitation_label'),
29                                'obligatoire' => $obligatoire
30                        )
31                );
32                $flux['data']['texte'] = preg_replace("%<li class='saisie_mail_inscription.*?</li>%is", '$0'.$saisie, $flux['data']['texte']);
33        }
34       
35        return $flux;
36}
37
38function parrainage_formulaire_verifier($flux){
39        if ($flux['args']['form'] == 'inscription'){
40                include_spip('inc/config');
41                $code_invitation = _request('code_invitation');
42                // Si l'invitation est obligatoire
43                if (lire_config('parrainage/invitation_obligatoire','') and !$code_invitation){
44                        $flux['data']['code_invitation'] = _T('parrainage:erreur_invitation_obligatoire');
45                }
46                // Si le code ne correspond pas à l'email donné
47                elseif (!$email = sql_getfetsel('email', 'spip_filleuls', 'code_invitation = '.sql_quote($code_invitation))
48                        or $email != _request('mail_inscription')
49                ){
50                        $flux['data']['code_invitation'] = _T('parrainage:erreur_invitation_invalide');
51                }
52        }
53       
54        return $flux;
55}
56
57function parrainage_formulaire_traiter($flux){
58        if ($flux['args']['form'] == 'inscription' and $code_invitation = _request('code_invitation')){
59                // On doit d'abord chercher l'id_auteur qui vient d'être créé
60                $email = _request('mail_inscription');
61                $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'email = '.sql_quote($email));
62               
63                // Si l'auteur est bien là, on fait le lien entre le nouvel inscrit et le filleul
64                if ($id_auteur > 0)
65                        sql_updateq(
66                                'spip_filleuls',
67                                array(
68                                        'statut' => 'filleul',
69                                        'id_auteur' => $id_auteur
70                                ),
71                                array(
72                                        'code_invitation = '.sql_quote($code_invitation),
73                                        'email = '.sql_quote(_request('mail_inscription'))
74                                )
75                        );
76        }
77       
78        return $flux;
79}
80
81?>
Note: See TracBrowser for help on using the repository browser.