From: Florin Peter Date: Wed, 29 May 2013 17:11:39 +0000 (+0200) Subject: fix for share folder on external storage X-Git-Tag: v6.0.0alpha2~705^2~11 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d2652645425777c1a97f8421e51aad9bdcf39684;p=nextcloud-server.git fix for share folder on external storage --- diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 9af1f2c6459..4fc8fa75709 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 0ff76e60580..64d7e9e5842 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; + } + }