diff --git a/handlers/views_handler_filter_fields_compare.inc b/handlers/views_handler_filter_fields_compare.inc index fe94ce7..f8b368e 100644 --- a/handlers/views_handler_filter_fields_compare.inc +++ b/handlers/views_handler_filter_fields_compare.inc @@ -51,7 +51,14 @@ class views_handler_filter_fields_compare extends views_handler_filter { $field_handlers = $this->view->display_handler->get_handlers('field'); foreach ($field_handlers as $field => $handler) { if ($handler->table != 'views') { - $options[$field] = $handler->ui_name(); + $options['field:' . $field] = $handler->ui_name(); + } + } + + $argument_handlers = $this->view->display_handler->get_handlers('argument'); + foreach ($argument_handlers as $argument => $handler) { + if ($handler->table != 'views') { + $options['argument:' . $argument] = 'Argument: ' . $handler->ui_name(); } } @@ -98,24 +105,25 @@ class views_handler_filter_fields_compare extends views_handler_filter { * Build extra condition from existing fields (from existing joins). */ function query() { - $left = $this->options['left_field']; - $right = $this->options['right_field']; + list($left_type, $left_field) = explode(':', $this->options['left_field'], 2); + list($right_type, $right_field) = explode(':', $this->options['right_field'], 2); // Get all existing field handlers. - $field_handlers = $this->view->display_handler->get_handlers('field'); + $handlers['field'] = $this->view->display_handler->get_handlers('field'); + $handlers['argument'] = $this->view->display_handler->get_handlers('argument'); // Make sure the selected fields still exist. - if (!isset($field_handlers[$left], $field_handlers[$right])) { + if (!isset($handlers[$left_type][$left_field], $handlers[$right_type][$right_field])) { return; } // Get the left table and field. - $left_handler = $field_handlers[$left]; + $left_handler = $handlers[$left_type][$left_field]; $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 = $handlers[$right_type][$right_field]; $right_handler->set_relationship(); $right_table_alias = $this->query->ensure_table($right_handler->table, $right_handler->relationship);