fix: Properly fetch version from shared files by accessing the owner storage version

Signed-off-by: Julius Härtl <jus@bitgrid.net>
pull/41944/head
Julius Härtl 2 years ago
parent e1ecf798d9
commit 75505747bb
  1. 16
      apps/files_versions/lib/Versions/LegacyVersionsBackend.php

@ -27,6 +27,7 @@ declare(strict_types=1);
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,21 @@ class LegacyVersionsBackend implements IVersionBackend, INameableVersionBackend,
public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): File {
$userFolder = $this->rootFolder->getUserFolder($user->getUID());
$owner = $sourceFile->getOwner();
$storage = $sourceFile->getStorage();
// Shared files have their versions in the owners root folder so we need to obtain them from there
if ($storage->instanceOfStorage(ISharedStorage::class) && $owner) {
/** @var SharedStorage $storage */
$userFolder = $this->rootFolder->getUserFolder($owner->getUID());
$user = $owner;
$ownerPathInStorage = $sourceFile->getInternalPath();
$sourceFile = $storage->getShare()->getNode();
if ($sourceFile instanceof Folder) {
$sourceFile = $sourceFile->get($ownerPathInStorage);
}
}
$versionFolder = $this->getVersionFolder($user);
/** @var File $file */
$file = $versionFolder->get($userFolder->getRelativePath($sourceFile->getPath()) . '.v' . $revision);

Loading…
Cancel
Save