source: spip-zone/_plugins_/mailsuscribers/action/suscribe_mailsuscriber.php @ 67831

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

Debut du plugin de gestion des Inscrits a une liste de diffusion par mail
Pour eviter toute l'ambiguite inscrit/abonne on choisit le prefixe mailsuscribers pour le plugin qui gere l'objet mailsuscriber (un inscrit/abonne a une diffusion par mail)
Le plugin gere deja :

  • l'interface d'admin pour inscrire/desinscrire
  • la configuration simple ou double optin
  • les notifications automatisees de mail de confirmation, d'inscription, de desinscription en fonction du changement de statut
  • les actions de confirmation/inscription/desinscription correspondantes
  • la tracabilite de l'optin par log de l'heure/ip/(identite si connue) lorsqu'il y a inscription ou desinscription (champ opposable car non editable via le back-office)
  • le passage automatique en refuse/suspendu d'une inscription non confirmee (double optin)
  • la suppression automatique des inscrit a la poubelle (a priori operation manuelle a la demande du concerne : par defaut un desinscrit reste en base en statut refuse/suspendu)

TODO :

  • le formulaire publique d'inscription/desinscription
  • l'ajout de la case d'optin inscription(suscribe) newsletter dans le formulaire d'inscription (signup) de spip
  • l'import automatique des inscrits spip-listes/spip-lettres/mes_abonnes/clevermail quand presents en base
  • l'import par csv
  • l'export au format csv
  • l'API conventionnelle du module d'inscription
  • en tout dernier, si possible, la gestion des listes de diffusions (ou sujets ou themes ou canaux, terminologie a determiner)

(Et un grand merci a Marcimat et sa fabrique qui permettent vraiment de gagner un temps fou dans l'ecriture de nouveaux objets)

File size: 1.9 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
11function action_suscribe_mailsuscriber_dist($email=null, $double_optin=null){
12        include_spip('mailsuscribers_fonctions');
13        include_spip('inc/config');
14        if (is_null($email)){
15                $email = _request('email');
16                $arg = _request('arg');
17                $row = sql_fetsel('id_mailsuscriber,email,jeton,lang,statut','spip_mailsuscribers','email='.sql_quote($email));
18                if (!$row
19                        OR $arg!==mailsuscriber_cle_action("suscribe",$row['email'],$row['jeton'])){
20                        $row = false;
21                }
22        }
23        else {
24                $row = sql_fetsel('id_mailsuscriber,email,jeton,statut','spip_mailsuscribers','email='.sql_quote($email));
25        }
26        if (!$row){
27                include_spip('inc/minipres');
28                echo minipres();
29                exit;
30        }
31
32        include_spip("inc/lang");
33        changer_langue($row['lang']);
34
35        if ($row['statut']!='valide'){
36                // OK l'email est connu et valide
37                include_spip("action/editer_objet");
38                // si doubleoptin, envoyer un mail de confirmation
39                if (is_null($double_optin))
40                        $double_optin = lire_config('mailsuscribers/double_optin',0);
41                if ($double_optin){
42                        // on passe en prop qui declenche l'envoi d'un mail
43                        objet_modifier("mailsuscriber",$row['id_mailsuscriber'],array('statut'=>'prop'));
44                        $titre = _T('mailsuscriber:confirmsuscribe_texte_email_1',array('email'=>$row['email'],'nom_site_spip'=>$GLOBALS['meta']['nom_site'],'url_site_spip'=>$GLOBALS['meta']['adresse_site']));
45                        $titre .= "<br />"._T('mailsuscriber:confirmsuscribe_texte_email_envoye');
46                }
47                // sinon inscrire directement
48                else {
49                        objet_modifier("mailsuscriber",$row['id_mailsuscriber'],array('statut'=>'valide'));
50                        $titre = _T('mailsuscriber:suscribe_texte_email_1',array('email'=>$row['email']));
51                }
52        }
53        else {
54                $titre = _T('mailsuscriber:suscribe_deja_texte',array('email'=>$row['email']));
55        }
56
57
58        // Dans tous les cas on finit sur un minipres qui dit si ok ou echec
59        include_spip('inc/minipres');
60        echo minipres($titre,"","",true);
61
62}
Note: See TracBrowser for help on using the repository browser.