source: spip-zone/_plugins_/openid/trunk/openid_pipelines.php @ 94583

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

Version 2.0, aucun changement fonctionnel si ce n'est compat SPIP 3.1 et suppression du vieux code pour les versions anterieures.

File size: 3.6 KB
Line 
1<?php
2/**
3 * Plugin OpenID
4 * Licence GPL (c) 2007-2009 Edouard Lafargue, Mathieu Marcillaud, Cedric Morin, Fil
5 *
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10/**
11 * ajouter un champ openID sur le formulaire CVT editer_auteur
12 *
13 * @param array $flux
14 * @return array
15 */
16function openid_editer_contenu_objet($flux){
17        if ($flux['args']['type']=='auteur') {
18                $openid = recuperer_fond('formulaires/inc-openid', $flux['args']['contexte']);
19                $flux['data'] = preg_replace('%(<(div|li) class=["\'][^"\']*editer_email(.*?)</\\2>)%is', '$1'."\n".$openid, $flux['data']);
20        }
21        return $flux;
22}
23
24/**
25 * Ajouter la valeur openID dans la liste des champs de la fiche auteur
26 *
27 * @param array $flux
28 */
29function openid_formulaire_charger($flux){
30        // si le charger a renvoye false ou une chaine, ne rien faire
31        if (is_array($flux['data'])){
32                if ($flux['args']['form']=='editer_auteur'){
33                        $flux['data']['openid'] = ''; // un champ de saisie openid !
34                        if ($id_auteur = intval($flux['data']['id_auteur']))
35                                $flux['data']['openid'] = sql_getfetsel('openid','spip_auteurs','id_auteur='.intval($id_auteur));
36                }
37                if ($flux['args']['form']=='inscription'){
38                        $flux['data']['_forcer_request'] = true; // forcer la prise en compte du post
39                        $flux['data']['url_openid'] = ''; // un champ de saisie openid !
40                        $flux['data']['openid'] = ''; // une url openid a se passer en hidden
41                        if ($erreur = _request('var_erreur'))
42                                $flux['data']['message_erreur'] = _request('var_erreur');
43                        elseif(_request('openid') AND (!_request('nom_inscription') OR !_request('mail_inscription')))
44                                $flux['data']['message_erreur'] = _T('openid:erreur_openid_info_manquantes');
45                }
46        }
47        return $flux;
48}
49
50
51/**
52 * Verifier la saisie de l'url openID sur la fiche auteur
53 *
54 * @param array $flux
55 */
56function openid_formulaire_verifier($flux){
57        if ($flux['args']['form']=='editer_auteur'){
58                if ($openid = _request('openid')){
59                        include_spip('inc/openid');
60                        $openid = nettoyer_openid($openid);
61                        if (!verifier_openid($openid))
62                                $flux['data']['openid']=_T('openid:erreur_openid');
63                }
64        }
65        if ($flux['args']['form']=='inscription'){
66                if ($idurl = _request('url_openid')){
67                        include_spip('inc/openid');
68                        if (!is_openid($idurl)
69                                OR !$idurl = nettoyer_openid($idurl)
70                                OR !verifier_openid($idurl))
71                                $flux['data']['url_openid']=_T('openid:erreur_openid');
72                        else {
73                                // openid valide, il faut renvoyer vers le fournisseur pour identification
74                                // et recup au retour du nom et de l'email
75                                $retour = openid_url_retour_insc($idurl,self());
76                                // lancer l'identification chez openid
77                                $erreur = demander_authentification_openid($idurl, $retour);
78                                // si on arrive ici : erreur
79                                $flux['data']['url_openid']=$erreur;
80                        }
81                }
82        }
83        return $flux;
84}
85
86
87
88/**
89 * ajouter l'open_id soumis lors de la soumission du formulaire CVT editer_auteur
90 * et lors de l'update d'un auteur a l'inscription en 2.1
91 *
92 * @param array $flux
93 * @return array
94 */
95function openid_pre_edition($flux){
96        if ($flux['args']['table']=='spip_auteurs') {
97                if (!is_null($openid = _request('openid'))) {
98                        include_spip('inc/openid');
99                        $flux['data']['openid'] = nettoyer_openid($openid);
100                }
101        }
102        return $flux;
103}
104
105/**
106 * Afficher l'openid sur la fiche de l'auteur
107 * @param array $flux
108 */
109function openid_afficher_contenu_objet($flux){
110        if ($flux['args']['type']=='auteur'
111                AND $id_auteur = $flux['args']['id_objet']
112                AND $openid = sql_getfetsel('openid','spip_auteurs','id_auteur='.intval($id_auteur))
113        ){
114                $flux['data'] .= propre("<div class='champ contenu_openid'><img src='".find_in_path('images/openid-16.png')
115                        ."' alt='"._T('openid:openid')."' width='16' height='16' />"
116                        . " [->$openid]</div>");
117
118        }
119
120        return $flux;
121}
122
123
124?>
Note: See TracBrowser for help on using the repository browser.