You are here

function elasticsearch_watchdog_build_filter_query in Elasticsearch Connector 7.5

Same name and namespace in other branches
  1. 7 modules/elasticsearch_watchdog/elasticsearch_watchdog.admin.inc \elasticsearch_watchdog_build_filter_query()
  2. 7.2 modules/elasticsearch_watchdog/elasticsearch_watchdog.admin.inc \elasticsearch_watchdog_build_filter_query()

Builds a filter for elasticsearch log administration filters based on session.

Return value

array An associative array with keys. Only filter for now 'filter'.

1 call to elasticsearch_watchdog_build_filter_query()
elasticsearch_watchdog_overview in modules/elasticsearch_watchdog/elasticsearch_watchdog.admin.inc
Page callback: Displays a listing of log messages.

File

modules/elasticsearch_watchdog/elasticsearch_watchdog.admin.inc, line 438
Created on Jan 06, 2014

Code

function elasticsearch_watchdog_build_filter_query() {
  if (empty($_SESSION['elasticsearch_watchdog_overview_filter'])) {
    return;
  }
  $filters = elasticsearch_watchdog_filters(FALSE);
  $query_filter = array();
  $query = array();
  foreach ($_SESSION['elasticsearch_watchdog_overview_filter'] as $key => $filter) {
    $has_value = FALSE;
    $filter_where = array();
    if (empty($filters[$key]['type'])) {
      foreach ($filter as $value) {
        $has_value = TRUE;
        $filter_where[] = $value;
      }
      if ($has_value) {
        $query_filter[] = array(
          'terms' => array(
            $filters[$key]['elastic_key'] => $filter_where,
          ),
        );
      }
    }
    elseif ($filters[$key]['type'] == 'textfield' && !empty($filter) && is_scalar($filter)) {
      $query['bool']['must'][] = array(
        'match' => array(
          $filters[$key]['elastic_key'] => $filter,
        ),
      );
    }
  }
  if (empty($query)) {
    $query['match_all'] = (object) array();
  }
  $result = array(
    'must' => $query,
    'filter' => $query_filter,
  );
  return $result;
}