protected function doRecursiveGlob($sPathPatten, $nFlags = 0, array $aExcludeDirs = array(), array $aExcludeDirNames = array())
{
$_aFiles = glob($sPathPatten, $nFlags);
$_aFiles = is_array($_aFiles) ? $_aFiles : array();
$_aDirs = glob(dirname($sPathPatten) . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR | GLOB_NOSORT);
$_aDirs = is_array($_aDirs) ? $_aDirs : array();
foreach ($_aDirs as $_sDirPath) {
if (in_array($_sDirPath, $aExcludeDirs)) {
continue;
}
if (in_array(pathinfo($_sDirPath, PATHINFO_DIRNAME), $aExcludeDirNames)) {
continue;
}
$_aFiles = array_merge($_aFiles, $this->doRecursiveGlob($_sDirPath . DIRECTORY_SEPARATOR . basename($sPathPatten), $nFlags, $aExcludeDirs));
}
return $_aFiles;
}