From 7039421efc80f3551026d3f16ba6887e7be02234 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Thu, 2 May 2013 17:47:11 -0400 Subject: [PATCH] Fix retrieving of mount points for shared storage, fix #3218 --- apps/files_sharing/lib/cache.php | 27 +++++++++++++++++++++--- apps/files_sharing/lib/sharedstorage.php | 4 ++-- lib/files/filesystem.php | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php index 1cb457cb98..2160fe9a39 100644 --- a/apps/files_sharing/lib/cache.php +++ b/apps/files_sharing/lib/cache.php @@ -45,8 +45,8 @@ class Shared_Cache extends Cache { if (isset($source['path']) && isset($source['fileOwner'])) { \OC\Files\Filesystem::initMountPoints($source['fileOwner']); $mount = \OC\Files\Filesystem::getMountByNumericId($source['storage']); - if ($mount) { - $fullPath = $mount->getMountPoint().$source['path']; + if (is_array($mount)) { + $fullPath = $mount[key($mount)]->getMountPoint().$source['path']; list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($fullPath); if ($storage) { $this->files[$target] = $internalPath; @@ -60,6 +60,14 @@ class Shared_Cache extends Cache { return false; } + public function getNumericStorageId() { + if (isset($this->numericId)) { + return $this->numericId; + } else { + return false; + } + } + /** * get the stored metadata of a file or folder * @@ -267,4 +275,17 @@ class Shared_Cache extends Cache { return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_ALL); } -} + /** + * find a folder in the cache which has not been fully scanned + * + * If multiply incomplete folders are in the cache, the one with the highest id will be returned, + * use the one with the highest id gives the best result with the background scanner, since that is most + * likely the folder where we stopped scanning previously + * + * @return string|bool the path of the folder or false when no folder matched + */ + public function getIncomplete() { + return false; + } + +} \ No newline at end of file diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 2facad0f7e..5c23a9eb0d 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -72,8 +72,8 @@ class Shared extends \OC\Files\Storage\Common { if (!isset($source['fullPath'])) { \OC\Files\Filesystem::initMountPoints($source['fileOwner']); $mount = \OC\Files\Filesystem::getMountByNumericId($source['storage']); - if ($mount) { - $this->files[$target]['fullPath'] = $mount->getMountPoint().$source['path']; + if (is_array($mount)) { + $this->files[$target]['fullPath'] = $mount[key($mount)]->getMountPoint().$source['path']; } else { $this->files[$target]['fullPath'] = false; } diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index ad21a98fab..eadd8a93fa 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -199,7 +199,7 @@ class Filesystem { * @return Mount\Mount[] */ public static function getMountByNumericId($id) { - return self::$mounts->findByStorageId($id); + return self::$mounts->findByNumericId($id); } /**