Saves an entity revision.
\Drupal\Core\Entity\EntityInterface $entity: The entity object.
integer The revision id.
Overrides DatabaseStorageController::saveRevision
protected function saveRevision(EntityInterface $entity) {
$record = $this
->mapToRevisionStorageRecord($entity);
// When saving a new revision, set any existing revision ID to NULL so as to
// ensure that a new revision will actually be created.
if ($entity
->isNewRevision() && isset($record->{$this->revisionKey})) {
$record->{$this->revisionKey} = NULL;
}
$this
->preSaveRevision($record, $entity);
if ($entity
->isNewRevision()) {
drupal_write_record($this->revisionTable, $record);
if ($entity
->isDefaultRevision()) {
db_update($this->entityInfo['base_table'])
->fields(array(
$this->revisionKey => $record->{$this->revisionKey},
))
->condition($this->idKey, $record->{$this->idKey})
->execute();
}
$entity
->setNewRevision(FALSE);
}
else {
drupal_write_record($this->revisionTable, $record, $this->revisionKey);
}
// Make sure to update the new revision key for the entity.
$entity->{$this->revisionKey}->value = $record->{$this->revisionKey};
return $record->{$this->revisionKey};
}