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);
}