]> source.dussan.org Git - nextcloud-server.git/commitdiff
always fall back to default share folder
authorBjoern Schiessle <schiessle@owncloud.com>
Thu, 26 Mar 2015 20:56:44 +0000 (21:56 +0100)
committerBjoern Schiessle <schiessle@owncloud.com>
Thu, 26 Mar 2015 20:56:44 +0000 (21:56 +0100)
apps/files_sharing/lib/helper.php
apps/files_sharing/lib/sharedmount.php
apps/files_sharing/tests/helper.php

index 236be15a95ae3bbe2619f3dc649f3d654e132c0c..3f1de7233ae84529622daae452d5f7f9a16daf1e 100644 (file)
@@ -283,8 +283,21 @@ class Helper {
         */
        public static function getShareFolder() {
                $shareFolder = \OC::$server->getConfig()->getSystemValue('share_folder', '/');
+               $shareFolder = \OC\Files\Filesystem::normalizePath($shareFolder);
+
+               if (!\OC\Files\Filesystem::file_exists($shareFolder)) {
+                       $dir = '';
+                       $subdirs = explode('/', $shareFolder);
+                       foreach ($subdirs as $subdir) {
+                               $dir = $dir . '/' . $subdir;
+                               if (!\OC\Files\Filesystem::is_dir($dir)) {
+                                       \OC\Files\Filesystem::mkdir($dir);
+                               }
+                       }
+               }
+
+               return $shareFolder;
 
-               return \OC\Files\Filesystem::normalizePath($shareFolder);
        }
 
        /**
index 4737859375703ef59ee4eac852015623d86a19b8..da00549541b665ba385e8f57960e8d68957c8066 100644 (file)
@@ -50,8 +50,8 @@ class SharedMount extends MountPoint implements MoveableMount {
                $mountPoint = basename($share['file_target']);
                $parent = dirname($share['file_target']);
 
-               while (!\OC\Files\Filesystem::is_dir($parent)) {
-                       $parent = dirname($parent);
+               if (!\OC\Files\Filesystem::is_dir($parent)) {
+                       $parent = Helper::getShareFolder();
                }
 
                $newMountPoint = \OCA\Files_Sharing\Helper::generateUniqueTarget(
index 1d7093a1cf0e83fd5ec785d0bebd6d559e0bde30..34a1389db77ab3ea1a53948f485f61b035abf8b0 100644 (file)
@@ -52,9 +52,11 @@ class Test_Files_Sharing_Helper extends TestCase {
        function testSetGetShareFolder() {
                $this->assertSame('/', \OCA\Files_Sharing\Helper::getShareFolder());
 
-               \OCA\Files_Sharing\Helper::setShareFolder('/Shared');
+               \OCA\Files_Sharing\Helper::setShareFolder('/Shared/Folder');
 
-               $this->assertSame('/Shared', \OCA\Files_Sharing\Helper::getShareFolder());
+               $sharedFolder = \OCA\Files_Sharing\Helper::getShareFolder();
+               $this->assertSame('/Shared/Folder', \OCA\Files_Sharing\Helper::getShareFolder());
+               $this->assertTrue(\OC\Files\Filesystem::is_dir($sharedFolder));
 
                // cleanup
                \OC::$server->getConfig()->deleteSystemValue('share_folder');