Skip to content

Commit 8390a04

Browse files
committed
fix: Properly fetch version from shared files by accessing the owner storage version
Signed-off-by: Julius Härtl <jus@bitgrid.net>
1 parent 6e3781b commit 8390a04

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

apps/files_versions/lib/Versions/LegacyVersionsBackend.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
namespace OCA\Files_Versions\Versions;
2828

2929
use OC\Files\View;
30+
use OCA\Files_Sharing\ISharedStorage;
3031
use OCA\Files_Sharing\SharedStorage;
3132
use OCA\Files_Versions\Db\VersionEntity;
3233
use OCA\Files_Versions\Db\VersionsMapper;
@@ -196,6 +197,18 @@ public function read(IVersion $version) {
196197

197198
public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): File {
198199
$userFolder = $this->rootFolder->getUserFolder($user->getUID());
200+
$file = $userFolder->get($userFolder->getRelativePath($sourceFile->getPath()));
201+
$ownerUserId = $file->getOwner()?->getUID();
202+
$storage = $file->getStorage();
203+
204+
/** @var ISharedStorage $storage */
205+
if ($storage->instanceOfStorage(ISharedStorage::class) && $ownerUserId) {
206+
// Shared files have their versions in the owners root folder
207+
$userFolder = $this->rootFolder->getUserFolder($ownerUserId);
208+
$user = $this->userManager->get($file->getOwner()->getUID());
209+
$sourceFile = $storage->getShare()->getNode();
210+
}
211+
199212
$versionFolder = $this->getVersionFolder($user);
200213
/** @var File $file */
201214
$file = $versionFolder->get($userFolder->getRelativePath($sourceFile->getPath()) . '.v' . $revision);

0 commit comments

Comments
 (0)