source: spip-zone/_core_/plugins/porte_plume/porte_plume_pipelines.php @ 93621

Last change on this file since 93621 was 93621, checked in by cedric@…, 5 years ago

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

File size: 5.7 KB
Line 
1<?php
2/**
3 * Déclarations d'autorisations et utilisations de pipelines
4 *
5 * @plugin Porte Plume pour SPIP
6 * @license GPL
7 * @package SPIP\PortePlume\Pipelines
8 **/
9
10if (!defined("_ECRIRE_INC_VERSION")) {
11        return;
12}
13
14#define('PORTE_PLUME_PUBLIC', true);
15
16/**
17 * Fonction du pipeline autoriser. N'a rien à faire
18 *
19 * @pipeline autoriser
20 */
21function porte_plume_autoriser() { }
22
23/**
24 * Autoriser l'action de previsu
25 *
26 * La fermer aux non identifiés si pas de porte plume dans le public
27 *
28 * @param  string $faire Action demandée
29 * @param  string $type Type d'objet sur lequel appliquer l'action
30 * @param  int $id Identifiant de l'objet
31 * @param  array $qui Description de l'auteur demandant l'autorisation
32 * @param  array $opt Options de cette autorisation
33 * @return bool          true s'il a le droit, false sinon
34 */
35function autoriser_porteplume_previsualiser_dist($faire, $type, $id, $qui, $opt) {
36        return
37                (test_espace_prive() AND autoriser('ecrire'))
38                OR (!test_espace_prive() AND autoriser('afficher_public', 'porteplume'));
39}
40
41/**
42 * Autoriser le porte plume dans l'espace public ?
43 *
44 * @param  string $faire Action demandée
45 * @param  string $type Type d'objet sur lequel appliquer l'action
46 * @param  int $id Identifiant de l'objet
47 * @param  array $qui Description de l'auteur demandant l'autorisation
48 * @param  array $opt Options de cette autorisation
49 * @return bool          true s'il a le droit, false sinon
50 */
51function autoriser_porteplume_afficher_public_dist($faire, $type, $id, $qui, $opt) {
52        // compatibilite d'avant le formulaire de configuration
53        if (defined('PORTE_PLUME_PUBLIC')) {
54                return PORTE_PLUME_PUBLIC;
55        }
56
57        return ($GLOBALS['meta']['barre_outils_public'] !== 'non');
58
59        // n'autoriser qu'aux identifies :
60        # return $qui['id_auteur'] ? PORTE_PLUME_PUBLIC : false;
61}
62
63/**
64 * Ajout des scripts du porte-plume dans le head des pages publiques
65 *
66 * Uniquement si l'on est autorisé à l'afficher le porte plume dans
67 * l'espace public !
68 *
69 * @pipeline insert_head
70 * @param  string $flux Contenu du head
71 * @return string Contenu du head
72 */
73function porte_plume_insert_head_public($flux) {
74        include_spip('inc/autoriser');
75        if (autoriser('afficher_public', 'porteplume')) {
76                $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang']);
77        }
78
79        return $flux;
80}
81
82/**
83 * Ajout des scripts du porte-plume dans le head des pages privées
84 *
85 * @pipeline header_prive
86 * @param  string $flux Contenu du head
87 * @return string Contenu du head
88 */
89function porte_plume_insert_head_prive($flux) {
90        $js = find_in_path('javascript/porte_plume_forcer_hauteur.js');
91        $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang'], $prive = true)
92                . "<script type='text/javascript' src='$js'></script>\n";
93
94        return $flux;
95}
96
97/**
98 * Ajout des scripts du porte-plume au texte (un head) transmis
99 *
100 * @param  string $flux Contenu du head
101 * @param  string $lang Langue en cours d'utilisation
102 * @param  bool $prive Est-ce pour l'espace privé ?
103 * @return string Contenu du head complété
104 */
105function porte_plume_inserer_head($flux, $lang, $prive = false) {
106        $markitup = find_in_path('javascript/jquery.markitup_pour_spip.js');
107        $js_previsu = find_in_path('javascript/jquery.previsu_spip.js');
108        $js_start = parametre_url(generer_url_public('porte_plume_start.js'), 'lang', $lang);
109        if (defined('_VAR_MODE') AND _VAR_MODE == "recalcul") {
110                $js_start = parametre_url($js_start, 'var_mode', 'recalcul');
111        }
112
113        $flux .=
114                "<script type='text/javascript' src='$markitup'></script>\n"
115                . "<script type='text/javascript' src='$js_previsu'></script>\n"
116                . "<script type='text/javascript' src='$js_start'></script>\n";
117
118        return $flux;
119}
120
121/**
122 * Ajout des CSS du porte-plume au head privé
123 *
124 * @pipeline header_prive_css
125 * @param string $flux Contenu du head
126 * @return string Contenu du head complété
127 */
128function porte_plume_insert_head_prive_css($flux) {
129        return porte_plume_insert_head_css($flux, true);
130}
131
132/**
133 * Ajout des CSS du porte-plume au head public
134 *
135 * Appelé aussi depuis le privé avec $prive à true.
136 *
137 * @pipeline insert_head_css
138 * @param string $flux Contenu du head
139 * @param  bool $prive Est-ce pour l'espace privé ?
140 * @return string Contenu du head complété
141 */
142function porte_plume_insert_head_css($flux = '', $prive = false) {
143        include_spip('inc/autoriser');
144        // toujours autoriser pour le prive.
145        if ($prive or autoriser('afficher_public', 'porteplume')) {
146                if ($prive) {
147                        $cssprive = find_in_path('css/barre_outils_prive.css');
148                        $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$cssprive' />\n";
149                }
150                $css = direction_css(find_in_path('css/barre_outils.css'), lang_dir());
151                $css_icones = generer_url_public('barre_outils_icones.css');
152                if (defined('_VAR_MODE') AND _VAR_MODE == "recalcul") {
153                        $css_icones = parametre_url($css_icones, 'var_mode', 'recalcul');
154                }
155                $flux
156                        .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
157                        . "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n";
158        }
159
160        return $flux;
161}
162
163/**
164 * Valeur par défaut des configurations
165 *
166 * @pipeline configurer_liste_metas
167 * @param array $metas
168 *     Tableaux des metas et valeurs par défaut
169 * @return array
170 *     Tableaux des metas et valeurs par défaut
171 */
172function porte_plume_configurer_liste_metas($metas) {
173        $metas['barre_outils_public'] = 'oui';
174
175        return $metas;
176}
177
178/**
179 * Ajoute le formulaire de configuration du porte-plume sur la page
180 * des configurations avancées.
181 *
182 * @pipeline affiche_milieu
183 * @param array $flux Données du pipeline
184 * @return array      Données du pipeline
185 */
186function porte_plume_affiche_milieu($flux) {
187        if ($flux['args']['exec'] == 'configurer_avancees') {
188                $flux['data'] .= recuperer_fond('prive/squelettes/inclure/configurer',
189                        array('configurer' => 'configurer_porte_plume'));
190        }
191
192        return $flux;
193}
Note: See TracBrowser for help on using the repository browser.