summaryrefslogtreecommitdiffstats
path: root/lib/private/files/view.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/files/view.php')
-rw-r--r--lib/private/files/view.php47
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'));
}