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'));
|
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) {
|
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)) {
|
if ($this->is_dir($path)) {
|
||||||
return $this->basicOperation('rmdir', $path, array('delete'));
|
return $this->basicOperation('rmdir', $path, array('delete'));
|
||||||
} else {
|
} else {
|
||||||
|
@ -360,25 +387,7 @@ class View {
|
||||||
$absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path));
|
$absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path));
|
||||||
$mount = Filesystem::getMountManager()->find($absolutePath . $postFix);
|
$mount = Filesystem::getMountManager()->find($absolutePath . $postFix);
|
||||||
if ($mount->getInternalPath($absolutePath) === '') {
|
if ($mount->getInternalPath($absolutePath) === '') {
|
||||||
if ($mount instanceof MoveableMount) {
|
return $this->removeMount($mount, $path);
|
||||||
\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->basicOperation('unlink', $path, array('delete'));
|
return $this->basicOperation('unlink', $path, array('delete'));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue