source: spip-zone/_plugins_/incarner/trunk/incarner_pipelines.php @ 99372

Last change on this file since 99372 was 99372, checked in by bystrano@…, 3 years ago

ajoute un onglet pour se déloguer définitivement

File size: 3.3 KB
Line 
1<?php
2/**
3 * Pipelines du plugin Incarner
4 *
5 * @plugin     Incarner
6 * @copyright  2016
7 * @author     Michel Bystranowski
8 * @licence    GNU/GPL
9 */
10
11/**
12 * Afficher un lien pour incarner un auteur sur sa page
13 *
14 * @pipeline affiche_gauche
15 * @param  array $flux Données du pipeline
16 * @return array       Données du pipeline
17 */
18function incarner_boite_infos($flux) {
19
20        if (($flux['args']['type'] === 'auteur')
21                        and (autoriser('incarner'))) {
22                include_spip('base/abstract_sql');
23                include_spip('inc/session');
24
25                $id_auteur = $flux['args']['id'];
26
27                if ($id_auteur != session_get('id_auteur')) {
28                        $login = sql_getfetsel(
29                                'login',
30                                'spip_auteurs',
31                                'id_auteur=' . intval($id_auteur)
32                        );
33                        $url_self = urlencode(self());
34                        $url_action = generer_url_action(
35                                'incarner',
36                                'login=' . $login . '&redirect=' . $url_self
37                        );
38
39                        $flux['data'] .= '<span class="icone horizontale">';
40                        $flux['data'] .= '<a href="' . $url_action . '">';
41                        $flux['data'] .= '<img src="' . find_in_path('images/logo_incarner_24.png') . '" width="24" height="24" /><b>';
42                        $flux['data'] .= _T('incarner:incarner_login', array('login' => $login));
43                        $flux['data'] .= '</b></a>';
44                        $flux['data'] .= '</span>';
45                }
46        }
47
48        return $flux;
49}
50
51/**
52 * Ajouter un lien dans côté public pour redevenir webmestre
53 *
54 * @pipeline formulaire_admin
55 * @param  array $html Données du pipeline
56 * @return array       Données du pipeline
57 */
58function incarner_affichage_final($html) {
59
60        if ((! isset($_COOKIE['spip_cle_incarner']))
61                        or (! $cle_actuelle = $_COOKIE['spip_cle_incarner'])) {
62                return $html;
63        }
64
65        include_spip('inc/config');
66        include_spip('inc/session');
67
68        if (! $cles = lire_config('incarner/cles')) {
69                $cles = array();
70        }
71
72        $id_auteur = array_search($cle_actuelle, $cles);
73
74        if ((! incarner_cle_valide($cle_actuelle))
75                        or (session_get('id_auteur') === $id_auteur)) {
76                return $html;
77        }
78
79        include_spip('base/abstract_sql');
80
81        $login = sql_getfetsel(
82                'login',
83                'spip_auteurs',
84                'id_auteur=' . intval($id_auteur)
85        );
86
87        $self = urlencode(self());
88        $url = generer_url_action(
89                'incarner',
90                'login=' . $login . '&redirect=' . $self
91        );
92
93        $url_logout = generer_url_action(
94                'incarner',
95                'logout=oui&redirect=' . $self
96        );
97
98        $lien = '<div class="menu-incarner">';
99        $lien .= '<a class="bouton-incarner" href="' . $url_logout . '">';
100        $lien .= _T('incarner:logout_definitif');
101        $lien .= '</a>';
102        $lien .= '<a class="bouton-incarner" href="' . $url . '">';
103        $lien .= _T('incarner:reset_incarner', array('login' => $login));
104        $lien .= '</a>';
105        $lien .= '</div>';
106
107
108        $html = preg_replace('#(</body>)#', $lien . '$1', $html);
109
110        return $html;
111}
112
113/**
114 * Ajoute une feuille de styles à l'espace public
115 *
116 * @pipeline insert_head
117 * @param  array $flux Données du pipeline
118 * @return array       Données du pipeline
119 */
120function incarner_insert_head($flux) {
121
122        $flux .= '<link rel="stylesheet" type="text/css" href="' . find_in_path('css/incarner.css'). '" />';
123
124        return $flux;
125}
126
127/**
128 * Donner un cookie d'incarnation aux webmestre dès le login
129 *
130 * @pipeline formulaire_traiter
131 * @param  array $flux Données du pipeline
132 * @return array       Données du pipeline
133 */
134function incarner_formulaire_traiter($flux) {
135
136        if (($flux['args']['form'] === 'login') and autoriser('webmestre')) {
137                incarner_renouveler_cle();
138        }
139
140        return $flux;
141}
Note: See TracBrowser for help on using the repository browser.