diff options
author | Julius Härtl <jus@bitgrid.net> | 2023-08-14 22:49:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-14 22:49:43 +0200 |
commit | 2b7d03778fb47908174a3a2f380278addc98cae5 (patch) | |
tree | 51204221939a7bbb1a77b9f1dab04d23cd5b4f4a | |
parent | aefc3f8759b957ff715626e709929bda582e5321 (diff) | |
parent | bbb71722206f966df25e4f7992e4206468a6754f (diff) | |
download | nextcloud-server-2b7d03778fb47908174a3a2f380278addc98cae5.tar.gz nextcloud-server-2b7d03778fb47908174a3a2f380278addc98cae5.zip |
Merge pull request #39786 from nextcloud/bugfix/version-expire-cleanup
-rw-r--r-- | apps/files_versions/lib/Storage.php | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php index 676d94d2fb7..426d5931ba9 100644 --- a/apps/files_versions/lib/Storage.php +++ b/apps/files_versions/lib/Storage.php @@ -913,6 +913,21 @@ class Storage { } foreach ($toDelete as $key => $path) { + // Make sure to cleanup version table relations as expire does not pass deleteVersion + try { + /** @var VersionsMapper $versionsMapper */ + $versionsMapper = \OC::$server->get(VersionsMapper::class); + $file = \OC::$server->get(IRootFolder::class)->getUserFolder($uid)->get($filename); + $pathparts = pathinfo($path); + $timestamp = (int)substr($pathparts['extension'] ?? '', 1); + $versionEntity = $versionsMapper->findVersionForFileId($file->getId(), $timestamp); + if ($versionEntity->getLabel() !== '') { + continue; + } + $versionsMapper->delete($versionEntity); + } catch (DoesNotExistException $e) { + } + \OC_Hook::emit('\OCP\Versions', 'preDelete', ['path' => $path, 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED]); self::deleteVersion($versionsFileview, $path); \OC_Hook::emit('\OCP\Versions', 'delete', ['path' => $path, 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED]); |