]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix for share folder on external storage
authorFlorin Peter <github@florin-peter.de>
Wed, 29 May 2013 17:11:39 +0000 (19:11 +0200)
committerFlorin Peter <github@florin-peter.de>
Wed, 29 May 2013 17:11:39 +0000 (19:11 +0200)
apps/files_encryption/hooks/hooks.php
apps/files_encryption/lib/util.php

index 9af1f2c6459e99bb4921a19dba78afb587188735..4fc8fa75709a62187745daa293f5261d135476f5 100644 (file)
@@ -327,6 +327,13 @@ class Hooks {
 \r
                        // if a folder was shared, get a list of all (sub-)folders\r
                        if ($params['itemType'] === 'folder') {\r
+\r
+                               // get the path including mount point only if not a shared folder\r
+                               if(strncmp($path, '/Shared' , strlen('/Shared') !== 0)) {\r
+                                       // get path including the the storage mount point\r
+                                       $path = $util->getPathWithMountPoint($params['itemSource']);\r
+                               }\r
+\r
                                $allFiles = $util->getAllFiles($path);\r
                        } else {\r
                                $allFiles = array($path);\r
@@ -402,7 +409,13 @@ class Hooks {
 \r
                        // if we unshare a folder we need a list of all (sub-)files\r
                        if ( $params['itemType'] === 'folder' ) {\r
-                       \r
+\r
+                               // get the path including mount point only if not a shared folder\r
+                               if(strncmp($path, '/Shared' , strlen('/Shared') !== 0)) {\r
+                                       // get path including the the storage mount point\r
+                                       $path = $util->getPathWithMountPoint($params['itemSource']);\r
+                               }\r
+\r
                                $allFiles = $util->getAllFiles( $path );\r
                                \r
                        } else {\r
index 0ff76e60580817c79b6e0068508d25a6c0de16d5..64d7e9e584227bf79b46c55c2837832b78670bae 100644 (file)
@@ -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;
+       }
+
 }