source: spip-zone/_plugins_/soap-sympa/branches/v3/formulaires/abosympa_review.php @ 70342

Last change on this file since 70342 was 70342, checked in by thomas.weiss@…, 7 years ago

ajout fonction rechercher abonné

File size: 3.5 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5// classe PHP et les services SOAP
6include_spip('inc/soapsympa_trustedapp');
7
8function utf8DecodeArray($arr) {
9        $utf8DecodedArray = array();
10        foreach ($arr as $key => $value) {
11                if (is_array($value)) {
12                        $utf8DecodedArray[$key] = utf8DecodeArray($value);
13                        continue;
14                }
15                $utf8DecodedArray[$key] = utf8_decode($value);
16        }
17        return $utf8DecodedArray;
18}
19
20
21// chargement des valeurs par defaut des champs du formulaire
22function formulaires_abosympa_review_charger_dist($nomliste = ""){
23        $research = _request('search_abonne');
24        // On verifie que la liste est bien accessible
25        $conf = unserialize($GLOBALS['meta']['soapsympa']);
26        //instanciation de la classe SOAP-SYMPA
27        $Sympa = new SympaTrustedApp($conf['serveur_distant'], $conf['identifiant'], $conf['mot_de_passe']);
28        $Sympa->USER_EMAIL = $conf['proprietaire'];     //on recupere l email du listsmaster des listes pour avoir le droit d utiliser le service SOAP
29        try { 
30                $res = $Sympa->review($nomliste);
31                $Abonnes = array(array());
32                $i = 0;
33                $res = utf8DecodeArray($res);
34                foreach ($res as $abonne) {
35                    if ($_POST['search_abonne_submit']) {//sin on effectue une recherche on affiche que les abonnes correspondants
36                     
37                        if(substr_count($abonne,$research) != 0) {
38                            $Abonnes[$i]['email'] = $abonne;
39                        }
40                        }else{//sinon on affiche tous les abonnes
41                            $Abonnes[$i]['email'] = $abonne;
42                        }
43                        $i++;
44                   
45                }
46                $Listname = explode("@",$List);
47                $valeurs['listname'] = $nomliste;
48                $valeurs['abonnes'] = $Abonnes;
49        } catch(SoapFault $fault) {
50                $valeurs['message_erreur'] .= _T("soapsympa:abonnes_liste_pas_droit");
51        }
52       
53        return $valeurs;
54}
55
56
57function formulaires_abosympa_review_verifier_dist($nomliste = ""){
58
59        //initialise le tableau des erreurs
60        $erreurs = array();
61        if ($_POST['desabonnement']) {
62            // Faire une fonction de verif si les cases sont coches
63            $case = _request('emails');
64        }elseif ($_POST['search_abonne_submit']) {
65            $case = _request('search_abonne');
66        }
67       
68        if($case == ''){
69            $erreurs['erreur_liste'] = _T("soapsympa:no_list_selected");
70            spip_log("Aucune liste selectionnee","soapsympa");
71        }
72       
73
74        //message d'erreur
75        if (count($erreurs)) {
76                $erreurs['message_erreur'] .= _T('soapsympa:verifier_formulaire');
77        }
78
79        return $erreurs; // si c'est vide, traiter sera appele, sinon le formulaire sera resoumis
80}
81
82function formulaires_abosympa_review_traiter_dist($nomliste = ""){
83       
84        if ($_POST['desabonnement']) {
85                        $conf = unserialize($GLOBALS['meta']['soapsympa']);
86                        //instanciation de la classe SOAP-SYMPA
87                        $Sympa = new SympaTrustedApp($conf['serveur_distant'], $conf['identifiant'], $conf['mot_de_passe']);
88                        //recuperation des emails coches
89                        $emails = _request('emails', true);
90
91                        $message = null;
92
93                       
94                        $nb_listes = 0;
95                        foreach($emails as $id_abosympa) {
96                              $nb_listes++;
97                              $Sympa->USER_EMAIL = $conf['proprietaire'];       //pour cette action DELETE de SYMPA l'email est celui du listmaster
98                              try {
99                                  $soapResult = $Sympa->del(_request('list'), $id_abosympa, true);
100                                  $probleme=false;
101                                         
102                              } catch (SoapFault $ex) {
103                                  $msg = $ex->detail ? $ex->detail : $ex->faultstring;
104                                  $message_listes = "<strong>". _T('pass_erreur_probleme_technique')."</strong></li>";
105                                  $probleme=true;
106                              }
107                        }
108                        $message_listes .= "<br class='nettoyeur' />";
109                        if ($probleme==false) $message .= _T("soapsympa:message_confirmation_d");
110                        $message .= $message_listes;
111                       
112                        if ($probleme==false)   return $message;
113                       
114                        else return $message_listes;
115        }
116       
117}
118?>
Note: See TracBrowser for help on using the repository browser.