/** * Handle rename requests (/filemanager/api/mv). */ public function get_mv() { $file = urldecode(join('/', func_get_args())); if (self::verify_folder($file, $this->root)) { if (!self::verify_folder_name($_GET['rename'])) { return $this->error(i18n_get('Invalid folder name')); } else { $parts = explode('/', $file); $old = array_pop($parts); $new = preg_replace('/' . preg_quote($old) . '$/', $_GET['rename'], $file); if (!rename($this->root . $file, $this->root . $new)) { return $this->error(i18n_get('Unable to rename') . ' ' . $file); } FileManager::prop_rename($file, $new, true); return array('msg' => i18n_get('Folder renamed.'), 'data' => $new); } } elseif (self::verify_file($file, $this->root)) { if (!self::verify_file_name($_GET['rename'])) { return $this->error(i18n_get('Invalid file name')); } else { $parts = explode('/', $file); $old = array_pop($parts); $new = preg_replace('/' . preg_quote($old) . '$/', $_GET['rename'], $file); if (!rename($this->root . $file, $this->root . $new)) { return $this->error(i18n_get('Unable to rename') . ' ' . $file); } FileManager::prop_rename($file, $new); $this->controller->hook('filemanager/rename', array('file' => $file, 'renamed' => $new)); return array('msg' => i18n_get('File renamed.'), 'data' => $new); } } return $this->error(i18n_get('File not found')); }
/** * Rename a file or folder. */ public static function rename($file, $new_name) { if (self::verify_folder($file)) { if (!self::verify_folder_name($new_name)) { self::$error = __('Invalid folder name'); return false; } $parts = explode('/', $file); $old = array_pop($parts); $new = preg_replace('/' . preg_quote($old) . '$/', $new_name, $file); if (!rename(self::root() . $file, self::root() . $new)) { self::$error = __('Unable to rename') . ' ' . $file; return false; } self::prop_rename($file, $new, true); return true; } elseif (self::verify_file($file)) { if (!self::verify_file_name($new_name)) { self::$error = __('Invalid file name'); return false; } $parts = explode('/', $file); $old = array_pop($parts); $new = preg_replace('/' . preg_quote($old) . '$/', $new_name, $file); if (!rename(self::root() . $file, self::root() . $new)) { self::$error = __('Unable to rename') . ' ' . $file; return false; } FileManager::prop_rename($file, $new); return true; } self::$error = __('File not found'); return false; }