diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php index 2c3f05e4902b80ee0c48a59d0817f179d94882b8..992b58d7a85c036e6adffd519ed8b771e6e0de3e 100644 --- a/ecrire/inc/flock.php +++ b/ecrire/inc/flock.php @@ -205,6 +205,7 @@ function creer_repertoire($base, $subdir) { // Attention, afin de conserver la compatibilite avec les repertoires '.plat' // si $dir = 'rep/sous_rep_' au lieu de 'rep/sous_rep/' on scanne 'rep/' et on // applique un pattern '^rep/sous_rep_' +// si $recurs vaut false, la fonction ne descend pas dans les sus repertoires // // http://doc.spip.org/@preg_files function preg_files($dir, $pattern=-1 /* AUTO */, $maxfiles = 10000, $recurs=array()) { @@ -230,7 +231,7 @@ function preg_files($dir, $pattern=-1 /* AUTO */, $maxfiles = 10000, $recurs=arr $nbfiles++; } } - else if (is_dir($f)){ + else if (is_dir($f) AND is_array($recurs)){ $rp = @realpath($f); if (!is_string($rp) OR !strlen($rp)) $rp=$f; # realpath n'est peut etre pas autorise if (!isset($recurs[$rp])) { diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index ad0940d08e3415deabd095c46a0d90c7aa69245f..64458f1d5b4238b10669133f99d9dea8ef82948a 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -671,6 +671,28 @@ function find_in_path ($filename) { return false; } + +function find_all_in_path($dir,$pattern){ + $liste_fichiers=array(); + $maxfiles = 10000; + + // Parcourir le chemin + foreach (creer_chemin() as $d) + if (@is_dir($f = $d.$dir)){ + $liste = preg_files($d.$dir,$pattern,$maxfiles-count($liste_fichiers),false); + 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])) + $liste_fichiers[$nom] = $chemin; + } + } + + return $liste_fichiers; +} + // predicat sur les scripts de ecrire qui n'authentifient pas par cookie // http://doc.spip.org/@autoriser_sans_cookie