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