function _filetree_list_files in File Tree 7
Same name and namespace in other branches
- 6.2 filetree.module \_filetree_list_files()
- 6 filetree.module \_filetree_list_files()
- 7.2 filetree.module \_filetree_list_files()
Recursively lists folders and files in this directory.
Similar to file_scan_directory(), except that we need the hierarchy. Returns a sorted list which is compatible with theme('item_list') or theme('filetree'), folders first, then files.
1 call to _filetree_list_files()
- _filetree_process in ./
filetree.module - Implements hook_filter_FILTER_process().
File
- ./
filetree.module, line 200
Code
function _filetree_list_files($dir, $params) {
$list = array();
if (is_dir($dir) && ($handle = opendir($dir))) {
$folders = $files = array();
$descriptions = _filetree_parse_description($dir);
while (FALSE !== ($file = readdir($handle))) {
// Exclude certain paths:
// - those which start with a period (".", "..", and hidden files),
// - additional paths from the "exclude" param
if ($file[0] != '.' and !drupal_match_path($file, $params['exclude'])) {
$filename = "{$dir}/{$file}";
if (is_dir($filename)) {
$folders[$file] = array(
'data' => isset($descriptions[$file]) ? $descriptions[$file] : token_replace($params['dirname'], array(
'file' => $file,
)),
'children' => _filetree_list_files($filename, $params),
'title' => token_replace($params['dirtitle'], array(
'file' => $file,
)),
'class' => array(
'folder',
),
);
}
else {
$name = isset($descriptions[$file]) ? $descriptions[$file] : token_replace($params['filename'], array(
'file' => $file,
));
$url = $params['absolute'] ? file_create_url($filename) : substr(file_create_url($filename), strlen($GLOBALS['base_url'] . '/'));
$files[$file] = array(
'data' => l($name, $url),
'title' => token_replace($params['filetitle'], array(
'file' => $file,
)),
'class' => array(
_filetree_icon(pathinfo($file, PATHINFO_EXTENSION)),
),
);
}
}
}
closedir($handle);
asort($folders);
asort($files);
$list += $folders;
$list += $files;
}
return $list;
}