diff --git a/ecrire/bootstrap/inc/path.php b/ecrire/bootstrap/inc/path.php index eefaa3f9770606a46d10bec681d5320e38e3dbae..43f830c081628f6605d526c65cb89032f4afb807 100644 --- a/ecrire/bootstrap/inc/path.php +++ b/ecrire/bootstrap/inc/path.php @@ -308,7 +308,7 @@ function save_path_cache() { * Trouve tous les fichiers du path correspondants à un pattern * * Pour un nom de fichier donné, ne retourne que le premier qui sera trouvé - * par un `find_in_path()` + * par un `find_in_path()`, sauf si l'option `all_files` est activée. * * @api * @uses creer_chemin() @@ -316,10 +316,11 @@ function save_path_cache() { * * @param string $dir * @param string $pattern - * @param bool $recurs + * @param bool $recurs + * @param bool $all_files * @return array */ -function find_all_in_path($dir, $pattern, $recurs = false) { +function find_all_in_path($dir, $pattern, $recurs = false, bool $all_files = false) { $liste_fichiers = []; $maxfiles = 10000; @@ -336,10 +337,13 @@ function find_all_in_path($dir, $pattern, $recurs = false) { $liste = preg_files($f, $pattern, $maxfiles - count($liste_fichiers), $recurs === true ? [] : $recurs); foreach ($liste as $chemin) { $nom = basename($chemin); - // ne prendre que les fichiers pas deja trouves - // car find_in_path prend le premier qu'il trouve, - // les autres sont donc masques - if (!isset($liste_fichiers[$nom])) { + if ($all_files) { + // On accumule tous les fichiers de même nom + $liste_fichiers[$nom][] = $chemin; + } elseif (!isset($liste_fichiers[$nom])) { + // ne prendre que les fichiers pas deja trouves + // car find_in_path prend le premier qu'il trouve, + // les autres sont donc masques $liste_fichiers[$nom] = $chemin; } }