You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.4 KiB

<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Utilisations de pipelines
*
* @package SPIP\Vertebres\Pipelines
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
if (!defined('_DIR_VERTEBRES')) {
/**
* Chemin du répertoire stockant les squelettes calculés des vertèbres
*
* @var string
**/
define('_DIR_VERTEBRES', _DIR_CACHE . 'vertebres/');
}
/**
* Déterminer l'utilisation du vertebreur
*
* Lorsqu'on inclut le squelette `prive/vertebres:$table`,
* vérifier l'autorisation et créer le squelette spécifique
* à la table demandée si on la trouve
*
* @pipeline styliser
* @uses base_trouver_table_dist()
* @uses public_vertebrer_dist()
*
* @param array $flux Données du pipeline
* @return array Données du pipeline
*/
function vertebres_styliser($flux) {
// si pas de squelette trouve,
// on verifie si on demande une vue de table
if (!$squelette = $flux['data']
and $fond = $flux['args']['fond']
and strncmp($fond, 'prive/vertebres:', 16) == 0
and $table = substr($fond, 16)
and include_spip('inc/autoriser')
and autoriser('webmestre')
) {
$ext = $flux['args']['ext'];
$connect = $flux['args']['connect'];
// Si pas de squelette regarder si c'est une table
// et si l'on a la permission de l'afficher
$trouver_table = charger_fonction('trouver_table', 'base');
if ($desc = $trouver_table($table, $connect)) {
$fond = $table;
$base = _DIR_VERTEBRES . 'table_' . $fond . ".$ext";
if (!file_exists($base) or (defined('_VAR_MODE') and _VAR_MODE)) {
sous_repertoire(_DIR_VERTEBRES);
$vertebrer = charger_fonction('vertebrer', 'public');
ecrire_fichier($base, $vertebrer($desc));
}
// sauver les changements
$flux['data'] = _DIR_VERTEBRES . 'table_' . $fond;
}
}
return $flux;
}