You are here

public function QueryTrait::prepare in Multiversion 8

Same name and namespace in other branches
  1. 8.2 src/Entity/Query/QueryTrait.php \Drupal\multiversion\Entity\Query\QueryTrait::prepare()

File

src/Entity/Query/QueryTrait.php, line 50

Class

QueryTrait
@property $entityTypeId @property $entityTypeManager @property $condition

Namespace

Drupal\multiversion\Entity\Query

Code

public function prepare() {
  parent::prepare();
  $entity_type = $this->entityTypeManager
    ->getDefinition($this->entityTypeId);
  $enabled = \Drupal::state()
    ->get('multiversion.migration_done.' . $this
    ->getEntityTypeId(), FALSE);

  // Add necessary conditions just when the storage class is defined by the
  // Multiversion module. This is needed when uninstalling Multiversion.
  if (is_subclass_of($entity_type
    ->getStorageClass(), ContentEntityStorageInterface::class) && $enabled) {
    $revision_key = $entity_type
      ->getKey('revision');
    $revision_query = FALSE;
    foreach ($this->condition
      ->conditions() as $condition) {
      if ($condition['field'] == $revision_key) {
        $revision_query = TRUE;
      }
    }

    // Set the workspace condition.
    if ($workspace_id = $this
      ->getWorkspaceId()) {
      $this
        ->condition('workspace', $workspace_id);
    }

    // Loading a revision is explicit. So when we try to load one we should do
    // so without a condition on the deleted flag.
    if (!$revision_query) {
      $this
        ->condition('_deleted', (int) $this->isDeleted);
    }
  }
  return $this;
}