You are here

public function WorkspaceAssociation::getTrackedEntities in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/workspaces/src/WorkspaceAssociation.php \Drupal\workspaces\WorkspaceAssociation::getTrackedEntities()

Retrieves the entities tracked by a given workspace.

Parameters

string $workspace_id: The ID of the workspace.

string|null $entity_type_id: (optional) An entity type ID to filter the results by. Defaults to NULL.

int[]|string[]|null $entity_ids: (optional) An array of entity IDs to filter the results by. Defaults to NULL.

Return value

array Returns a multidimensional array where the first level keys are entity type IDs and the values are an array of entity IDs keyed by revision IDs.

Overrides WorkspaceAssociationInterface::getTrackedEntities

1 call to WorkspaceAssociation::getTrackedEntities()
WorkspaceAssociation::trackEntity in core/modules/workspaces/src/WorkspaceAssociation.php
Updates or creates the association for a given entity and a workspace.

File

core/modules/workspaces/src/WorkspaceAssociation.php, line 133

Class

WorkspaceAssociation
Provides a class for CRUD operations on workspace associations.

Namespace

Drupal\workspaces

Code

public function getTrackedEntities($workspace_id, $entity_type_id = NULL, $entity_ids = NULL) {
  $query = $this->database
    ->select(static::TABLE);
  $query
    ->fields(static::TABLE, [
    'target_entity_type_id',
    'target_entity_id',
    'target_entity_revision_id',
  ])
    ->orderBy('target_entity_revision_id', 'ASC')
    ->condition('workspace', $workspace_id);
  if ($entity_type_id) {
    $query
      ->condition('target_entity_type_id', $entity_type_id, '=');
    if ($entity_ids) {
      $query
        ->condition('target_entity_id', $entity_ids, 'IN');
    }
  }
  $tracked_revisions = [];
  foreach ($query
    ->execute() as $record) {
    $tracked_revisions[$record->target_entity_type_id][$record->target_entity_revision_id] = $record->target_entity_id;
  }
  return $tracked_revisions;
}