/**************************************************
*
* GetDirsList
* Laurent Lacroix, 03/02/2001 20:00
*
* Récupère dans un tableau, la liste des sous répertoires d'un
* répertoire, jusqu'à une profondeur spécifiée dans MaxDeep et
* dont les noms respectent l'expression régulière DirRegEx
*
* @param BasDir Nom complêt du répertoire à parcourir
* @param MaxDeep Profondeur maximale de répertoire à scanner
* @param Arr Le tableau dans lequel les noms des répertoires sont stockés
* @param DirRegEx Expression régulière que les répertoires doivent vérifier
* @return TRUE ou FALSE suivant le résultat d'exécution
*
* @see DelCarIf
*
**************************************************/
Function GetDirsList( $BasDir, $MaxDeep, &$Arr, $DirRegEx = "" )
{
// Contrôler répertoire source
$BasDir = DelCarIf( $BasDir, "/" );
if( ! is_dir( $BasDir ) ) return "";
//
// Premier passage (pour trier à la fin du traitement)
$bFirstPass = FALSE;
//
// Création du tableau de résultats
if( ! is_array( $Arr ) ) {
$Arr = array();
$bFirstPass = TRUE;
}
//
// Scanner répertoire source
$BasDir .= "/";
if ( ! ( $d = dir( $BasDir ) ) ) return "";
while( $f = $d->read() ) {
if ( $f == "" || $f == "." || $f == ".." ) continue;
if ( ! is_dir( $BasDir . $f ) ) continue;
if ( $DirRegEx != "" && ! ereg( $DirRegEx, $f ) ) continue;
$Arr[] = $BasDir . $f . "/";
//
// Appel récursif
if ( $MaxDeep != 0 ) {
GetDirsList( $BasDir . $f, $MaxDeep - 1, $Arr, $DirRegEx );
}
}
$d->Close();
if( $bFirstPass ) ASort( $Arr );
return TRUE;
}
|