Also support removeable mounts with rmdir
This commit is contained in:
parent
0532f5c39a
commit
b188550c22
|
@ -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'));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue