You are here

protected function FilterNormalizer::expandItem in JSON:API 8

Expands a filter item in case a shortcut was used.

Possible cases for the conditions: 1. filter[uuid][value]=1234. 2. filter[0][condition][field]=uuid&filter[0][condition][value]=1234. 3. filter[uuid][condition][value]=1234. 4. filter[uuid][value]=1234&filter[uuid][group]=my_group.

Parameters

string $filter_index: The index.

array $filter_item: The raw filter item.

array $context: The denormalization context.

Return value

array The expanded filter item.

1 call to FilterNormalizer::expandItem()
FilterNormalizer::expand in src/Normalizer/FilterNormalizer.php
Expands any filter parameters using shorthand notation.

File

src/Normalizer/FilterNormalizer.php, line 171

Class

FilterNormalizer
The normalizer used for JSON API filters.

Namespace

Drupal\jsonapi\Normalizer

Code

protected function expandItem($filter_index, array $filter_item, array $context) {
  if (isset($filter_item[EntityConditionNormalizer::VALUE_KEY])) {
    if (!isset($filter_item[EntityConditionNormalizer::PATH_KEY])) {
      $filter_item[EntityConditionNormalizer::PATH_KEY] = $filter_index;
    }
    $filter_item = [
      static::CONDITION_KEY => $filter_item,
      static::MEMBER_KEY => $filter_item[static::MEMBER_KEY],
    ];
  }
  if (!isset($filter_item[static::CONDITION_KEY][EntityConditionNormalizer::OPERATOR_KEY])) {
    $filter_item[static::CONDITION_KEY][EntityConditionNormalizer::OPERATOR_KEY] = '=';
  }
  if (isset($filter_item[static::CONDITION_KEY][EntityConditionNormalizer::PATH_KEY])) {
    $filter_item[static::CONDITION_KEY][EntityConditionNormalizer::PATH_KEY] = $this->fieldResolver
      ->resolveInternalEntityQueryPath($context['entity_type_id'], $context['bundle'], $filter_item[static::CONDITION_KEY][EntityConditionNormalizer::PATH_KEY]);
  }
  return $filter_item;
}