You are here

public function availability_calendar_handler_argument_availability::query in Availability Calendars 7.5

Same name and namespace in other branches
  1. 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();
}