function _uc_file_get_dir_file_ids in Ubercart 6.2
Same name and namespace in other branches
- 8.4 uc_file/uc_file.module \_uc_file_get_dir_file_ids()
- 7.3 uc_file/uc_file.module \_uc_file_get_dir_file_ids()
Returns a list of file ids that are in the directory
Parameters
$fid: The file id associated with the directory.
$recursive: Whether or not to list recursive directories and their files.
Return value
If there are files in the directory returns an array of file ids, else returns FALSE.
4 calls to _uc_file_get_dir_file_ids()
- uc_file_admin_files_form_action in uc_file/
uc_file.admin.inc - Performs file action (upload, delete, hooked in actions).
- uc_file_remove_by_id in uc_file/
uc_file.module - Deletes files (or directories).
- uc_file_user_renew in uc_file/
uc_file.module - Adds a file (or files) to a user's list of downloadable files, accumulating limits.
- _uc_file_build_js_file_display in uc_file/
uc_file.admin.inc - Shows all possible files in selectable list.
File
- uc_file/
uc_file.module, line 1427
Code
function _uc_file_get_dir_file_ids($fids, $recursive = FALSE) {
$result = array();
// Handle an array or just a single.
if (!is_array($fids)) {
$fids = array(
$fids,
);
}
foreach ($fids as $fid) {
// Get everything inside and below the given directory, or if it's file,
// just the file. We'll handle recursion later.
if (!($base = uc_file_get_by_id($fid))) {
continue;
}
$base_name = $base->filename . (is_dir(uc_file_qualify_file($base->filename)) ? '%' : '');
$files = db_query("SELECT * FROM {uc_files} WHERE filename LIKE '%s'", $base_name);
// PHP str_replace() can't replace only n matches, so we use regex. First
// we escape our file slashes, though.
// ...using str_replace()
$base_name = str_replace("\\", "\\\\", $base_name);
$base_name = str_replace("/", "\\/", $base_name);
while ($file = db_fetch_object($files)) {
// Make the file path relative to the given directory.
$filename_change = preg_replace('/' . $base_name . '/', '', $file->filename, 1);
// Remove any leading slash.
$filename = substr($filename_change, 0, 1) == '/' ? substr($filename_change, 1) : $filename_change;
// Recurring, or a file? Add it.
if ($recursive || !strpos($filename, '/')) {
$result[] = $file->fid;
}
}
}
return array_unique($result);
}