source: spip-zone/_plugins_/connecteur/trunk/connecteur_fonctions.php @ 98181

Last change on this file since 98181 was 98175, checked in by p@…, 4 years ago

Sortir l'include de la fonction évite une erreur php dans le cache

File size: 3.7 KB
Line 
1<?php
2/**
3 * Fonctions utiles au plugin Connection
4 *
5 * @plugin     Connection
6 * @copyright  2016
7 * @author     Phenix
8 * @licence    GNU/GPL
9 * @package    SPIP\Connecteur\Fonctions
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16/**
17 * Balise des connecteurs
18 *
19 * Active le lien de connection spécifique à un connecteur
20 *
21 * ```
22 * #CONNECTEUR_FACEBOOK
23 * ```
24 * Cette balise appel une fonction du dossier connecteur: `connecteur_facebook_lien`
25 *
26 * @param mixed $p
27 * @access public
28 * @return mixed
29 */
30function balise_CONNECTEUR__dist($p) {
31
32        // Récupérer le type de connecteur
33        // Le substr supprime la partie "CONNECTEUR_" pour ne garder que la source
34        $connecteur_type = strtolower(substr($p->nom_champ, 11));
35        $redirect = interprete_argument_balise(1, $p);
36
37        // Toujours avoir au moins une redirection
38        if (empty($redirect)) {
39                $redirect = '\''.self().'\'';
40        }
41
42        $site = interprete_argument_balise(2, $p);
43        if ($site) {
44                $site = ", 'true'";
45        } else {
46                $site = '';
47        }
48
49        $p->code = "connecteur_lien('$connecteur_type', $redirect $site)";
50        $p->interdire_scripts = false;
51
52        return $p;
53}
54
55/**
56 * Charger la fonction du service
57 * Utiliser charger_fonction dans une fonction balise provoque des bugs
58 *
59 * @access public
60 */
61function connecteur_lien($source, $redirect = '', $site = false) {
62        include_spip('inc/session');
63        // On appel la fonction du service
64        if ($site) {
65                // On a explicitement demandé de connecter un compte pour le site
66                $action = generer_action_auteur('connexion_site', $source, $redirect, true);
67        } elseif (!empty(session_get('id_auteur'))) {
68                // Si une session SPIP est déjà ouverte, on va ajouter le compte
69                $action = generer_action_auteur('connecteur_lier', $source, $redirect, true);
70        } else {
71                // On est dans la création d'un nouveau compte SPIP
72                $action = generer_action_auteur('connexion', $source, $redirect, true);
73        }
74
75        $f = charger_fonction($source.'_lien', 'connecteur');
76        return $f($action);
77}
78
79/**
80 * Cette fonction va créer un auteur SPIP en fonction d'un tableau
81 * de donnée simple
82 *
83 * ```
84 * array('nom' => 'truc', 'email' => 'truc@machin.be')
85 * ```
86 *
87 * @param mixed $source
88 * @access public
89 */
90function connecteur_creer_auteur($info, $statut = '6forum') {
91
92        // Inscrire l'auteur sur base des informations du connecteur
93        $inscrire_auteur = charger_fonction('inscrire_auteur', 'action');
94        $desc = $inscrire_auteur(
95                $statut,
96                $info['email'],
97                $info['nom']
98        );
99
100        return $desc;
101}
102
103/**
104 * Une fonction qui va renvoyer les informations complète d'un auteur
105 * sur base de son email
106 *
107 * @param array $info Tableau contenant une clé email
108 * @access public
109 * @return array Les informations complète de l'auteur
110 */
111function connecteur_completer_auteur($info) {
112        // On complète le profil de l'auteur afin de pouvoir le connecteur
113        $info = sql_fetsel(
114                '*',
115                'spip_auteurs',
116                array(
117                        'email='.sql_quote($info['email']),
118                        'statut !='.sql_quote('5poubelle')
119                )
120        );
121
122        return $info;
123}
124
125/**
126 * Connecter un auteur à SPIP
127 *
128 * @param array $auteur_info Tableau contenant une clé email
129 * @access public
130 */
131function connecteur_connecter($auteur_info) {
132        // Récupérer toute les informations de l'auteur
133        $auteur_info = connecteur_completer_auteur($auteur_info);
134        include_spip('inc/auth');
135        auth_loger($auteur_info);
136
137        return $auteur_info;
138}
139
140/**
141 * Balise TOKEN
142 * Permet de récupérer le token de l'utilisateur connecté.
143 *
144 * ```
145 * #TOKEN_FACEBOOK
146 * ```
147 *
148 * @param mixed $p
149 * @access public
150 * @return mixed
151 */
152include_spip('inc/token');
153function balise_TOKEN__dist($p) {
154
155        $connecteur_type = strtolower(substr($p->nom_champ, 6));
156
157        $p->code = "connecteur_get_token(session_get('id_auteur'), '$connecteur_type')";
158        $p->interdire_scripts = false;
159
160        return $p;
161}
Note: See TracBrowser for help on using the repository browser.