From 33146c6cd3cdb0e40e8fd09c5143efafb8bc4e5d Mon Sep 17 00:00:00 2001 From: cy_altern <cy_altern@gmail.com> Date: Sat, 10 Dec 2011 23:22:17 +0000 Subject: [PATCH] =?UTF-8?q?La=20fonction=20fast=5Ffind=5Fplugin=5Fdirs($re?= =?UTF-8?q?p=5Fplugins,$max=5Fprof=3D100)=20est=20trop=20gourmande=20lorsq?= =?UTF-8?q?u'elle=20est=20lancee=20sur=20un=20dossier=20pas=20=C3=A0=20la?= =?UTF-8?q?=20racine=20du=20SPIP.=20Dans=20ce=20cas=20elle=20demarre=20dan?= =?UTF-8?q?s=20le=20repertoire=20parent=20ce=20qui=20l'amene=20a=20scanner?= =?UTF-8?q?=20tous=20les=20dossiers=20du=20site=20(y=20compris=20le=20cach?= =?UTF-8?q?e...).=20Ajout=20d'un=20parametre=20$racine=3Dtrue=20pour=20pou?= =?UTF-8?q?voir=20l'utiliser=20avec=20les=20dossiers=20de=20=5FDIR=5FPLUGI?= =?UTF-8?q?NS=5FSUPPL=20(classiquement=20de=20la=20forme=20sites/ma-mutu.t?= =?UTF-8?q?ld/plugins)=20sans=20quelle=20retourne=20des=20dossiers=20de=20?= =?UTF-8?q?plugins=20en=20dehors=20de=20ceux=20definis/autorises.=20Accele?= =?UTF-8?q?re=20tres=20sensiblement=20la=20fonction=20dans=20une=20mutu=20?= =?UTF-8?q?avec=20dossier=20de=20plugins=20supplementaires.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/plugin.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/ecrire/inc/plugin.php b/ecrire/inc/plugin.php index 6c670acb0a..0936c89563 100644 --- a/ecrire/inc/plugin.php +++ b/ecrire/inc/plugin.php @@ -41,8 +41,9 @@ function liste_plugin_files($dir_plugins = null){ $dir_plugins_suppl = array_filter(explode(':',_DIR_PLUGINS_SUPPL)); foreach($dir_plugins_suppl as $suppl) { $suppl = _DIR_RACINE.$suppl; - foreach (fast_find_plugin_dirs($suppl) as $plugin) { - $plugin_files[$dir_plugins][] = $plugin; + foreach (fast_find_plugin_dirs($suppl, 100, false) as $plugin) { + if (!in_array($plugin, $plugin_files[$dir_plugins])) + $plugin_files[$dir_plugins][] = $plugin; } } } @@ -56,13 +57,14 @@ function liste_plugin_files($dir_plugins = null){ return $plugin_files[$dir_plugins]; } -function fast_find_plugin_dirs($dir,$max_prof=100) { +function fast_find_plugin_dirs($dir, $max_prof=100, $racine=true) { $fichiers = array(); - // revenir au repertoire racine si on a recu dossier/truc + // si $racine = true revenir au repertoire racine si on a recu dossier/truc // pour regarder dossier/truc/ ne pas oublier le / final - $dir = preg_replace(',/[^/]*$,', '', $dir); - if ($dir == '') $dir = '.'; - + if ($racine) { + $dir = preg_replace(',/[^/]*$,', '', $dir); + if ($dir == '') $dir = '.'; + } if (!is_dir($dir)) return $fichiers; if (is_plugin_dir($dir,'')) { -- GitLab