function WorkspaceTracker::initializeWorkspace

Initializes a workspace with all the associations of its parent.

Parameters

\Drupal\workspaces\WorkspaceInterface $workspace: The workspace to be initialized.

Overrides WorkspaceTrackerInterface::initializeWorkspace

File

core/modules/workspaces/src/WorkspaceTracker.php, line 496

Class

WorkspaceTracker
Provides a class for CRUD operations on workspace associations.

Namespace

Drupal\workspaces

Code

public function initializeWorkspace(WorkspaceInterface $workspace) : void {
  if ($parent_id = $workspace->parent->target_id) {
    $indexed_rows = $this->database
      ->select(static::TABLE);
    $indexed_rows->addExpression(':new_id', 'workspace', [
      ':new_id' => $workspace->id(),
    ]);
    $indexed_rows->fields(static::TABLE, [
      'target_entity_type_id',
      'target_entity_id',
      'target_entity_id_string',
      'target_entity_revision_id',
    ]);
    $indexed_rows->condition('workspace', $parent_id);
    $this->database
      ->insert(static::TABLE)
      ->from($indexed_rows)
      ->execute();
  }
  $this->associatedRevisions = $this->associatedInitialRevisions = [];
}

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