protected function SearchApiElasticsearchConnector::normalizeFilters in Elasticsearch Connector 7.5
Normalizes complicated filters.
1 call to SearchApiElasticsearchConnector::normalizeFilters()
- SearchApiElasticsearchConnector::parseFilter in modules/
elasticsearch_connector_search_api/ service.inc - Recursively parse Search API filters.
File
- modules/
elasticsearch_connector_search_api/ service.inc, line 784 - Provides a Elasticsearch-based service class for the Search API using Elasticsearch Connector module.
Class
- SearchApiElasticsearchConnector
- Search service class.
Code
protected function normalizeFilters($filters, $conjunction) {
$result = array();
if (isset($filters['filter'])) {
$result['filter'] = $filters['filter'];
unset($filters['filter']);
}
if (isset($filters['should'])) {
$result['should'] = $filters['should'];
unset($filters['should']);
}
if (isset($filters['must_not'])) {
$result['must_not'] = $filters['must_not'];
unset($filters['must_not']);
}
if (count($filters)) {
foreach ($filters as $key => $value) {
if (is_int($key)) {
if (isset($value['must_not'])) {
$result['must_not'][] = $value['must_not'];
}
else {
if ($conjunction === 'AND') {
if (!isset($result['filter'])) {
$result['filter'] = array();
$result['filter'] = array(
$value,
);
}
else {
$result['filter'][] = array(
$value,
);
}
}
else {
if (!isset($result['should'])) {
$result['should'] = array();
$result['should'] = array(
$value,
);
}
else {
$result['should'][] = array(
$value,
);
}
}
}
}
else {
$result['filter'][] = array(
$value,
);
}
}
}
return $result;
}