diff --git a/blocks_fonctions.php b/blocks_fonctions.php index ccd276004b4a8c18e4e21119d3bef743b22eb91b..87c3db6014ea34ec9393031d7c4a3f7bb306966f 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; +}