From dac1f4f30fa495a9129102f424237cc8daf6ad9e Mon Sep 17 00:00:00 2001 From: nicod_ <nicod@lerebooteux.fr> Date: Wed, 26 Apr 2023 20:40:20 +0200 Subject: [PATCH] =?UTF-8?q?Une=20fonction=20g=C3=A9n=C3=A9rique=20pour=20r?= =?UTF-8?q?etrouver=20le=20squelette=20d'un=20bloc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blocks_fonctions.php | 52 ++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/blocks_fonctions.php b/blocks_fonctions.php index ccd2760..87c3db6 100644 --- a/blocks_fonctions.php +++ b/blocks_fonctions.php @@ -119,22 +119,6 @@ function _block_charger_block($id_bloc) { 'b.id_bloc = ' . (int)$id_bloc ); - // chercher le squelette pour afficher le contenu du bloc - if ( - test_espace_prive() - && ($f = find_in_path($infos['identifiant'] . '.' . _EXTENSION_SQUELETTES, 'blocks_prive/')) - && lire_fichier($f, $contenu) - ) { - $squelette = 'blocks_prive/' . $infos['identifiant']; - } else if ( - ($f = find_in_path($infos['identifiant'] . '.' . _EXTENSION_SQUELETTES, 'blocks/')) - && lire_fichier($f, $contenu) - ) { - $squelette = 'blocks/' . $infos['identifiant']; - } else { - $squelette = 'blocks/dist'; - } - $contexte = [ 'id_bloc' => $id_bloc, ]; @@ -148,6 +132,8 @@ function _block_charger_block($id_bloc) { } } + $squelette = blocks_trouver_squelette($infos['identifiant']); + return recuperer_fond($squelette, $contexte); } @@ -174,3 +160,37 @@ function generer_TITRE_BLOC($id_bloc) { return $titre; } + +/** + * Chercher le squelette correspondant à un bloc par son identifiant + * + * @param string $identifiant Identifiant du bloc + * @param bool $force_public Forcer une recherche du squelette public + * @return string Chemin du squelette trouvé + */ +function blocks_trouver_squelette($identifiant, $force_public = false) { + static $cache; + $cle = $identifiant . ($force_public ? 'oui' : 'non'); + if (isset($cache[$cle])) { + return $cache[$cle]; + } + + if ( + !$force_public + && test_espace_prive() + && ($f = find_in_path($identifiant . '.' . _EXTENSION_SQUELETTES, 'blocks_prive/')) + && lire_fichier($f, $contenu) + ) { + $squelette = 'blocks_prive/' . $identifiant; + } else if ( + ($f = find_in_path($identifiant . '.' . _EXTENSION_SQUELETTES, 'blocks/')) + && lire_fichier($f, $contenu) + ) { + $squelette = 'blocks/' . $identifiant; + } else { + $squelette = 'blocks/dist'; + } + $cache[$cle] = $squelette; + + return $squelette; +} -- GitLab