You are here

function views_handler_filter_field_variable_compare::query in Views Variable Field 7

Overrides views_handler_filter#query().

Build extra condition from existing fields (from existing joins).

Overrides views_handler_filter::query

File

includes/views/views_handler_filter_field_variable_compare.inc, line 110
Definition of views_handler_filter_field_variable_compare.

Class

views_handler_filter_field_variable_compare
A handler to filter a view using field against system variable comparison.

Code

function query() {
  $left = $this->options['left_field'];
  $variable = variable_get($this->options['variable'], NULL);
  $variable = is_array($variable) || is_object($variable) ? serialize($variable) : $variable;

  // Get all existing field handlers.
  $field_handlers = $this->view->display_handler
    ->get_handlers('field');

  // Make sure the selected fields still exist.
  if (!isset($field_handlers[$left], $variable)) {
    return;
  }

  // Get the left table and field.
  $left_handler = $field_handlers[$left];
  $left_handler
    ->set_relationship();
  $left_table_alias = $this->query
    ->ensure_table($left_handler->table, $left_handler->relationship);

  // Build piece of SQL.
  $snippet = $left_table_alias . '.' . $left_handler->real_field . ' ' . $this->options['operator'] . " '" . db_like($variable) . "'";
  $this->query
    ->add_where($this->options['group'], $left_table_alias . '.' . $left_handler->real_field, db_like($variable), $this->options['operator']);

  //$this->query->add_where_expression($this->options['group'], $snippet);
}