source: spip-zone/_plugins_/openinviter/openinviter_options.php @ 59377

Last change on this file since 59377 was 51432, checked in by cedric@…, 9 years ago

utiliser un name plus generique 'service_id' plutot que 'email', et ça evite une collision avec le formulaire d'ajout manuel

File size: 2.6 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6function formulaires_importer_contacts_charger_openinviter_dist($fournisseur){
7        return array(
8                'service_id' => '',
9                'password' => ''
10        );
11}
12
13function formulaires_importer_contacts_verifier_openinviter_dist($fournisseur){
14        $erreurs = array();
15       
16        $service_id = _request('service_id');
17        $password = _request('password');
18       
19        // L'service_id est obligatoire
20        if (!$service_id){
21                $erreurs['service_id'] = _T('info_obligatoire');
22        }
23        elseif ($fournisseur['type'] == 'webmail' and include_spip('inc/filtres') and !email_valide($service_id)){
24                $erreurs['service_id'] = _T('info_email_invalide');
25        }
26       
27        // Le mot de passe est obligatoire
28        if (!$password){
29                $erreurs['password'] = _T('info_obligatoire');
30        }
31       
32        // S'il n'y a pas d'erreurs on peut essayer de s'authentifier
33        if (!$erreurs){
34                $inviter = openinviter_authentification($fournisseur['nom_plugin'], $service_id, $password, $erreurs);
35        }
36       
37        // S'il n'y a toujours pas d'erreurs, récupère les contacts
38        if (!$erreurs){
39                $contacts_openinviter = $inviter->getMyContacts();
40               
41                // S'il y a un problème
42                if ($contacts_openinviter === false or !is_array($contacts_openinviter)){
43                        $erreurs['message_erreur'] = _T('openinviter:erreur_generale');
44                }
45                else{
46                        // On éteint le plugin
47                        $inviter->stopPlugin();
48                       
49                        // On nettoie les résultats
50                        $contacts = array();
51                        foreach ($contacts_openinviter as $email=>$nom){
52                                $email = trim($email);
53                                if ($email) $contacts[] = array(
54                                        'nom' => $nom,
55                                        'email' => $email
56                                );
57                        }
58                       
59                        // Et on met les contacts dans l'environnement
60                        set_request('contacts', $contacts);
61                }
62        }
63       
64        return $erreurs;
65}
66
67function openinviter_authentification($nom_plugin, $service_id, $password, &$erreurs){
68        include_spip('OpenInviter/openinviter');
69        $inviter = new OpenInviter();
70       
71        if (!$inviter){
72                $erreurs['message_erreur'] = _T('openinviter:erreur_generale');
73        }
74       
75        // On démarre le plugin choisi
76        $inviter->startPlugin($nom_plugin);
77       
78        // S'il y a une erreur de connexion au plugin
79        $erreur_eventuelle = $inviter->getInternalError();
80        if (!empty($erreur_eventuelle)){
81                if (include_spip('inc/autoriser') and autoriser('configurer')) $erreurs['message_erreur'] = $erreur_eventuelle;
82                else $erreurs['message_erreur'] = _T('openinviter:erreur_generale');
83        }
84        // Sinon s'il y a une erreur d'authentification au plugin avec les infos fournies
85        elseif (!$inviter->login($service_id, $password)){
86                $erreur_eventuelle = $inviter->getInternalError();
87                $erreurs['service_id'] = $erreur_eventuelle ? $erreur_eventuelle : _T('openinviter:erreur_authentification');
88        }
89       
90        return $inviter;
91}
92
93?>
Note: See TracBrowser for help on using the repository browser.