You are here

private function contextual_range_filter_handler_argument_date_range::set_formula in Views Contextual Range Filter 7

Sets the SQL formula to use for this contextual filter handler.

Parameters

string $offset: The name of a field that holds the timezone offset or NULL.

See also

views/modules/node/views_handler_argument_dates_various.inc

1 call to contextual_range_filter_handler_argument_date_range::set_formula()
contextual_range_filter_handler_argument_date_range::query in views/contextual_range_filter_handler_argument_date_range.inc
Prepare the range query WHERE-clause.

File

views/contextual_range_filter_handler_argument_date_range.inc, line 162
Definition of contextual_filter_range_handler_argument_numeric_range.

Class

contextual_range_filter_handler_argument_date_range
Argument handler for arguments that are date ranges.

Code

private function set_formula($offset = NULL) {
  $field_type = 'int';
  if (!empty($this->definition['is date'])) {

    // Date module field comes in three flavours.
    // Date (default) is stored on the database like: Y-m-d H:i:s
    // Date (ISO format) is stored like so: Y-m-dTH:i:s (T replaces space)
    // Date (Unix timestamp) is stored as an int, e.g., 1389789000
    $this->arg_format = 'Y-m-d H:i:s';
    $field_info = field_info_field($this->definition['field_name']);
    $field_type = $field_info['type'] == 'datestamp' ? 'int' : 'datetime';
  }
  elseif (isset($this->field)) {

    // Suspect node property. Can only tell heuristically via $this->field...
    switch ($this->field) {
      case 'created_year':
      case 'changed_year':
        $this->arg_format = 'Y';
        $extract_type = 'YEAR';
        break;
      case 'created_year_month':
      case 'changed_year_month':
        $this->format = 'F Y';
        $this->arg_format = 'Ym';
        break;
      case 'created_month':
      case 'changed_month':
        $this->format = 'F';
        $this->arg_format = 'm';
        $extract_type = 'MONTH';
        break;
      case 'created_day':
      case 'changed_day':
        $this->format = 'j';
        $this->arg_format = 'd';
        $extract_type = 'DAY';
        break;
      case 'created_week':
      case 'changed_week':
        $this->arg_format = 'w';
        $extract_type = 'WEEK';
        break;

      // created_fulldate
      // changed_fulldate
      default:
        $this->format = 'F j, Y';
        $this->arg_format = 'Ymd';
    }
  }
  $field = isset($this->real_field) ? $this->real_field : $this->name_field;
  return $this->formula = empty($extract_type) ? views_date_sql_format($this->arg_format, "***table***.{$field}", $field_type, $offset) : views_date_sql_extract($extract_type, "***table***.{$field}", $field_type, $offset);
}