return;
}
- if ($writeHookInfo['versionCreated'] && $node->getMTime() !== $writeHookInfo['previousNode']->getMTime()) {
+ if (
+ ($writeHookInfo['versionCreated'] && $node->getMTime() !== $writeHookInfo['previousNode']->getMTime()) ||
+ $writeHookInfo['previousNode']->getSize() === 0
+ ) {
// If a new version was created, insert a version in the DB for the current content.
// Unless both versions have the same mtime.
- $versionEntity = new VersionEntity();
- $versionEntity->setFileId($node->getId());
- $versionEntity->setTimestamp($node->getMTime());
- $versionEntity->setSize($node->getSize());
- $versionEntity->setMimetype($this->mimeTypeLoader->getId($node->getMimetype()));
- $versionEntity->setMetadata([]);
- $this->versionsMapper->insert($versionEntity);
+ $this->created($node);
} 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.
- 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);
- }
+ $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);
}
unset($this->writeHookInfo[$node->getId()]);