Skip to content

Commit d5a9582

Browse files
authored
Merge pull request #42075 from nextcloud/backport/41944/stable27
[stable27] fix: Properly fetch version from shared files by accessing the owner storage version
2 parents 85f46ee + f401b58 commit d5a9582

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

apps/files_versions/lib/Versions/LegacyVersionsBackend.php

Lines changed: 16 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;
@@ -197,6 +198,21 @@ public function read(IVersion $version) {
197198

198199
public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): File {
199200
$userFolder = $this->rootFolder->getUserFolder($user->getUID());
201+
$owner = $sourceFile->getOwner();
202+
$storage = $sourceFile->getStorage();
203+
204+
// Shared files have their versions in the owners root folder so we need to obtain them from there
205+
if ($storage->instanceOfStorage(ISharedStorage::class) && $owner) {
206+
/** @var SharedStorage $storage */
207+
$userFolder = $this->rootFolder->getUserFolder($owner->getUID());
208+
$user = $owner;
209+
$ownerPathInStorage = $sourceFile->getInternalPath();
210+
$sourceFile = $storage->getShare()->getNode();
211+
if ($sourceFile instanceof Folder) {
212+
$sourceFile = $sourceFile->get($ownerPathInStorage);
213+
}
214+
}
215+
200216
$versionFolder = $this->getVersionFolder($user);
201217
/** @var File $file */
202218
$file = $versionFolder->get($userFolder->getRelativePath($sourceFile->getPath()) . '.v' . $revision);

0 commit comments

Comments
 (0)