make sure that the umount hook always contains the path relative to data/user/files

This commit is contained in:
Bjoern Schiessle 2014-07-02 17:53:54 +02:00
parent 3b9fa81581
commit e9f5730869
2 changed files with 14 additions and 4 deletions

View File

@ -441,7 +441,7 @@ class Hooks {
$ownerOld = self::$renamedFiles[$params['oldpath']]['uid'];
$pathOld = self::$renamedFiles[$params['oldpath']]['path'];
} else {
\OCP\Util::writeLog('Encryption library', "can't get path and owner from the file before it was renamed", \OCP\Util::ERROR);
\OCP\Util::writeLog('Encryption library', "can't get path and owner from the file before it was renamed", \OCP\Util::DEBUG);
return false;
}

View File

@ -161,17 +161,27 @@ class View {
return $this->basicOperation('mkdir', $path, array('create', 'write'));
}
/**
* remove mount point
*
* @param \OC\Files\Mount\MoveableMount $mount
* @param string $path relative to data/
* @return boolean
*/
protected function removeMount($mount, $path){
if ($mount instanceof MoveableMount) {
// cut of /user/files to get the relative path to data/user/files
$pathParts= explode('/', $path, 4);
$relPath = '/' . $pathParts[3];
\OC_Hook::emit(
Filesystem::CLASSNAME, "umount",
array(Filesystem::signal_param_path => $path)
array(Filesystem::signal_param_path => $relPath)
);
$result = $mount->removeMount();
if ($result) {
\OC_Hook::emit(
Filesystem::CLASSNAME, "post_umount",
array(Filesystem::signal_param_path => $path)
array(Filesystem::signal_param_path => $relPath)
);
}
return $result;
@ -387,7 +397,7 @@ class View {
$absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path));
$mount = Filesystem::getMountManager()->find($absolutePath . $postFix);
if ($mount->getInternalPath($absolutePath) === '') {
return $this->removeMount($mount, $path);
return $this->removeMount($mount, $absolutePath);
}
return $this->basicOperation('unlink', $path, array('delete'));
}