From 928cee2ae717f4df699bcd3604c0028d3f159b44 Mon Sep 17 00:00:00 2001
From: Robin Appelman <robin@icewind.nl>
Date: Wed, 9 Sep 2020 13:48:48 +0200
Subject: [PATCH] only get the permissions from the share source if it's not
 already cached

this prevents having to setup the share source when doing metadata stuff on the share root

Signed-off-by: Robin Appelman <robin@icewind.nl>
---
 apps/files_sharing/lib/Cache.php | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/apps/files_sharing/lib/Cache.php b/apps/files_sharing/lib/Cache.php
index 587d49f4a46..dae33376f6d 100644
--- a/apps/files_sharing/lib/Cache.php
+++ b/apps/files_sharing/lib/Cache.php
@@ -146,17 +146,16 @@ class Cache extends CacheJail {
 		}
 
 		try {
-			$sharePermissions = $this->storage->getPermissions($entry['path']);
+			if (isset($entry['permissions'])) {
+				$entry['permissions'] &= $this->storage->getShare()->getPermissions();
+			} else {
+				$entry['permissions'] = $this->storage->getPermissions($entry['path']);
+			}
 		} catch (StorageNotAvailableException $e) {
 			// thrown by FailedStorage e.g. when the sharer does not exist anymore
 			// (IDE may say the exception is never thrown – false negative)
 			$sharePermissions = 0;
 		}
-		if (isset($entry['permissions'])) {
-			$entry['permissions'] &= $sharePermissions;
-		} else {
-			$entry['permissions'] = $sharePermissions;
-		}
 		$entry['uid_owner'] = $this->storage->getOwner('');
 		$entry['displayname_owner'] = $this->getOwnerDisplayName();
 		if ($path === '') {
-- 
GitLab