diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 9af1f2c6459e99bb4921a19dba78afb587188735..4fc8fa75709a62187745daa293f5261d135476f5 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -327,6 +327,13 @@ class Hooks { // if a folder was shared, get a list of all (sub-)folders if ($params['itemType'] === 'folder') { + + // get the path including mount point only if not a shared folder + if(strncmp($path, '/Shared' , strlen('/Shared') !== 0)) { + // get path including the the storage mount point + $path = $util->getPathWithMountPoint($params['itemSource']); + } + $allFiles = $util->getAllFiles($path); } else { $allFiles = array($path); @@ -402,7 +409,13 @@ class Hooks { // if we unshare a folder we need a list of all (sub-)files if ( $params['itemType'] === 'folder' ) { - + + // get the path including mount point only if not a shared folder + if(strncmp($path, '/Shared' , strlen('/Shared') !== 0)) { + // get path including the the storage mount point + $path = $util->getPathWithMountPoint($params['itemSource']); + } + $allFiles = $util->getAllFiles( $path ); } else { diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 0ff76e60580817c79b6e0068508d25a6c0de16d5..64d7e9e584227bf79b46c55c2837832b78670bae 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1199,7 +1199,7 @@ class Util { $result = array(); - $content = $this->view->getDirectoryContent($this->userFilesDir . $dir); + $content = $this->view->getDirectoryContent(\OC\Files\Filesystem::normalizePath($this->userFilesDir . '/' . $dir)); // handling for re shared folders $path_split = explode('/', $dir); @@ -1531,4 +1531,22 @@ class Util { $this->recoverAllFiles('/', $privateKey); } + /** + * Get the path including the storage mount point + * @param int $id + * @return string the path including the mount point like AmazonS3/folder/file.txt + */ + public function getPathWithMountPoint($id) { + list($storage, $internalPath) = \OC\Files\Cache\Cache::getById($id); + $mount = \OC\Files\Filesystem::getMountByStorageId($storage); + $mountPoint = $mount[0]->getMountPoint(); + $path = \OC\Files\Filesystem::normalizePath($mountPoint.'/'.$internalPath); + + // reformat the path to be relative e.g. /user/files/folder becomes /folder/ + $pathSplit = explode( '/', $path ); + $relativePath = implode( '/', array_slice( $pathSplit, 3 ) ); + + return $relativePath; + } + }