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);
}