[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / squelettes_par_rubrique / squelettes_par_rubrique_options.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined("_ECRIRE_INC_VERSION")) return;
14
15 if (!isset($GLOBALS['spip_pipeline']['styliser']))
16 $GLOBALS['spip_pipeline']['styliser'] = '';
17 $GLOBALS['spip_pipeline']['styliser'] .= '||squelettes_par_rubrique_styliser_par_rubrique|squelettes_par_rubrique_styliser_par_langue';
18
19 /**
20 * Options de recherche de squelette par le styliseur, appele par le pipeline 'styliser' :
21 * Squelette par rubrique squelette-XX.html ou squelette=XX.html
22 *
23 * @param <type> $flux
24 * @return <type>
25 */
26 function squelettes_par_rubrique_styliser_par_rubrique($flux) {
27
28 // uniquement si un squelette a ete trouve
29 if ($squelette = $flux['data']) {
30 $ext = $flux['args']['ext'];
31
32 // On selectionne, dans l'ordre :
33 // fond=10
34 if ($id_rubrique = $flux['args']['id_rubrique']) {
35 $f = "$squelette=$id_rubrique";
36 if (@file_exists("$f.$ext"))
37 $squelette = $f;
38 else {
39 $maxiter = 10000; // on ne remonte pas au dela en profondeur
40 // fond-10 fond-<rubriques parentes>
41 do {
42 $f = "$squelette-$id_rubrique";
43 if (@file_exists("$f.$ext")) {
44 $squelette = $f;
45 break;
46 }
47 } while (
48 $maxiter--
49 AND $id_rubrique = quete_parent($id_rubrique)
50 // se proteger des references circulaires
51 AND $id_rubrique != $flux['args']['id_rubrique']
52 );
53 }
54 // sauver le squelette
55 $flux['data'] = $squelette;
56 }
57 }
58
59 return $flux;
60 }
61
62 /**
63 * Options de recherche de squelette par le styliseur, appele par le pipeline 'styliser' :
64 * Squelette par langue squelette.en.html
65 *
66 * @param array $flux
67 * @return array
68 */
69 function squelettes_par_rubrique_styliser_par_langue($flux) {
70
71 // uniquement si un squelette a ete trouve
72 if ($squelette = $flux['data']) {
73 $ext = $flux['args']['ext'];
74
75 // Affiner par lang
76 if ($lang = $flux['args']['lang']) {
77 $l = lang_select($lang);
78 $f = "$squelette.".$GLOBALS['spip_lang'];
79 if ($l) lang_select();
80 if (@file_exists("$f.$ext")) {
81 // sauver le squelette
82 $flux['data'] = $f;
83 }
84 }
85 }
86
87 return $flux;
88 }