Skip to content
Extraits de code Groupes Projets
Valider 9d3360f2 rédigé par Eric Lupinacci's avatar Eric Lupinacci Validation de marcimat
Parcourir les fichiers

feat: ajouter une option à la fonction find_all_in_path() pour renvoyer tous...

feat: ajouter une option à la fonction find_all_in_path() pour renvoyer tous les fichiers répondant à un pattern

Refs: #5454
parent 371dbd0a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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;
}
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter