protected function SearchApiElasticsearchBackend::parseFilter in Elasticsearch Connector 8
Recursively parse Search API filters.
2 calls to SearchApiElasticsearchBackend::parseFilter()
- SearchApiElasticsearchBackend::getFacetSearchFilter in src/
Plugin/ search_api/ backend/ SearchApiElasticsearchBackend.php - Helper function return Facet filter.
- SearchApiElasticsearchBackend::getSearchQueryOptions in src/
Plugin/ search_api/ backend/ SearchApiElasticsearchBackend.php - Helper function return associative array with query options.
File
- src/
Plugin/ search_api/ backend/ SearchApiElasticsearchBackend.php, line 646 - Contains the SearchApiElasticsearchBackend object.
Class
- SearchApiElasticsearchBackend
- Plugin annotation @SearchApiBackend( id = "elasticsearch", label = @Translation("Elasticsearch"), description = @Translation("Index items using an Elasticsearch server.") )
Namespace
Drupal\elasticsearch_connector\Plugin\search_api\backendCode
protected function parseFilter(FilterInterface $query_filter, $index_fields, $ignored_field_id = '') {
if (empty($query_filter)) {
return NULL;
}
else {
$conjunction = $query_filter
->getConjunction();
$filters = array();
try {
foreach ($query_filter
->getFilters() as $filter_info) {
$filter = NULL;
// Simple filter [field_id, value, operator].
if (is_array($filter_info)) {
$filter_assoc = $this
->getAssociativeFilter($filter_info);
$this
->correctFilter($filter_assoc, $index_fields, $ignored_field_id);
// Check field.
$filter = $this
->getFilter($filter_assoc);
if (!empty($filter)) {
$filters[] = $filter;
}
}
elseif ($filter_info instanceof FilterInterface) {
$nested_filters = $this
->parseFilter($filter_info, $index_fields, $ignored_field_id);
// TODO: handle error. - here is unnecessary cause in if we thow exceptions and this is still in try{} .
if (!empty($nested_filters)) {
$filters = array_merge($filters, $nested_filters);
}
}
}
$filters = $this
->setFiltersConjunction($filters, $conjunction);
} catch (\Exception $e) {
watchdog('Elasticsearch Search API', String::checkPlain($e
->getMessage()), array(), WATCHDOG_ERROR);
drupal_set_message(String::checkPlain($e
->getMessage()), 'error');
}
return $filters;
}
}