function EntityOperations::entityInsert

Same name in this branch
  1. 10 core/modules/content_moderation/src/EntityOperations.php \Drupal\content_moderation\EntityOperations::entityInsert()
Same name in other branches
  1. 9 core/modules/content_moderation/src/EntityOperations.php \Drupal\content_moderation\EntityOperations::entityInsert()
  2. 9 core/modules/workspaces/src/EntityOperations.php \Drupal\workspaces\EntityOperations::entityInsert()
  3. 8.9.x core/modules/content_moderation/src/EntityOperations.php \Drupal\content_moderation\EntityOperations::entityInsert()
  4. 8.9.x core/modules/workspaces/src/EntityOperations.php \Drupal\workspaces\EntityOperations::entityInsert()
  5. 11.x core/modules/content_moderation/src/EntityOperations.php \Drupal\content_moderation\EntityOperations::entityInsert()
  6. 11.x core/modules/workspaces/src/EntityOperations.php \Drupal\workspaces\EntityOperations::entityInsert()

Responds to the creation of a new entity.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity that was just saved.

See also

hook_entity_insert()

File

core/modules/workspaces/src/EntityOperations.php, line 188

Class

EntityOperations
Defines a class for reacting to entity events.

Namespace

Drupal\workspaces

Code

public function entityInsert(EntityInterface $entity) {
    if ($this->shouldSkipOperations($entity) || !$this->workspaceInfo
        ->isEntitySupported($entity)) {
        return;
    }
    assert($entity instanceof RevisionableInterface && $entity instanceof EntityPublishedInterface);
    $this->workspaceAssociation
        ->trackEntity($entity, $this->workspaceManager
        ->getActiveWorkspace());
    // When a published entity is created in a workspace, it should remain
    // published only in that workspace, and unpublished in the live workspace.
    // It is first saved as unpublished for the default revision, then
    // immediately a second revision is created which is published and attached
    // to the workspace. This ensures that the initial version of the entity
    // does not 'leak' into the live site. This differs from edits to existing
    // entities where there is already a valid default revision for the live
    // workspace.
    if (isset($entity->_initialPublished)) {
        // Ensure that the default revision of an entity saved in a workspace is
        // unpublished.
        if ($entity->isPublished()) {
            throw new \RuntimeException('The default revision of an entity created in a workspace cannot be published.');
        }
        $entity->setPublished();
        $entity->isDefaultRevision(FALSE);
        $entity->save();
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.