source: spip-zone/_plugins_/parrainage/action/inviter_filleul.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.6 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6/**
7 * Inviter un filleul
8 * @param unknown_type $arg
9 * @return unknown_type
10 */
11function action_inviter_filleul_dist($arg=null, $message='') {
12        if (is_null($arg)){
13                $securiser_action = charger_fonction('securiser_action', 'inc');
14                $arg = $securiser_action();
15        }
16
17        // On fait quelque chose seulement si on trouve le filleul
18        // Et qu'il y a une raison de le contacter
19        if ($id_filleul = intval($arg)
20                and $id_filleul > 0
21                and $filleul = sql_fetsel('*', 'spip_filleuls', 'id_filleul = '.$id_filleul)
22                and in_array($filleul['statut'], array('en_cours', 'contact', 'sans_nouvelles'))
23        ){
24                // On récupère les infos dont on va avoir besoin
25                include_spip('inc/config');
26                $envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
27                $parrain = sql_fetsel('nom, email', 'spip_auteurs', 'id_auteur = '.$filleul['id_parrain']);
28               
29                // On construit les différents paramètres
30                $destinataire = $filleul['email'];
31                $sujet = _T('parrainage:invitation_sujet', array('nom'=>$parrain['nom'], 'site'=>$GLOBALS['meta']['nom_site']));
32                $email_envoyeur = $parrain['email'];
33                $nom_envoyeur = $parrain['nom'];
34                $url_invitation = lire_config('parrainage/url_inscription', generer_url_public('inscription'));
35                $url_invitation = parametre_url($url_invitation, 'invitation', $filleul['code_invitation']);
36                $infos = array(
37                        'id_filleul' => $id_filleul,
38                        'nom_filleul' => $filleul['nom'],
39                        'nom_parrain' => $parrain['nom'],
40                        'code_invitation' => $filleul['code_invitation'],
41                        'url_invitation' => $url_invitation,
42                        'message' => $message
43                );
44               
45                // On génère le mail HTML avec le fond
46                $html = recuperer_fond(
47                        'notifications/inviter_filleul',
48                        $infos
49                );
50                // Si le fond existe, on génère la version texte avec le squelette
51                if (find_in_path('notifications/inviter_filleul_texte.html')){
52                        $texte = recuperer_fond(
53                                'notifications/inviter_filleul_texte',
54                                $infos
55                        );
56                }
57                // Sinon on le génère à partir du HTML
58                else{
59                        include_spip('classes/facteur');
60                        $texte = Facteur::html2text($html);
61                }
62               
63                // On utilise la forme avancé de Facteur
64                $corps = array(
65                        'html' => $html,
66                        'texte' => $texte,
67                        'nom_envoyeur' => $nom_envoyeur
68                );
69               
70                // On envoie enfin le courriel
71                $ok = $envoyer_mail(
72                        $destinataire,
73                        $sujet,
74                        $corps,
75                        $email_envoyeur,
76                        'X-Originating-IP: '.$GLOBALS['ip']
77                );
78               
79                // Si ça a marché, on modifie les infos du filleul
80                if ($ok){
81                        sql_updateq(
82                                'spip_filleuls',
83                                array(
84                                        'statut' => 'invite',
85                                        'date_invitation' => date('Y-m-d H:i:s')
86                                ),
87                                'id_filleul = '.$id_filleul
88                        );
89                }
90        }
91}
92
93?>
Note: See TracBrowser for help on using the repository browser.