function webfm_rename in Web File Manager 5.2
Same name and namespace in other branches
- 5 webfm_file.inc \webfm_rename()
webfm_rename -called from the ajax action - switch case 'rename':
@ret bool -true if the directory/file is renamed and file record(s) updated if dir/file under db control
Parameters
string $source - the source directory path:
string $dest - the destination directory name:
bool $uid - user id:
string &$err_arr - ref to error array for client feedback:
1 call to webfm_rename()
- webfm_ajax in ./
webfm.module - Ajax post requests
File
- ./
webfm_file.inc, line 52
Code
function webfm_rename($source, $dest, $uid, &$err_arr) {
$dest_temp = $dest . '~';
//handle possible case problem
//File
//if target is a file and new name isn't already used...
if (is_file($source) && !is_file($dest)) {
$file_o = webfm_get_file_record('', $source);
//if we are admin or owner of target file...
if ($uid == 1 || $file_o && $uid == $file_o->uid) {
//check validity of new file name
$file = new stdClass();
$file->filename = basename($dest);
$file->filepath = $source;
$file->filesize = 0;
//avoid fail for size - we're interested in extensions
if (webfm_enum_validate($file, $err_arr) === FALSE) {
//illegal file extension
$err_arr[] = "Invalid name";
return FALSE;
}
//if file is not read-only...rename
if (rename($source, $dest_temp)) {
if (!rename($dest_temp, $dest)) {
rename($dest_temp, $source);
$err_arr[] = 'rename ' . $source . ' fail';
return FALSE;
}
}
else {
$err_arr[] = $source . ' read-only';
return FALSE;
}
}
else {
$err_arr[] = "permission denied";
return FALSE;
}
return webfm_rename_db_file($source, $dest, $err_arr);
}
else {
if (is_dir($source) && !is_dir($dest) && $uid == 1) {
//if the target isn't read-only
if (rename($source, $dest_temp)) {
//directory rename is OK, back out, rename db files and rename dir again
rename($dest_temp, $source);
if (webfm_rename_db_dir_recur($source, $dest, TRUE, $err_arr)) {
rename($source, $dest_temp);
rename($dest_temp, $dest);
}
else {
$err_arr[] = 'webfm_rename_db_dir_recur error - db may be corrupted';
drupal_set_message(t('webfm_rename_db_dir_recur error - db may be corrupted'), error);
return FALSE;
}
return TRUE;
}
else {
$err_arr[] = $source . ' read-only';
return FALSE;
}
}
}
$err_arr[] = 'rename ' . $source . ' to ' . $dest . ' fail';
return FALSE;
}