diff options
author | Robin Appelman <icewind@owncloud.com> | 2014-06-16 16:24:42 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2014-06-16 16:24:42 +0200 |
commit | b188550c2218d9feb28c93355accaa9b16bb3000 (patch) | |
tree | 1d75f110f04c59f177032f8e9d2db0ffeda9fd0c | |
parent | 0532f5c39abfa8109fd1aacee93e244ac31cd42f (diff) | |
download | nextcloud-server-b188550c2218d9feb28c93355accaa9b16bb3000.tar.gz nextcloud-server-b188550c2218d9feb28c93355accaa9b16bb3000.zip |
Also support removeable mounts with rmdir
-rw-r--r-- | lib/private/files/view.php | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/lib/private/files/view.php b/lib/private/files/view.php index b168d177ab2..91d7ea260d3 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -161,7 +161,34 @@ class View { return $this->basicOperation('mkdir', $path, array('create', 'write')); } + protected function removeMount($mount, $path){ + if ($mount instanceof MoveableMount) { + \OC_Hook::emit( + Filesystem::CLASSNAME, "umount", + array(Filesystem::signal_param_path => $path) + ); + $result = $mount->removeMount(); + if ($result) { + \OC_Hook::emit( + Filesystem::CLASSNAME, "post_umount", + array(Filesystem::signal_param_path => $path) + ); + } + return $result; + } else { + // do not allow deleting the storage's root / the mount point + // because for some storages it might delete the whole contents + // but isn't supposed to work that way + return false; + } + } + public function rmdir($path) { + $absolutePath= $this->getAbsolutePath($path); + $mount = Filesystem::getMountManager()->find($absolutePath); + if ($mount->getInternalPath($absolutePath) === '') { + return $this->removeMount($mount, $path); + } if ($this->is_dir($path)) { return $this->basicOperation('rmdir', $path, array('delete')); } else { @@ -360,25 +387,7 @@ class View { $absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path)); $mount = Filesystem::getMountManager()->find($absolutePath . $postFix); if ($mount->getInternalPath($absolutePath) === '') { - if ($mount instanceof MoveableMount) { - \OC_Hook::emit( - Filesystem::CLASSNAME, "umount", - array(Filesystem::signal_param_path => $path) - ); - $result = $mount->removeMount(); - if ($result) { - \OC_Hook::emit( - Filesystem::CLASSNAME, "post_umount", - array(Filesystem::signal_param_path => $path) - ); - } - return $result; - } else { - // do not allow deleting the storage's root / the mount point - // because for some storages it might delete the whole contents - // but isn't supposed to work that way - return false; - } + return $this->removeMount($mount, $path); } return $this->basicOperation('unlink', $path, array('delete')); } |