[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / abomailmans / formulaires / abomailman.php
1 <?php
2
3 if (!defined("_ECRIRE_INC_VERSION")) return;
4
5 include_spip('base/abstract_sql');
6
7 // chargement des valeurs par defaut des champs du formulaire
8 //une seule liste = [(#FORMULAIRE_ABOMAILMAN{1})]
9 function formulaires_abomailman_charger_dist($id_abomailman = ""){
10 global $visiteur_session;
11
12 //initialise les variables d'environnement pas défaut
13 $valeurs = array();
14
15 // Si le visiteur est logue au site on utilise ses informations de connexion par défaut
16 $valeurs['email'] = _request('email') ? _request('email') : $visiteur_session['email'];
17 $valeurs['nom'] = _request('nom') ? _request('nom') : $visiteur_session['nom'];
18
19 //si id_abomailman est renseigne, on envoie qu'une liste
20 if(intval($id_abomailman)){
21 $valeurs['id_abomailman'] = $id_abomailman;
22 $ok=sql_getfetsel('id_abomailman','spip_abomailmans','id_abomailman ='.intval($id_abomailman).' AND desactive = 0');
23 }
24 else {
25 $valeurs['listes'] = _request('listes');
26 // on verifie s'il existe des listes disponibles
27 $ok=sql_count(sql_select('id_abomailman','spip_abomailmans'));
28 }
29 $valeurs['nobot'] = _request('nobot');
30 if ($ok)
31 return $valeurs;
32 }
33
34
35 function formulaires_abomailman_verifier_dist($id_abomailman = ""){
36
37 //initialise le tableau des erreurs
38 $erreurs = array();
39
40 // recuperation des valeurs du formulaire
41 $nom = _request('nom');
42 $email = _request('email');
43 $listes = _request('listes', true);
44 $abonnement = _request('abonnement');
45 $desabonnement = _request('desabonnement');
46
47 // Faire une fonction de verif sur le mail pour validite
48
49 if($email == ''){
50 $erreurs['email'] = _T("abomailmans:email_oublie");
51 }
52 else{
53 include_spip('inc/filtres'); # pour email_valide()
54 if (!email_valide($email)){
55 $erreurs['email'] = _T("form_email_non_valide");
56 }
57 else{
58 spip_log("Email = $email;","abomailmans");
59 //TODO
60 // stocker l'email dans un fichier ou la session, histoire de ne pas se presenter 2 fois
61 }
62 }
63
64 if(empty($listes)){
65 $erreurs['listes'] = _T("abomailmans:choisir_liste");
66 }
67
68 //message d'erreur generalise
69 if (count($erreurs)) {
70 $erreurs['message_erreur'] .= _T('abomailmans:verifier_formulaire');
71 }
72
73 return $erreurs; // si c'est vide, traiter sera appele, sinon le formulaire sera ressoumis
74 }
75
76 function formulaires_abomailman_traiter_dist($id_abomailman = ""){
77 // Pour l'envoi de l'email
78 include_spip('inc/abomailmans');
79
80 // Antispam basique :
81 // si l'input invisible a ete renseigne, ca ne peut etre qu'un bot
82 if (strlen(_request('nobot'))){
83 return array('message_erreur'=>_T('abomailmans:erreur_nobot'));
84 }
85
86 $nom = _request('nom');
87 $email = _request('email');
88 $listes = _request('listes', true);
89 $abonnement = _request('abonnement');
90 $desabonnement = _request('desabonnement');
91
92 $message = null;
93
94 $message_listes = "<ul>";
95
96 $nb_listes = 0;
97 foreach($listes as $id_abomailman) {
98 $nb_listes++;
99
100 //on initialise l'envoi
101 // on traite chaque liste via une fonction reutilisable ailleurs
102 $traiter=abomailman_traiter_abonnement($id_abomailman,$abonnement);
103 $titre = $traiter[0];
104 $proprio_email=$traiter[1];
105 $liste_email=$traiter[2];
106 $sujet=$traiter[3];
107 $body= array(
108 'texte' => $traiter[4],
109 'nom_envoyeur' => $nom
110 );
111 $headers=$traiter[5];
112
113 // si on veut ajouter un mail de notification ou de test
114 /*
115 $liste_email = array(
116 $liste_email,"verif@exemple.com"
117 );
118 */
119 if (abomailman_mail($nom, $email, $proprio_email,$liste_email, $sujet, $body,'',$headers)){
120 $message_listes .= "<li><strong>$titre</strong></li>";
121 }else{
122 $message_listes .= "<li><strong>". _T('pass_erreur_probleme_technique')."</strong></li>";
123 $probleme=true;
124 }
125 }
126
127 $message_listes .= "</ul><br class='nettoyeur' />";
128
129 if($abonnement){
130 if($nb_listes>1){
131 $message .= _T("abomailmans:message_confirmation_a");
132 }else{
133 $message .= _T("abomailmans:message_confirmation_unique_a");
134 }
135 } else{
136 if($nb_listes>1){
137 $message .= _T("abomailmans:message_confirmation_d");
138 }else{
139 $message .= _T("abomailmans:message_confirmation_unique_d");
140 }
141 }
142
143 $message .= $message_listes;
144 $message .= "<p>" . _T("abomailmans:message_confirm_suite") . "</p>";
145
146 if ($probleme==false)
147 return $message;
148 else
149 return $message_listes;
150 }
151 ?>