function timefield_handler_filter_timefield_duration::query in Timefield 7
Add this filter to the query.
Due to the nature of fapi, the value and the operator have an unintended level of indirection. You will find them in $this->operator and $this->value respectively.
Overrides views_handler_filter_numeric::query
File
- views/
timefield_handler_filter_timefield_duration.inc, line 53 - Contains the duration filter handler.
Class
- timefield_handler_filter_timefield_duration
- @file Contains the duration filter handler.
Code
function query() {
$this
->ensure_my_table();
// Get the Field API field name from the definition.
$field_name = $this->definition['field_name'];
$formula = $field_name . '_value2' . ' - ' . $field_name . '_value';
switch ($this->operator) {
case 'between':
$value_min = empty($this->value['min']) ? 0 : $this->value['min'];
$value_max = empty($this->value['max']) ? 0 : $this->value['max'];
$op = $formula . ' BETWEEN :value_min AND :value_max';
$this->query
->add_where_expression($this->options['group'], $op, array(
':value_min' => $this
->filterSelectionToSeconds($value_min),
':value_max' => $this
->filterSelectionToSeconds($value_max),
));
break;
case 'not between':
$value_min = empty($this->value['min']) ? 0 : $this->value['min'];
$value_max = empty($this->value['max']) ? 0 : $this->value['max'];
$op = $formula . ' BETWEEN :value_min AND :value_max';
$this->query
->add_where_expression($this->options['group'], $formula . ' <= :value_min', array(
':value_min' => $this
->filterSelectionToSeconds($value_min),
));
$this->query
->add_where_expression($this->options['group'], $formula . ' >= :value_max', array(
':value_max' => $this
->filterSelectionToSeconds($value_max),
));
break;
default:
$value = empty($this->value['value']) ? 0 : $this->value['value'];
$op = $formula . ' ' . $this->operator . ' :value';
$this->query
->add_where_expression($this->options['group'], $op, array(
':value' => $this
->filterSelectionToSeconds($value),
));
break;
}
}