1 views_handler_filter_fields_compare.inc views_handler_filter_fields_compare::query()

Overrides views_handler_filter#query().

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

Overrides views_handler_filter::query

File

core/modules/views/handlers/views_handler_filter_fields_compare.inc, line 99
Definition of views_handler_filter_fields_compare.

Class

views_handler_filter_fields_compare

Code

function query() {
  $left = $this->options['left_field'];
  $right = $this->options['right_field'];

  // 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], $field_handlers[$right])) {
    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);

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

  // Build piece of SQL.
  $snippet =
    $left_table_alias . '.' . $left_handler->real_field .
    ' ' . $this->options['operator'] . ' ' .
    $right_table_alias . '.' . $right_handler->real_field;

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