From 8a9ff882d7fa0689269579bf4ae77eb7b58c94df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Thu, 30 Nov 2023 20:31:52 +0100 Subject: [PATCH] fix: Properly fetch version from shared files by accessing the owner storage version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- .../lib/Versions/LegacyVersionsBackend.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php index 36faf893d66aa..fee050df901cb 100644 --- a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php +++ b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php @@ -27,6 +27,7 @@ namespace OCA\Files_Versions\Versions; use OC\Files\View; +use OCA\Files_Sharing\ISharedStorage; use OCA\Files_Sharing\SharedStorage; use OCA\Files_Versions\Db\VersionEntity; use OCA\Files_Versions\Db\VersionsMapper; @@ -196,6 +197,14 @@ public function read(IVersion $version) { public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): File { $userFolder = $this->rootFolder->getUserFolder($user->getUID()); + $file = $userFolder->get($userFolder->getRelativePath($sourceFile->getPath())); + $storage = $file->getStorage(); + if ($storage->instanceOfStorage(ISharedStorage::class)) { + /** @var ISharedStorage $storage */ + $userFolder = $this->rootFolder->getUserFolder($file->getOwner()->getUID()); + $user = $this->userManager->get($file->getOwner()?->getUID()); + $sourceFile = $file->getStorage()->getShare()->getNode(); + } $versionFolder = $this->getVersionFolder($user); /** @var File $file */ $file = $versionFolder->get($userFolder->getRelativePath($sourceFile->getPath()) . '.v' . $revision);