[SPIP] v3.2.11 -> v3.2.12
[lhc/web/www.git] / www / plugins-dist / porte_plume / porte_plume_pipelines.php
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
10 if (!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 */
21 function porte_plume_autoriser() {
22 }
23
24 /**
25 * Autoriser l'action de previsu
26 *
27 * La fermer aux non identifiés si pas de porte plume dans le public
28 *
29 * @param string $faire Action demandée
30 * @param string $type Type d'objet sur lequel appliquer l'action
31 * @param int $id Identifiant de l'objet
32 * @param array $qui Description de l'auteur demandant l'autorisation
33 * @param array $opt Options de cette autorisation
34 * @return bool true s'il a le droit, false sinon
35 */
36 function autoriser_porteplume_previsualiser_dist($faire, $type, $id, $qui, $opt) {
37 return
38 (test_espace_prive() and autoriser('ecrire'))
39 or (!test_espace_prive() and autoriser('afficher_public', 'porteplume'));
40 }
41
42 /**
43 * Autoriser le porte plume dans l'espace public ?
44 *
45 * @param string $faire Action demandée
46 * @param string $type Type d'objet sur lequel appliquer l'action
47 * @param int $id Identifiant de l'objet
48 * @param array $qui Description de l'auteur demandant l'autorisation
49 * @param array $opt Options de cette autorisation
50 * @return bool true s'il a le droit, false sinon
51 */
52 function autoriser_porteplume_afficher_public_dist($faire, $type, $id, $qui, $opt) {
53 // compatibilite d'avant le formulaire de configuration
54 if (defined('PORTE_PLUME_PUBLIC')) {
55 return PORTE_PLUME_PUBLIC;
56 }
57
58 return ($GLOBALS['meta']['barre_outils_public'] !== 'non');
59
60 // n'autoriser qu'aux identifies :
61 # return $qui['id_auteur'] ? PORTE_PLUME_PUBLIC : false;
62 }
63
64 /**
65 * Autoriser le porte plume dans l'espace prive ?
66 *
67 * @param string $faire Action demandée
68 * @param string $type Type d'objet sur lequel appliquer l'action
69 * @param int $id Identifiant de l'objet
70 * @param array $qui Description de l'auteur demandant l'autorisation
71 * @param array $opt Options de cette autorisation
72 * @return bool true s'il a le droit, false sinon
73 */
74 function autoriser_porteplume_afficher_prive_dist($faire, $type, $id, $qui, $opt) {
75 // on peut desactiver le chargement complet dans le prive
76 if (defined('_PORTE_PLUME_PRIVE')) {
77 return _PORTE_PLUME_PRIVE;
78 }
79
80 return true;
81 }
82
83 /**
84 * Ajout des scripts du porte-plume dans le head des pages publiques
85 *
86 * Uniquement si l'on est autorisé à l'afficher le porte plume dans
87 * l'espace public !
88 *
89 * @pipeline insert_head
90 * @param string $flux Contenu du head
91 * @return string Contenu du head
92 */
93 function porte_plume_insert_head_public($flux) {
94 include_spip('inc/autoriser');
95 if (autoriser('afficher_public', 'porteplume')) {
96 $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang']);
97 }
98
99 return $flux;
100 }
101
102 /**
103 * Ajout des scripts du porte-plume dans le head des pages privées
104 *
105 * @pipeline header_prive
106 * @param string $flux Contenu du head
107 * @return string Contenu du head
108 */
109 function porte_plume_insert_head_prive($flux) {
110 include_spip('inc/autoriser');
111 if (autoriser('afficher_prive', 'porteplume')){
112 $js = timestamp(find_in_path('javascript/porte_plume_forcer_hauteur.js'));
113 $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang'], true)
114 . "<script type='text/javascript' src='$js'></script>\n";
115 }
116 return $flux;
117 }
118
119 /**
120 * Ajout des scripts du porte-plume au texte (un head) transmis
121 *
122 * @param string $flux Contenu du head
123 * @param string $lang Langue en cours d'utilisation
124 * @param bool $prive Est-ce pour l'espace privé ?
125 * @return string Contenu du head complété
126 */
127 function porte_plume_inserer_head($flux, $lang, $prive = false) {
128 include_spip('porte_plume_fonctions');
129
130 $markitup = timestamp(find_in_path('javascript/jquery.markitup_pour_spip.js'));
131 $js_previsu = timestamp(find_in_path('javascript/jquery.previsu_spip.js'));
132
133 $hash = md5(porte_plume_creer_json_markitup());
134 $inserer_auto_name_texte = defined('_PORTE_PLUME_INSERER_AUTO_NAME_TEXTE') ? _PORTE_PLUME_INSERER_AUTO_NAME_TEXTE : true;
135 $js_start = produire_fond_statique('javascript/porte_plume_start.js', array('lang' => $lang, 'hash' => $hash, 'inserer_auto_name_texte' => $inserer_auto_name_texte));
136
137 $flux .=
138 "<script type='text/javascript' src='$markitup'></script>\n"
139 . "<script type='text/javascript' src='$js_previsu'></script>\n"
140 . "<script type='text/javascript' src='$js_start'></script>\n";
141
142 return $flux;
143 }
144
145 /**
146 * Ajout des CSS du porte-plume au head privé
147 *
148 * @pipeline header_prive_css
149 * @param string $flux Contenu du head
150 * @return string Contenu du head complété
151 */
152 function porte_plume_insert_head_prive_css($flux) {
153 return porte_plume_insert_head_css($flux, true);
154 }
155
156 /**
157 * Ajout des CSS du porte-plume au head public
158 *
159 * Appelé aussi depuis le privé avec $prive à true.
160 *
161 * @pipeline insert_head_css
162 * @param string $flux Contenu du head
163 * @param bool $prive Est-ce pour l'espace privé ?
164 * @return string Contenu du head complété
165 */
166 function porte_plume_insert_head_css($flux = '', $prive = false) {
167 include_spip('inc/autoriser');
168 if (autoriser($prive ? 'afficher_prive' : 'afficher_public', 'porteplume')) {
169 if ($prive) {
170 $cssprive = timestamp(find_in_path('css/barre_outils_prive.css'));
171 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$cssprive' />\n";
172 }
173 $css = timestamp(direction_css(find_in_path('css/barre_outils.css'), lang_dir()));
174
175 include_spip('porte_plume_fonctions');
176 $hash = md5(barre_outils_css_icones());
177 $css_icones = produire_fond_statique('css/barre_outils_icones.css', array('hash' => $hash));
178
179 $flux
180 .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
181 . "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n";
182 }
183
184 return $flux;
185 }
186
187 /**
188 * Valeur par défaut des configurations
189 *
190 * @pipeline configurer_liste_metas
191 * @param array $metas
192 * Tableaux des metas et valeurs par défaut
193 * @return array
194 * Tableaux des metas et valeurs par défaut
195 */
196 function porte_plume_configurer_liste_metas($metas) {
197 $metas['barre_outils_public'] = 'oui';
198
199 return $metas;
200 }
201
202 /**
203 * Ajoute le formulaire de configuration du porte-plume sur la page
204 * des configurations avancées.
205 *
206 * @pipeline affiche_milieu
207 * @param array $flux Données du pipeline
208 * @return array Données du pipeline
209 */
210 function porte_plume_affiche_milieu($flux) {
211 if ($flux['args']['exec'] == 'configurer_avancees') {
212 $flux['data'] .= recuperer_fond(
213 'prive/squelettes/inclure/configurer',
214 array('configurer' => 'configurer_porte_plume')
215 );
216 }
217
218 return $flux;
219 }