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

Last change on this file was 115612, checked in by marcimat@…, 4 months ago

Un tout petit style pour éviter simplement que de longs pseudos sans espace dépassent du bloc d’informations dans le privé.

File size: 3.6 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                        if ($login) {
34                                $url_self = urlencode(self());
35                                $url_action = generer_url_action(
36                                        'incarner',
37                                        'login=' . $login . '&redirect=' . $url_self
38                                );
39
40                                $flux['data'] .= '<span class="icone horizontale lien_incarner">';
41                                $flux['data'] .= '<a href="' . $url_action . '">';
42                                $flux['data'] .= '<img src="' . find_in_path('images/logo_incarner_24.png') . '" width="24" height="24" /><b>';
43                                $flux['data'] .= _T('incarner:incarner_login', array('login' => $login));
44                                $flux['data'] .= '</b></a>';
45                                $flux['data'] .= '</span>';
46                        }
47                }
48        }
49
50        return $flux;
51}
52
53/**
54 * Ajouter un lien dans côté public pour redevenir webmestre
55 *
56 * @pipeline formulaire_admin
57 * @param  array $html Données du pipeline
58 * @return array       Données du pipeline
59 */
60function incarner_affichage_final($html) {
61
62        if ((! isset($_COOKIE['spip_cle_incarner']))
63                        or (! $cle_actuelle = $_COOKIE['spip_cle_incarner'])) {
64                return $html;
65        }
66
67        include_spip('inc/config');
68        include_spip('inc/session');
69
70        if (! $cles = lire_config('incarner/cles')) {
71                $cles = array();
72        }
73
74        $id_auteur = array_search($cle_actuelle, $cles);
75
76        include_spip('incarner_fonctions');
77        if ((! incarner_cle_valide($cle_actuelle))
78                        or (intval(session_get('id_auteur')) === $id_auteur)) {
79                return $html;
80        }
81
82        include_spip('base/abstract_sql');
83
84        $login = sql_getfetsel(
85                'login',
86                'spip_auteurs',
87                'id_auteur=' . intval($id_auteur)
88        );
89
90        $self = urlencode(self());
91        $url = generer_url_action(
92                'incarner',
93                'login=' . $login . '&redirect=' . $self
94        );
95
96        $url_logout = generer_url_action(
97                'incarner',
98                'logout=oui&redirect=' . $self
99        );
100
101        $lien = '<div class="menu-incarner' . (test_espace_prive() ? ' prive' : '') . '">';
102        $lien .= '<a class="bouton-incarner" href="' . $url_logout . '">';
103        $lien .= _T('incarner:logout_definitif');
104        $lien .= '</a>';
105        $lien .= '<a class="bouton-incarner" href="' . $url . '">';
106        $lien .= _T('incarner:reset_incarner', array('login' => $login));
107        $lien .= '</a>';
108        $lien .= '</div>';
109
110
111        $html = preg_replace('#(</body>)#', $lien . '$1', $html);
112
113        return $html;
114}
115
116
117function incarner_affichage_final_prive($html) {
118
119        return incarner_affichage_final($html);
120}
121
122/**
123 * Ajoute une feuille de styles à l'espace public
124 *
125 * @pipeline insert_head
126 * @param  array $flux Données du pipeline
127 * @return array       Données du pipeline
128 */
129function incarner_insert_head($flux) {
130
131        $flux .= '<link rel="stylesheet" type="text/css" href="' . find_in_path('css/incarner.css'). '" />';
132
133        return $flux;
134}
135
136function incarner_header_prive($flux) {
137
138        return incarner_insert_head($flux);
139}
140
141/**
142 * Donner un cookie d'incarnation aux webmestres dès le login
143 *
144 * @pipeline formulaire_traiter
145 * @param  array $flux Données du pipeline
146 * @return array       Données du pipeline
147 */
148function incarner_formulaire_traiter($flux) {
149
150        if (($flux['args']['form'] === 'login') and autoriser('webmestre')) {
151                incarner_renouveler_cle();
152        }
153
154        return $flux;
155}
Note: See TracBrowser for help on using the repository browser.