function EntityOperations::entityQueryTagLatestTranslatedAffectedRevisionAlter

Implements hook_entity_query_tag__TAG_alter() for 'latest_translated_affected_revision'.

File

core/modules/workspaces/src/Hook/EntityOperations.php, line 262

Class

EntityOperations
Defines a class for reacting to entity runtime hooks.

Namespace

Drupal\workspaces\Hook

Code

public function entityQueryTagLatestTranslatedAffectedRevisionAlter(QueryInterface $query) : void {
    $entity_type = $this->entityTypeManager
        ->getDefinition($query->getEntityTypeId());
    if (!$this->workspaceInfo
        ->isEntityTypeSupported($entity_type) || !$this->workspaceManager
        ->hasActiveWorkspace()) {
        return;
    }
    $active_workspace = $this->workspaceManager
        ->getActiveWorkspace();
    $tracked_entities = $this->workspaceAssociation
        ->getTrackedEntities($active_workspace->id());
    if (!isset($tracked_entities[$entity_type->id()])) {
        return;
    }
    if ($revision_id = array_search($query->getMetaData('entity_id'), $tracked_entities[$entity_type->id()])) {
        $query->condition($entity_type->getKey('revision'), $revision_id, '<=');
        $conditions = $query->orConditionGroup();
        $conditions->condition($entity_type->getRevisionMetadataKey('workspace'), $active_workspace->id());
        $conditions->condition($entity_type->getRevisionMetadataKey('revision_default'), TRUE);
        $query->condition($conditions);
    }
}

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