public function availability_calendar_handler_argument_availability::query in Availability Calendars 7.5
Same name and namespace in other branches
- 7.4 views/availability_calendar_handler_argument_availability.inc \availability_calendar_handler_argument_availability::query()
Inject a test for valid date range before the regular query. Override the parent query to be able to control the $group.
Overrides views_handler_argument_formula::query
File
- views/
availability_calendar_handler_argument_availability.inc, line 46
Class
- availability_calendar_handler_argument_availability
- Defines a contextual filter to filter on availability.
Code
public function query($group_by = FALSE) {
if (empty($this->argument)) {
return;
}
module_load_include('inc', 'availability_calendar');
if (module_exists('date_api')) {
$this->date_parts = $this->date_handler
->arg_parts($this->argument);
$this->min_date = new DateTime($this->date_handler
->complete_date($this->date_parts[0]['date'], 'min'));
$this->max_date = count($this->date_parts) > 1 ? new DateTime($this->date_handler
->complete_date($this->date_parts[1]['date'], 'min')) : clone $this->min_date;
}
else {
$this->date_parts = explode('--', $this->argument);
$this->min_date = availability_calendar_parse_iso_date($this->date_parts[0]);
$this->max_date = count($this->date_parts) > 1 ? availability_calendar_parse_iso_date($this->date_parts[1]) : clone $this->min_date;
}
// Adjust end date if it is not inclusive and differs from the start date.
if (!empty($this->options['end_date_exclusive']) && $this->min_date < $this->max_date) {
$this->max_date
->modify('-1 day');
}
$this
->build_query();
}