fix: Avoid failing to update the current version entry if there is none

Signed-off-by: Julius Härtl <jus@bitgrid.net>
pull/38800/head
Julius Härtl 2 years ago
parent 69f6585e36
commit e76c96be5c
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
  1. 17
      apps/files_versions/lib/Listener/FileEventsListener.php

@ -239,11 +239,18 @@ class FileEventsListener implements IEventListener {
} else {
// If no new version was stored in the FS, no new version should be added in the DB.
// So we simply update the associated version.
$currentVersionEntity = $this->versionsMapper->findVersionForFileId($node->getId(), $writeHookInfo['previousNode']->getMtime());
$currentVersionEntity->setTimestamp($node->getMTime());
$currentVersionEntity->setSize($node->getSize());
$currentVersionEntity->setMimetype($this->mimeTypeLoader->getId($node->getMimetype()));
$this->versionsMapper->update($currentVersionEntity);
try {
$currentVersionEntity = $this->versionsMapper->findVersionForFileId($node->getId(), $writeHookInfo['previousNode']->getMtime());
$currentVersionEntity->setTimestamp($node->getMTime());
$currentVersionEntity->setSize($node->getSize());
$currentVersionEntity->setMimetype($this->mimeTypeLoader->getId($node->getMimetype()));
$this->versionsMapper->update($currentVersionEntity);
} catch (DoesNotExistException) {
// There might be cases where the current version entry doesn't exist,
// e.g. if none was written due to an empty file or from before the versions table was introduced
// We just create the initial version entry then for the current entity
$this->created($node);
}
}
unset($this->writeHookInfo[$node->getId()]);

Loading…
Cancel
Save