diff options
author | Michael Gapczynski <mtgap@owncloud.com> | 2012-07-24 14:41:19 -0400 |
---|---|---|
committer | Michael Gapczynski <mtgap@owncloud.com> | 2012-07-24 14:41:19 -0400 |
commit | eac297e8c4ed60bfe41c0a4c7687faf598e4d415 (patch) | |
tree | 3c809d0057a4f210322f294b1a53ebfee82613d0 /apps | |
parent | e8675586af0923a5b9395166fd93d317920dd09d (diff) | |
download | nextcloud-server-eac297e8c4ed60bfe41c0a4c7687faf598e4d415.tar.gz nextcloud-server-eac297e8c4ed60bfe41c0a4c7687faf598e4d415.zip |
Improve file source caching for shared folders
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/sharedstorage.php | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/apps/files_sharing/sharedstorage.php b/apps/files_sharing/sharedstorage.php index e998dd056b2..2f68b481ebb 100644 --- a/apps/files_sharing/sharedstorage.php +++ b/apps/files_sharing/sharedstorage.php @@ -46,15 +46,23 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { $pos = strpos($target, '/', 8); // Get shared folder name if ($pos !== false) { - $itemTarget = substr($target, 0, $pos); + $folder = substr($target, 0, $pos); + if (isset($this->files[$folder])) { + $file = $this->files[$folder]; + } else { + $file = OCP\Share::getItemSharedWith('file', $folder, OC_Share_Backend_File::FORMAT_SHARED_STORAGE); + } + if ($file) { + $this->files[$target]['path'] = $file['path'].substr($target, strlen($folder)); + $this->files[$target]['permissions'] = $file['permissions']; + return $this->files[$target]; + } } else { - $itemTarget = $target; - } - $file = OCP\Share::getItemSharedWith('file', $itemTarget, OC_Share_Backend_File::FORMAT_SHARED_STORAGE); - if ($file) { - $this->files[$target]['path'] = $file['path'].substr($target, strlen($itemTarget)); - $this->files[$target]['permissions'] = $file['permissions']; - return $this->files[$target]; + $file = OCP\Share::getItemSharedWith('file', $target, OC_Share_Backend_File::FORMAT_SHARED_STORAGE); + if ($file) { + $this->files[$target] = $file; + return $this->files[$target]; + } } OCP\Util::writeLog('files_sharing', 'File source not found for: '.$target, OCP\Util::ERROR); return false; |