You are here

function views_handler_filter_date::op_between in Views (for Drupal 7) 6.3

Same name and namespace in other branches
  1. 6.2 handlers/views_handler_filter_date.inc \views_handler_filter_date::op_between()
  2. 7.3 handlers/views_handler_filter_date.inc \views_handler_filter_date::op_between()

Overrides views_handler_filter_numeric::op_between

File

handlers/views_handler_filter_date.inc, line 127

Class

views_handler_filter_date
Filter to handle dates stored as a timestamp.

Code

function op_between($field) {
  if ($this->operator == 'between') {
    $a = intval(strtotime($this->value['min'], 0));
    $b = intval(strtotime($this->value['max'], 0));
  }
  else {
    $a = intval(strtotime($this->value['max'], 0));
    $b = intval(strtotime($this->value['min'], 0));
  }
  if ($this->value['type'] == 'offset') {
    $a = '***CURRENT_TIME***' . sprintf('%+d', $a);

    // keep sign
    $b = '***CURRENT_TIME***' . sprintf('%+d', $b);

    // keep sign
  }

  // %s is safe here because strtotime scrubbed the input and we might
  // have a string if using offset.
  if ($this->operator == 'between') {
    $this->query
      ->add_where($this->options['group'], "{$field} >= %s", $a);
    $this->query
      ->add_where($this->options['group'], "{$field} <= %s", $b);
  }
  else {
    $this->query
      ->add_where($this->options['group'], "{$field} >= %s OR {$field} <= %s", array(
      $a,
      $b,
    ));
  }
}