From 7791a8c7e72636f00ab0f29d121d186ce2ac164a Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Thu, 4 Feb 2021 15:12:52 +0100 Subject: [PATCH] Une fonction shorthand include_fichiers_fonctions() pour inclure le mes_fonctions.php + tous les fichiers xxx_fonctions.php des plugins quand on a besoin d'un filtre dans le php --- ecrire/base/dump.php | 12 +----------- ecrire/inc/filtres.php | 2 ++ ecrire/inc/utils.php | 28 ++++++++++++++++++++++++++++ ecrire/public/aiguiller.php | 2 +- ecrire/public/parametrer.php | 17 +---------------- 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/ecrire/base/dump.php b/ecrire/base/dump.php index b0dbb00c91..89457c0d64 100644 --- a/ecrire/base/dump.php +++ b/ecrire/base/dump.php @@ -26,17 +26,7 @@ include_spip('base/serial'); include_spip('base/auxiliaires'); include_spip('public/interfaces'); // pour table_jointures -// NB: Ce fichier peut ajouter des tables (old-style) -// donc il faut l'inclure "en globals" -if ($f = find_in_path('mes_fonctions.php')) { - global $dossier_squelettes; - @include_once(_ROOT_CWD . $f); -} - -if (@is_readable(_CACHE_PLUGINS_FCT)) { - // chargement optimise precompile - include_once(_CACHE_PLUGINS_FCT); -} +include_fichiers_fonctions(); /** * Retourne un nom de meta pour une rubrique et l'auteur connecté. diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 1461f9c2e8..a7f568a93f 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -92,6 +92,8 @@ function chercher_filtre($fonc, $default = null) { return $f; } + + include_fichiers_fonctions(); foreach (array('filtre_' . $fonc, 'filtre_' . $fonc . '_dist', $fonc) as $f) { trouver_filtre_matrice($f); // charge des fichiers spécifiques éventuels // fonction ou name\space\fonction diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index f538bd1d37..711321a74e 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -171,6 +171,34 @@ function require_spip($f) { return find_in_path($f . '.php', '', 'required'); } + +/** + * Raccourci pour inclure mes_fonctions.php et tous les fichiers _fonctions.php des plugin + * quand on a besoin dans le PHP de filtres/fonctions qui y sont definis + */ +function include_fichiers_fonctions() { + static $done = false; + if (!$done) { + include_spip('inc/lang'); + + // NB: mes_fonctions peut initialiser $dossier_squelettes (old-style) + // donc il faut l'inclure "en globals" + if ($f = find_in_path('mes_fonctions.php')) { + global $dossier_squelettes; + include_once(_ROOT_CWD . $f); + } + + if (@is_readable(_CACHE_PLUGINS_FCT)) { + // chargement optimise precompile + include_once(_CACHE_PLUGINS_FCT); + } + if (test_espace_prive()) { + include_spip('inc/filtres_ecrire'); + } + $done = true; + } +} + /** * Exécute une fonction (appellée par un pipeline) avec la donnée transmise. * diff --git a/ecrire/public/aiguiller.php b/ecrire/public/aiguiller.php index 7e65134dcb..d42ca099c2 100644 --- a/ecrire/public/aiguiller.php +++ b/ecrire/public/aiguiller.php @@ -198,7 +198,7 @@ function traiter_formulaires_dynamiques($get = false) { // inclure mes_fonctions et autres filtres avant verifier/traiter - include_spip('public/parametrer'); + include_fichiers_fonctions(); // ainsi que l'API SQL bien utile dans verifier/traiter include_spip('base/abstract_sql'); diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php index d25327d68f..76db7c5689 100644 --- a/ecrire/public/parametrer.php +++ b/ecrire/public/parametrer.php @@ -14,22 +14,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { return; } -include_spip('inc/lang'); - -// NB: mes_fonctions peut initialiser $dossier_squelettes (old-style) -// donc il faut l'inclure "en globals" -if ($f = find_in_path('mes_fonctions.php')) { - global $dossier_squelettes; - include_once(_ROOT_CWD . $f); -} - -if (@is_readable(_CACHE_PLUGINS_FCT)) { - // chargement optimise precompile - include_once(_CACHE_PLUGINS_FCT); -} -if (test_espace_prive()) { - include_spip('inc/filtres_ecrire'); -} +include_fichiers_fonctions(); # Determine le squelette associe a une requete # et l'applique sur le contexte, le nom du cache et le serveur -- GitLab