You are here

function mvf_handler_filter_mvf::op_simple in Measured Value Field 7

Overrides views_handler_filter_numeric::op_simple

File

views/mvf_handler_filter_mvf.inc, line 214

Class

mvf_handler_filter_mvf
Base Views Filter Handler for field types defined in MVF module.

Code

function op_simple($field) {
  $field = array(
    'value' => $this->table_alias . '.' . $this->definition['field_name'] . '_' . mvf_subfield_to_column('value'),
    'unit' => $this->table_alias . '.' . $this->definition['field_name'] . '_' . mvf_subfield_to_column('unit'),
  );
  $measure = array_pop($this->options['field_definition']['settings']['unit']['handler_settings']['target_bundles']);
  $from_unit = units_unit_load($this->value['value'][mvf_subfield_to_column('unit')]);
  $where = db_or();
  foreach (units_unit_by_measure_load_multiple($measure) as $to_unit) {
    $converted_value = units_convert($this->value['value'][mvf_subfield_to_column('value')], $from_unit->machine_name, $to_unit->machine_name);
    $unit_id = entity_extract_ids('units_unit', $to_unit);
    $unit_id = array_shift($unit_id);
    $where
      ->condition(db_and()
      ->condition($field['value'], $converted_value, $this->operator)
      ->condition($field['unit'], $unit_id));
  }
  $this->query
    ->add_where($this->options['group'], $where);
}