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

Last change on this file since 66567 was 66567, checked in by kent1@…, 9 years ago

Rétablir la possibilité de se créer un compte à partir d'openid

File size: 4.4 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('%(<li class=["\'][^"\']*editer_email(.*?)</li>)%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 * Enregistrer l'openid dans la base au traitement du formulaire d'inscription
89 * utilise en 2.0 uniquement
90 *
91 * @param array $flux
92 * @return array
93 */
94function openid_formulaire_traiter($flux){
95        if ($flux['args']['form']=='inscription'){
96                $nom = _request('nom_inscription');
97                $mail = _request('mail_inscription');
98                $openid = _request('openid');
99                if (function_exists('test_inscription'))
100                        $f = 'test_inscription';
101                else    $f = 'test_inscription_dist';
102                $desc = $f($mode, $mail, $flux['args']['args'][0], $flux['args']['args'][2]);
103                if (is_array($desc)
104                  AND $mail = $desc['email']){
105                        include_spip('base/abstract_sql');
106                        sql_updateq("spip_auteurs", array('openid'=>$openid),"statut='nouveau' AND email=" . sql_quote($mail));
107                }
108        }
109        return $flux;
110}
111
112
113/**
114 * ajouter l'open_id soumis lors de la soumission du formulaire CVT editer_auteur
115 * et lors de l'update d'un auteur a l'inscription en 2.1
116 *
117 * @param array $flux
118 * @return array
119 */
120function openid_pre_edition($flux){
121        if ($flux['args']['table']=='spip_auteurs') {
122                if (!is_null($openid = _request('openid'))) {
123                        include_spip('inc/openid');
124                        $flux['data']['openid'] = nettoyer_openid($openid);
125                }
126        }
127        return $flux;
128}
129
130/**
131 * Afficher l'openid sur la fiche de l'auteur
132 * @param array $flux
133 */
134function openid_afficher_contenu_objet($flux){
135        if ($flux['args']['type']=='auteur'
136                AND $id_auteur = $flux['args']['id_objet']
137                AND $openid = sql_getfetsel('openid','spip_auteurs','id_auteur='.intval($id_auteur))
138        ){
139                $flux['data'] .= propre("<div class='champ contenu_openid'><img src='".find_in_path('images/openid-16.png')
140                        ."' alt='"._T('openid:openid')."' width='16' height='16' />"
141                        . " [->$openid]</div>");
142
143        }
144
145        return $flux;
146}
147
148
149?>
Note: See TracBrowser for help on using the repository browser.