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

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

Afficher les boutons de logout et de retour à l'auteur initial côté privé

demande de Kent1 : https://contrib.spip.net/Incarner#forum493670

File size: 3.5 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        include_spip('incarner_fonctions');
75        if ((! incarner_cle_valide($cle_actuelle))
76                        or (intval(session_get('id_auteur')) === $id_auteur)) {
77                return $html;
78        }
79
80        include_spip('base/abstract_sql');
81
82        $login = sql_getfetsel(
83                'login',
84                'spip_auteurs',
85                'id_auteur=' . intval($id_auteur)
86        );
87
88        $self = urlencode(self());
89        $url = generer_url_action(
90                'incarner',
91                'login=' . $login . '&redirect=' . $self
92        );
93
94        $url_logout = generer_url_action(
95                'incarner',
96                'logout=oui&redirect=' . $self
97        );
98
99        $lien = '<div class="menu-incarner' . (test_espace_prive() ? " prive" : "") . '">';
100        $lien .= '<a class="bouton-incarner" href="' . $url_logout . '">';
101        $lien .= _T('incarner:logout_definitif');
102        $lien .= '</a>';
103        $lien .= '<a class="bouton-incarner" href="' . $url . '">';
104        $lien .= _T('incarner:reset_incarner', array('login' => $login));
105        $lien .= '</a>';
106        $lien .= '</div>';
107
108
109        $html = preg_replace('#(</body>)#', $lien . '$1', $html);
110
111        return $html;
112}
113
114
115function incarner_affichage_final_prive($html) {
116
117        return incarner_affichage_final($html);
118}
119
120/**
121 * Ajoute une feuille de styles à l'espace public
122 *
123 * @pipeline insert_head
124 * @param  array $flux Données du pipeline
125 * @return array       Données du pipeline
126 */
127function incarner_insert_head($flux) {
128
129        $flux .= '<link rel="stylesheet" type="text/css" href="' . find_in_path('css/incarner.css'). '" />';
130
131        return $flux;
132}
133
134function incarner_header_prive($flux) {
135
136        return incarner_insert_head($flux);
137}
138
139/**
140 * Donner un cookie d'incarnation aux webmestre dès le login
141 *
142 * @pipeline formulaire_traiter
143 * @param  array $flux Données du pipeline
144 * @return array       Données du pipeline
145 */
146function incarner_formulaire_traiter($flux) {
147
148        if (($flux['args']['form'] === 'login') and autoriser('webmestre')) {
149                incarner_renouveler_cle();
150        }
151
152        return $flux;
153}
Note: See TracBrowser for help on using the repository browser.