function _date_views_argument_filter in Date 5.2
Views values vary depending on the op: $op = 'filter' $argtype = array of arg settings $query = views object $arg = argument value
File
- date/
date_views.inc, line 396
Code
function _date_views_argument_filter(&$query, $argtype, $arg, $field_type) {
$field_name = _date_views_arg_field_name($argtype['type']);
$field = content_fields($field_name);
$db_info = content_database_info($field);
$value = substr($field_name, -1) == 2 ? 'value2' : 'value';
$value = $db_info['columns'][$value]['column'];
$table = 'node_data_' . $field['field_name'];
$sql_field = "{$table}.{$value}";
$query->sql_field_name = $sql_field;
$date_handler = new date_sql_handler();
$date_handler
->construct($field_type);
$range = $date_handler
->arg_range($arg);
$date_handler->granularity = $date_handler
->arg_granularity($arg);
date_views_set_timezone($date_handler, $field);
$query->date_handler = $date_handler;
$query
->ensure_table($table);
$query
->add_field($value, $table);
if ($field['tz_handling'] == 'date') {
$query
->add_field($db_info['columns']['timezone']['column'], $table);
$query
->add_field($db_info['columns']['offset']['column'], $table);
}
if ($date_handler->granularity != 'week') {
$format = $date_handler
->views_formats($date_handler->granularity, 'sql');
$query
->add_where($date_handler
->sql_where_format($format, $sql_field, '>=', date_format($range[0], $format)));
$query
->add_where($date_handler
->sql_where_format($format, $sql_field, '<=', date_format($range[1], $format)));
}
else {
$query
->add_where($date_handler
->sql_where_date('DATE', $sql_field, ">=", date_format($range[0], DATE_FORMAT_DATETIME)));
$query
->add_where($date_handler
->sql_where_date('DATE', $sql_field, "<", date_format($range[1], DATE_FORMAT_DATETIME)));
}
}