public static function traverseDir($file, $level = -1) { if (!MFile::is($file) || $level == 0) { return null; } $info = MFile::info($file); if ($info->isFile) { return null; } $array = array(); $dir = @opendir($file); while ($entry = @readdir($dir)) { if ($entry == '.' || $entry == '..') { continue; } if (MFile::isDir($file . DS . $entry)) { $array[] = MFile::traverseDir($file . DS . $entry, $level - 1); } } @closedir($dir); if (sizeof($array) > 0) { $info->sub = $array; return $info; } else { if ($info) { return $info; } else { return null; } } }