private function directory_map($source_dir, $directory_depth = 0, $hidden = false, $full_path = false)
{
if ($fp = @opendir($source_dir)) {
$filedata = array();
$new_depth = $directory_depth - 1;
$source_dir = rtrim($source_dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
while (false !== ($file = readdir($fp))) {
// Remove '.', '..', and hidden files [optional]
if (!trim($file, '.') or $hidden == false && $file[0] == '.') {
continue;
}
if (($directory_depth < 1 or $new_depth > 0) && @is_dir($source_dir . $file)) {
$filedata[$file] = $this->directory_map($source_dir . $file . DIRECTORY_SEPARATOR, $new_depth, $hidden, $full_path);
} else {
if ($full_path == false) {
$filedata[] = $file;
} else {
$filedata[] = $source_dir . $file;
}
}
}
closedir($fp);
return $filedata;
}
return false;
}