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;
}
}