protected function SearchBuilder::getQueryFilters in Elasticsearch Connector 8.2
Same name and namespace in other branches
- 8.7 src/ElasticSearch/Parameters/Builder/SearchBuilder.php \Drupal\elasticsearch_connector\ElasticSearch\Parameters\Builder\SearchBuilder::getQueryFilters()
 - 8.5 src/ElasticSearch/Parameters/Builder/SearchBuilder.php \Drupal\elasticsearch_connector\ElasticSearch\Parameters\Builder\SearchBuilder::getQueryFilters()
 - 8.6 src/ElasticSearch/Parameters/Builder/SearchBuilder.php \Drupal\elasticsearch_connector\ElasticSearch\Parameters\Builder\SearchBuilder::getQueryFilters()
 
Recursively parse Search API condition group.
Parameters
ConditionGroupInterface $condition_group:
array $index_fields:
string $ignored_field_id:
Return value
array|null
Throws
\Exception
1 call to SearchBuilder::getQueryFilters()
- SearchBuilder::getSearchQueryOptions in src/
ElasticSearch/ Parameters/ Builder/ SearchBuilder.php  - Helper function return associative array with query options.
 
File
- src/
ElasticSearch/ Parameters/ Builder/ SearchBuilder.php, line 305  
Class
- SearchBuilder
 - Class SearchBuilder.
 
Namespace
Drupal\elasticsearch_connector\ElasticSearch\Parameters\BuilderCode
protected function getQueryFilters(ConditionGroupInterface $condition_group, array $index_fields, $ignored_field_id = '') {
  if (empty($condition_group)) {
    return NULL;
  }
  else {
    $conjunction = $condition_group
      ->getConjunction();
    $filters = [];
    foreach ($condition_group
      ->getConditions() as $condition) {
      $filter = NULL;
      // Simple filter [field_id, value, operator].
      if ($condition instanceof Condition) {
        if (!$condition
          ->getField() || !$condition
          ->getValue() || !$condition
          ->getOperator()) {
          // TODO: When using views the sort field is coming as a filter and messing with this section.
          // throw new Exception(t('Incorrect filter criteria is using for searching!'));
        }
        $field_id = $condition
          ->getField();
        if (!isset($index_fields[$field_id])) {
          // TODO: proper exception.
          throw new \Exception(t(':field_id Undefined field ! Incorrect filter criteria is using for searching!', [
            ':field_id' => $field_id,
          ]));
        }
        // Check operator.
        if (!$condition
          ->getOperator()) {
          // TODO: proper exception.
          throw new \Exception(t('Empty filter operator for :field_id field! Incorrect filter criteria is using for searching!', [
            ':field_id' => $field_id,
          ]));
        }
        // Check field.
        $filter = FilterFactory::filterFromCondition($condition);
        if (!empty($filter)) {
          $filters[] = $filter;
        }
      }
      elseif ($condition instanceof ConditionGroupInterface) {
        $nested_filters = $this
          ->getQueryFilters($condition, $index_fields, $ignored_field_id);
        if (!empty($nested_filters)) {
          $filters = array_merge($filters, $nested_filters);
        }
      }
    }
    $filters = $this
      ->setFiltersConjunction($filters, $conjunction);
    return $filters;
  }
}