1 call to _views_view_build_filters()
_views_build_query in ./views_query.inc

File

./views_query.inc, line 76

Code

function _views_view_build_filters(&$query, &$view, $exposed_filter_values) {
  $filters = _views_get_filters();
  $view->used_filters = array();
  foreach ($view->filter as $i => $filter) {
    $filterinfo = $filters[$filter['field']];

    // shortcut
    if (!$filterinfo['field']) {
      $fieldbits = explode('.', $filter['field']);
      $filterinfo['field'] = $fieldbits[1];
    }
    foreach ($view->exposed_filter as $count => $expose) {
      if ($filter['id'] == $expose['id']) {
        $id = $expose['id'];
        if (isset($view->exposed_filter_offset)) {
          $count += $view->exposed_filter_offset;
        }
        if (!$expose['operator'] && $exposed_filter_values[$count]['op']) {
          $filter['operator'] = check_plain($exposed_filter_values[$count]['op']);
          $view->used_filters["op{$count}"] = $exposed_filter_values[$count]['op'];
        }
        if ($expose['optional']) {
          if ((!isset($exposed_filter_values[$count]['filter']) || $exposed_filter_values[$count]['filter'] == '') && !$expose['is_default']) {
            continue 2;

            // skip
          }
          if ($exposed_filter_values[$count]['filter'] == '**ALL**' || is_array($exposed_filter_values[$count]['filter']) && in_array('**ALL**', $exposed_filter_values[$count]['filter'])) {
            $view->used_filters["filter{$count}"] = $exposed_filter_values[$count]['filter'];
            continue 2;

            // skip this filter entirely.
          }
        }
        if (isset($exposed_filter_values[$count]['filter']) && $exposed_filter_values[$count]['filter'] != '') {
          $value = $exposed_filter_values[$count]['filter'];
          if ($filterinfo['value-type'] == 'array' && !is_array($value)) {
            $value = array(
              $value,
            );
          }
          $filter['value'] = $value;
          $view->used_filters["filter{$count}"] = $exposed_filter_values[$count]['filter'];
        }
        break;
      }
    }
    $replace = array(
      '>' => '>',
      '&lt;' => '<',
    );
    $filter['operator'] = strtr($filter['operator'], $replace);
    if (!function_exists($filterinfo['handler'])) {
      $filterinfo['handler'] = 'views_handler_filter_default';
    }
    $filterinfo['handler']('handler', $filter, $filterinfo, $query);
  }
}