[PLUGINS] +abomailman
[ptitvelo/web/www.git] / www / plugins / abomailmans / formulaires / abomailman.php
diff --git a/www/plugins/abomailmans/formulaires/abomailman.php b/www/plugins/abomailmans/formulaires/abomailman.php
new file mode 100644 (file)
index 0000000..868c417
--- /dev/null
@@ -0,0 +1,151 @@
+<?php
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('base/abstract_sql');
+
+// chargement des valeurs par defaut des champs du formulaire
+//une seule liste = [(#FORMULAIRE_ABOMAILMAN{1})]
+function formulaires_abomailman_charger_dist($id_abomailman = ""){
+
+       //initialise les variables d'environnement pas défaut
+       $valeurs = array();
+
+       // Si le visiteur est logue au site on utilise ses informations de connexion par défaut
+       include_spip('inc/session');
+       $valeurs['email'] = _request('email') ? _request('email') : session_get('email');
+       $valeurs['nom'] = _request('nom') ? _request('nom') : session_get('nom');
+
+       //si id_abomailman est renseigne, on envoie qu'une liste
+       if(intval($id_abomailman)){
+               $valeurs['id_abomailman'] = $id_abomailman;
+               $ok=sql_getfetsel('id_abomailman','spip_abomailmans','id_abomailman ='.intval($id_abomailman).' AND desactive = 0');
+       }
+       else {
+               $valeurs['listes'] = _request('listes');
+               // on verifie s'il existe des listes disponibles
+               $ok=sql_count(sql_select('id_abomailman','spip_abomailmans'));
+       }
+       $valeurs['nobot'] = _request('nobot');
+       if ($ok)
+       return $valeurs;
+}
+
+
+function formulaires_abomailman_verifier_dist($id_abomailman = ""){
+
+       //initialise le tableau des erreurs
+       $erreurs = array();
+
+       // recuperation des valeurs du formulaire
+       $nom = _request('nom');
+       $email = _request('email');
+       $listes = _request('listes', true);
+       $abonnement = _request('abonnement');
+       $desabonnement = _request('desabonnement');
+
+       // Faire une fonction de verif sur le mail pour validite
+
+       if($email == ''){
+               $erreurs['email'] = _T("abomailmans:email_oublie");
+       }
+       else{
+               include_spip('inc/filtres'); # pour email_valide()
+               if (!email_valide($email)){
+                       $erreurs['email'] = _T("form_email_non_valide");
+               }
+               else{
+                       spip_log("Email = $email;","abomailmans");
+                       //TODO
+                       // stocker l'email dans un fichier ou la session, histoire de ne pas se presenter 2 fois
+               }
+       }
+
+       if(empty($listes)){
+               $erreurs['listes'] = _T("abomailmans:choisir_liste");
+       }
+
+    //message d'erreur generalise
+    if (count($erreurs)) {
+        $erreurs['message_erreur'] .= _T('abomailmans:verifier_formulaire');
+    }
+
+    return $erreurs; // si c'est vide, traiter sera appele, sinon le formulaire sera ressoumis
+}
+
+function formulaires_abomailman_traiter_dist($id_abomailman = ""){
+       // Pour l'envoi de l'email
+       include_spip('inc/abomailmans');
+
+       // Antispam basique :
+       // si l'input invisible a ete renseigne, ca ne peut etre qu'un bot
+       if (strlen(_request('nobot'))){
+               return array('message_erreur'=>_T('abomailmans:erreur_nobot'));
+       }
+
+       $nom = _request('nom');
+       $email = _request('email');
+       $listes = _request('listes', true);
+       $abonnement = _request('abonnement');
+       $desabonnement = _request('desabonnement');
+
+       $message = null;
+
+       $message_listes = "<ul>";
+
+       $nb_listes = 0;
+       foreach($listes as $id_abomailman) {
+               $nb_listes++;
+
+               //on initialise l'envoi
+               // on traite chaque liste via une fonction reutilisable ailleurs
+               $traiter=abomailman_traiter_abonnement($id_abomailman,$abonnement);
+               $titre = $traiter[0];
+               $proprio_email=$traiter[1];
+               $liste_email=$traiter[2];
+               $sujet=$traiter[3];
+               $body= array( 
+                       'texte' => $traiter[4], 
+                       'nom_envoyeur' => $nom 
+               ); 
+               $headers=$traiter[5];
+
+               // si on veut ajouter un mail de notification ou de test
+               /*
+               $liste_email = array(
+                       $liste_email,"verif@exemple.com"
+               );
+               */
+               if (abomailman_mail($nom, $email, $proprio_email,$liste_email, $sujet, $body,'',$headers)){
+                       $message_listes  .= "<li><strong>$titre</strong></li>";
+               }else{
+                       $message_listes .= "<li><strong>". _T('pass_erreur_probleme_technique')."</strong></li>";
+                       $probleme=true;
+               }
+       }
+
+       $message_listes .= "</ul><br class='nettoyeur' />";
+
+       if($abonnement){
+               if($nb_listes>1){
+                       $message .= _T("abomailmans:message_confirmation_a");
+               }else{
+                       $message .= _T("abomailmans:message_confirmation_unique_a");
+               }
+       } else{
+               if($nb_listes>1){
+                       $message .= _T("abomailmans:message_confirmation_d");
+               }else{
+                       $message .= _T("abomailmans:message_confirmation_unique_d");
+               }
+       }
+
+       $message .= $message_listes;
+       $message .= "<p>" . _T("abomailmans:message_confirm_suite") . "</p>";
+
+       if ($probleme==false)
+               return $message;
+       else
+               return $message_listes;
+}
+?>