protected function DatabaseStorageControllerNG::saveRevision

Saves an entity revision.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity object.

Return value

integer The revision id.

Overrides DatabaseStorageController::saveRevision

1 call to DatabaseStorageControllerNG::saveRevision()
DatabaseStorageControllerNG::save in drupal/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php
Overrides DatabaseStorageController::save().

File

drupal/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php, line 241
Definition of Drupal\Core\Entity\DatabaseStorageControllerNG.

Class

DatabaseStorageControllerNG
Implements Field API specific enhancements to the DatabaseStorageController class.

Namespace

Drupal\Core\Entity

Code

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};
}