Skip to content

Commit

Permalink
fix: Properly fetch version from shared files by accessing the owner …
Browse files Browse the repository at this point in the history
…storage version

Signed-off-by: Julius Härtl <jus@bitgrid.net>
  • Loading branch information
juliushaertl committed Dec 4, 2023
1 parent 6e3781b commit 841f3bb
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions apps/files_versions/lib/Versions/LegacyVersionsBackend.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -196,6 +197,21 @@ public function read(IVersion $version) {

public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): File {
$userFolder = $this->rootFolder->getUserFolder($user->getUID());
$ownerUserId = $sourceFile->getOwner()?->getUID();
$storage = $sourceFile->getStorage();

if ($storage->instanceOfStorage(ISharedStorage::class) && $ownerUserId) {
/** @var SharedStorage $storage */
// Shared files have their versions in the owners root folder
$userFolder = $this->rootFolder->getUserFolder($ownerUserId);
$user = $this->userManager->get($ownerUserId);
$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);
Expand Down

0 comments on commit 841f3bb

Please sign in to comment.