You are here

protected function ContentEntityStorageBase::doSave in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php \Drupal\Core\Entity\ContentEntityStorageBase::doSave()
  2. 9 core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php \Drupal\Core\Entity\ContentEntityStorageBase::doSave()

Performs storage-specific saving of the entity.

Parameters

int|string $id: The original entity ID.

\Drupal\Core\Entity\EntityInterface $entity: The entity to save.

Return value

bool|int If the record insert or update failed, returns FALSE. If it succeeded, returns SAVED_NEW or SAVED_UPDATED, depending on the operation performed.

Overrides EntityStorageBase::doSave

1 method overrides ContentEntityStorageBase::doSave()
ContentEntityNullStorage::doSave in core/lib/Drupal/Core/Entity/ContentEntityNullStorage.php
Performs storage-specific saving of the entity.

File

core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php, line 691

Class

ContentEntityStorageBase
Base class for content entity storage handlers.

Namespace

Drupal\Core\Entity

Code

protected function doSave($id, EntityInterface $entity) {

  /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
  if ($entity
    ->isNew()) {

    // Ensure the entity is still seen as new after assigning it an id, while
    // storing its data.
    $entity
      ->enforceIsNew();
    if ($this->entityType
      ->isRevisionable()) {
      $entity
        ->setNewRevision();
    }
    $return = SAVED_NEW;
  }
  else {

    // @todo Consider returning a different value when saving a non-default
    //   entity revision. See https://www.drupal.org/node/2509360.
    $return = $entity
      ->isDefaultRevision() ? SAVED_UPDATED : FALSE;
  }
  $this
    ->populateAffectedRevisionTranslations($entity);

  // Populate the "revision_default" flag. Skip this when we are resaving
  // the revision, and the flag is set to FALSE, since it is not possible to
  // set a previously default revision to non-default. However, setting a
  // previously non-default revision to default is allowed for advanced
  // use-cases.
  if ($this->entityType
    ->isRevisionable() && ($entity
    ->isNewRevision() || $entity
    ->isDefaultRevision())) {
    $revision_default_key = $this->entityType
      ->getRevisionMetadataKey('revision_default');
    $entity
      ->set($revision_default_key, $entity
      ->isDefaultRevision());
  }
  $this
    ->doSaveFieldItems($entity);
  return $return;
}