protected function AvailabilityAgent::applyAvailabilityFilter in Rooms - Drupal Booking for Hotels, B&Bs and Vacation Rentals 7
Applies the availability filter against a set of bookable units.
Parameters
array $units: Set of bookable units to filter.
int $adults: Number of adults.
int $children: Number of children.
bool $confirmed: Whether include confirmed states or not.
Return value
array|int bookable units remaining after the filter, error code otherwise.
1 call to AvailabilityAgent::applyAvailabilityFilter()
- AvailabilityAgent::checkAvailability in modules/
rooms_booking/ includes/ rooms_booking.availability_agent.inc - Checks the availability.
File
- modules/
rooms_booking/ includes/ rooms_booking.availability_agent.inc, line 301 - Contains the AvailabilityAgent.
Class
- AvailabilityAgent
- An AvailabilityAgent provides access to the availability functionality of Rooms and lets you query for availability, get pricing information and create products that can be bought.
Code
protected function applyAvailabilityFilter($units = array(), $adults = 0, $children = 0, $confirmed = FALSE) {
// Apply AvailabilityAgentSizeFilter.
$av_sizefilter = new AvailabilityAgentSizeFilter($units, array(
'group_size' => $adults,
'group_size_children' => $children,
'unit_types' => $this->unit_types,
));
$units = $av_sizefilter
->applyFilter();
if ($units == ROOMS_SIZE_FAILURE) {
return array();
}
// Apply AvailabilityAgentSingleUnitFilter.
$av_singleunitfilter = new AvailabilityAgentSingleUnitFilter($units, array(
'start_date' => $this->start_date,
'end_date' => $this->end_date,
));
$units = $av_singleunitfilter
->applyFilter();
// Apply AvailabilityAgentDateFilter.
$av_datefilter = new AvailabilityAgentDateFilter($units, array(
'start_date' => $this->start_date,
'end_date' => $this->end_date,
'valid_states' => $this->valid_states,
'confirmed' => $confirmed,
'revert_valid_states' => $this->revert_valid_states,
));
$units = $av_datefilter
->applyFilter();
if (empty($units)) {
return array();
}
// Apply AvailabilityAgentCommerceFilter.
if (variable_get('rooms_use_commerce_filter', '1')) {
$av_commercefilter = new AvailabilityAgentCommerceFilter($units, array(
'start_date' => $this->start_date,
'end_date' => $this->end_date,
));
$units = $av_commercefilter
->applyFilter();
}
ctools_include('plugins');
$filters = ctools_get_plugins('rooms_booking', 'availabilityagent_filter');
foreach ($filters as $filter) {
$class = ctools_plugin_get_class($filter, 'handler');
$object_filter = new $class($units, array(
'start_date' => $this->start_date,
'end_date' => $this->end_date,
'group_size' => $adults,
'group_size_children' => $children,
'unit_types' => $this->unit_types,
'valid_states' => $this->valid_states,
'confirmed' => $confirmed,
));
$units = $object_filter
->applyFilter();
}
return $units;
}