source: spip-zone/_core_/plugins/squelettes_par_rubrique/squelettes_par_rubrique_options.php

Last change on this file was 113294, checked in by spip.franck@…, 11 months ago

Il parait que le futur c'est maintenant :-D

File size: 3.0 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
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/**
14 * Déclarations de pipelines
15 *
16 * @package SPIP\SquelettesParRubrique\Pipelines
17 **/
18if (!defined('_ECRIRE_INC_VERSION')) {
19        return;
20}
21
22if (!isset($GLOBALS['spip_pipeline']['styliser'])) {
23        $GLOBALS['spip_pipeline']['styliser'] = '';
24}
25
26// Ajoute à la fin du pipeline styliser la recherche de squelettes par rubriques et par langue
27$GLOBALS['spip_pipeline']['styliser'] .= '||squelettes_par_rubrique_styliser_par_rubrique|squelettes_par_rubrique_styliser_par_langue';
28
29/**
30 * Cherche un squelette par rubrique squelette-XX.html ou squelette=XX.html
31 *
32 * Options de recherche de squelette par le styliseur, appelé par le pipeline 'styliser'
33 *
34 * @pipeline styliser
35 *
36 * @param array $flux Données du pipeline
37 * @return array       Données du pipeline
38 */
39function squelettes_par_rubrique_styliser_par_rubrique($flux) {
40
41        // uniquement si un squelette a ete trouve
42        if ($squelette = $flux['data']) {
43                $ext = $flux['args']['ext'];
44
45                // On selectionne, dans l'ordre :
46                // fond=10
47                if ($id_rubrique = $flux['args']['id_rubrique']) {
48                        $f = "$squelette=$id_rubrique";
49                        if (@file_exists("$f.$ext")) {
50                                $squelette = $f;
51                        } else {
52                                $maxiter = 10000; // on ne remonte pas au dela en profondeur
53                                // fond-10 fond-<rubriques parentes>
54                                do {
55                                        $f = "$squelette-$id_rubrique";
56                                        if (@file_exists("$f.$ext")) {
57                                                $squelette = $f;
58                                                break;
59                                        }
60                                } while (
61                                        $maxiter--
62                                        and $id_rubrique = quete_parent($id_rubrique)
63                                        // se proteger des references circulaires
64                                        and $id_rubrique != $flux['args']['id_rubrique']
65                                );
66                        }
67                        // sauver le squelette
68                        $flux['data'] = $squelette;
69                }
70        }
71
72        return $flux;
73}
74
75
76/**
77 * Cherche l'existence un squelette par langue squelette.en.html
78 *
79 * Options de recherche de squelette par le styliseur, appelé par le pipeline 'styliser'
80 *
81 * @pipeline styliser
82 *
83 * @param array $flux Données du pipeline
84 * @return array       Données du pipeline
85 */
86function squelettes_par_rubrique_styliser_par_langue($flux) {
87
88        // uniquement si un squelette a ete trouve
89        if ($squelette = $flux['data']) {
90                $ext = $flux['args']['ext'];
91
92                // Affiner par lang
93                if ($lang = $flux['args']['lang']) {
94                        $l = lang_select($lang);
95                        $f = "$squelette." . $GLOBALS['spip_lang'];
96                        if ($l) {
97                                lang_select();
98                        }
99                        if (@file_exists("$f.$ext")) {
100                                // sauver le squelette
101                                $flux['data'] = $f;
102                        }
103                }
104        }
105
106        return $flux;
107}
Note: See TracBrowser for help on using the repository browser.