You are here

public function apachesolr_views_handler_filter_date::op_simple in Apache Solr Views 7

Add the date filter to the query parameters.

Overrides views_handler_filter_date::op_simple

File

handlers/apachesolr_views_handler_filter_date.inc, line 27
Date filter handler for Apache Solr Views.

Class

apachesolr_views_handler_filter_date

Code

public function op_simple($field) {
  $value = intval(strtotime($this->value['value']));
  $value = new DateObject($value);
  $has_time = $value
    ->hasTime();
  $value_format = $value
    ->format(APACHESOLR_VIEWS_DATE_ISO8601);
  switch ($this->operator) {
    case '<':
    case '<=':
      if ($has_time) {
        $value = '[* TO ' . $value_format . ']';
      }
      else {
        $value = '[* TO ' . $value_format . '/DAY+1DAY]';
      }
      break;
    case '>':
    case '>=':
      if ($has_time) {
        $value = '[' . $value_format . ' TO *]';
      }
      else {
        $value = '[' . $value_format . '/DAY TO *]';
      }
      break;
    case '!=':
      if ($has_time) {
        $value = '[* TO ' . $value_format . '-1SECOND] OR [' . $value_format . '+1SECOND TO *]';
      }
      else {
        $value = '[* TO ' . $value_format . '/DAY-1DAY] OR [' . $value_format . '/DAY+1DAY TO *]';
      }
      break;
    case '=':
    default:
      if ($has_time) {
        $value = '[' . $value_format . ' TO ' . $value_format . ']';
      }
      else {
        $value = '[' . $value_format . '/DAY TO ' . $value_format . '/DAY+1DAY]';
      }
      break;
  }
  $this->query
    ->add_where($this->options['group'], $this->real_field, $value, $this->operator);
}