diff options
author | Robin Appelman <robin@icewind.nl> | 2023-03-10 17:10:06 +0100 |
---|---|---|
committer | backportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com> | 2023-04-14 18:12:12 +0000 |
commit | 13340114699d07044aba67aa1f725ccd76f3162e (patch) | |
tree | 4c524e7e5fc66bd4c9ca3f334fd10de326c9d6c9 /apps/files_versions | |
parent | ce4269925ba83db1de887d4edf2521c15d649041 (diff) | |
download | nextcloud-server-13340114699d07044aba67aa1f725ccd76f3162e.tar.gz nextcloud-server-13340114699d07044aba67aa1f725ccd76f3162e.zip |
don't re-get fileinfo for versioned file if it's not shared
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'apps/files_versions')
-rw-r--r-- | apps/files_versions/lib/Versions/LegacyVersionsBackend.php | 30 | ||||
-rw-r--r-- | apps/files_versions/tests/VersioningTest.php | 1 |
2 files changed, 17 insertions, 14 deletions
diff --git a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php index cbfbc001e0c..0ad0eb8a439 100644 --- a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php +++ b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php @@ -69,13 +69,17 @@ class LegacyVersionsBackend implements IVersionBackend, INameableVersionBackend, if ($storage->instanceOfStorage(SharedStorage::class)) { $owner = $storage->getOwner(''); $user = $this->userManager->get($owner); - } - $userFolder = $this->rootFolder->getUserFolder($user->getUID()); - $nodes = $userFolder->getById($file->getId()); - $file2 = array_pop($nodes); + $userFolder = $this->rootFolder->getUserFolder($user->getUID()); + $nodes = $userFolder->getById($file->getId()); + $file = array_pop($nodes); + + if (!$file) { + throw new NotFoundException("version file not found for share owner"); + } + } - $versions = $this->getVersionsForFileFromDB($file2, $user); + $versions = $this->getVersionsForFileFromDB($file, $user); if (count($versions) > 0) { return $versions; @@ -83,18 +87,18 @@ class LegacyVersionsBackend implements IVersionBackend, INameableVersionBackend, // Insert the entry in the DB for the current version. $versionEntity = new VersionEntity(); - $versionEntity->setFileId($file2->getId()); - $versionEntity->setTimestamp($file2->getMTime()); - $versionEntity->setSize($file2->getSize()); - $versionEntity->setMimetype($this->mimeTypeLoader->getId($file2->getMimetype())); + $versionEntity->setFileId($file->getId()); + $versionEntity->setTimestamp($file->getMTime()); + $versionEntity->setSize($file->getSize()); + $versionEntity->setMimetype($this->mimeTypeLoader->getId($file->getMimetype())); $versionEntity->setMetadata([]); $this->versionsMapper->insert($versionEntity); // Insert entries in the DB for existing versions. - $versionsOnFS = Storage::getVersions($user->getUID(), $userFolder->getRelativePath($file2->getPath())); + $versionsOnFS = Storage::getVersions($user->getUID(), $userFolder->getRelativePath($file->getPath())); foreach ($versionsOnFS as $version) { $versionEntity = new VersionEntity(); - $versionEntity->setFileId($file2->getId()); + $versionEntity->setFileId($file->getId()); $versionEntity->setTimestamp((int)$version['version']); $versionEntity->setSize((int)$version['size']); $versionEntity->setMimetype($this->mimeTypeLoader->getId($version['mimetype'])); @@ -102,13 +106,13 @@ class LegacyVersionsBackend implements IVersionBackend, INameableVersionBackend, $this->versionsMapper->insert($versionEntity); } - return $this->getVersionsForFileFromDB($file2, $user); + return $this->getVersionsForFileFromDB($file, $user); } /** * @return IVersion[] */ - private function getVersionsForFileFromDB(Node $file, IUser $user): array { + private function getVersionsForFileFromDB(FileInfo $file, IUser $user): array { $userFolder = $this->rootFolder->getUserFolder($user->getUID()); return array_map( diff --git a/apps/files_versions/tests/VersioningTest.php b/apps/files_versions/tests/VersioningTest.php index 547f1eca4a6..f454ba30b86 100644 --- a/apps/files_versions/tests/VersioningTest.php +++ b/apps/files_versions/tests/VersioningTest.php @@ -662,7 +662,6 @@ class VersioningTest extends \Test\TestCase { public function testRestoreCrossStorage() { $storage2 = new Temporary([]); \OC\Files\Filesystem::mount($storage2, [], self::TEST_VERSIONS_USER . '/files/sub'); - \OC\Files\Filesystem::tearDown(); $this->doTestRestore(); } |