e884abac1062473c44f4326947f9c8e8133432b0
[lhc/web/www.git] / www / plugins-dist / vertebres / vertebres_pipelines.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 /**
14 * Utilisations de pipelines
15 *
16 * @package SPIP\Vertebres\Pipelines
17 **/
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23 if (!defined('_DIR_VERTEBRES')) {
24 /**
25 * Chemin du répertoire stockant les squelettes calculés des vertèbres
26 *
27 * @var string
28 **/
29 define('_DIR_VERTEBRES', _DIR_CACHE . 'vertebres/');
30 }
31
32 /**
33 * Déterminer l'utilisation du vertebreur
34 *
35 * Lorsqu'on inclut le squelette `prive/vertebres:$table`,
36 * vérifier l'autorisation et créer le squelette spécifique
37 * à la table demandée si on la trouve
38 *
39 * @pipeline styliser
40 * @uses base_trouver_table_dist()
41 * @uses public_vertebrer_dist()
42 *
43 * @param array $flux Données du pipeline
44 * @return array Données du pipeline
45 */
46 function vertebres_styliser($flux) {
47
48 // si pas de squelette trouve,
49 // on verifie si on demande une vue de table
50 if (!$squelette = $flux['data']
51 and $fond = $flux['args']['fond']
52 and strncmp($fond, 'prive/vertebres:', 16) == 0
53 and $table = substr($fond, 16)
54 and include_spip('inc/autoriser')
55 and autoriser('webmestre')
56 ) {
57
58 $ext = $flux['args']['ext'];
59 $connect = $flux['args']['connect'];
60
61 // Si pas de squelette regarder si c'est une table
62 // et si l'on a la permission de l'afficher
63 $trouver_table = charger_fonction('trouver_table', 'base');
64 if ($desc = $trouver_table($table, $connect)) {
65 $fond = $table;
66 $base = _DIR_VERTEBRES . 'table_' . $fond . ".$ext";
67 if (!file_exists($base) or (defined('_VAR_MODE') and _VAR_MODE)) {
68 sous_repertoire(_DIR_VERTEBRES);
69 $vertebrer = charger_fonction('vertebrer', 'public');
70 ecrire_fichier($base, $vertebrer($desc));
71 }
72
73 // sauver les changements
74 $flux['data'] = _DIR_VERTEBRES . 'table_' . $fond;
75 }
76 }
77
78 return $flux;
79 }