function _filetree_list_files in File Tree 7.2
Same name and namespace in other branches
- 6.2 filetree.module \_filetree_list_files()
- 6 filetree.module \_filetree_list_files()
- 7 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 216
Code
function _filetree_list_files($dir, $params) {
$list = array();
if (is_dir($dir) && ($handle = opendir($dir))) {
$folders = $files = array();
// Parse .descript.ion file descriptions.
$descriptions = _filetree_parse_description($dir);
while (FALSE !== ($filename = readdir($handle))) {
// Exclude certain paths:
// - those which start with a period (".", "..", and hidden files),
// - additional paths from the "exclude" param
if ($filename[0] != '.' && !drupal_match_path($filename, $params['exclude'])) {
$filepath = "{$dir}/{$filename}";
$token_args = array(
'filename' => $filename,
'filepath' => $filepath,
'descriptions' => $descriptions,
'params' => $params,
);
// It's a folder.
if (is_dir($filepath)) {
$folders[$filename] = array(
'data' => isset($descriptions[$filename]) ? $descriptions[$filename] : token_replace($params['dirname'], $token_args),
'children' => _filetree_list_files($filepath, $params),
'title' => token_replace($params['dirtitle'], $token_args),
'class' => array(
'folder',
),
);
}
else {
$files[$filename] = array(
'data' => token_replace($params['fileformat'], $token_args),
'title' => token_replace($params['filetitle'], $token_args),
'class' => array(
_filetree_icon(pathinfo($filename, PATHINFO_EXTENSION)),
),
);
}
}
}
closedir($handle);
// Sort.
asort($folders);
asort($files);
$list += $folders;
$list += $files;
}
return $list;
}