class AvailabilityAgentSizeFilter in Rooms - Drupal Booking for Hotels, B&Bs and Vacation Rentals 7
Filter by group_size and group_size_children.
Hierarchy
- class \AvailabilityAgentFilterBase implements AvailabilityAgentFilterInterface
- class \AvailabilityAgentSizeFilter
Expanded class hierarchy of AvailabilityAgentSizeFilter
File
- modules/
rooms_booking/ includes/ rooms_booking.availability_agent_filter.inc, line 160 - Rooms Booking agent filter interfaces and base implementations.
View source
class AvailabilityAgentSizeFilter extends AvailabilityAgentFilterBase {
/**
* {@inheritdoc}
*/
public function applyFilter() {
// Check parameters.
$group_size = isset($this->parameters['group_size']) ? $this->parameters['group_size'] : 0;
$group_size_children = isset($this->parameters['group_size_children']) ? $this->parameters['group_size_children'] : 0;
$unit_types = isset($this->parameters['unit_types']) ? $this->parameters['unit_types'] : NULL;
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'rooms_unit')
->propertyOrderBy('max_sleeps', 'ASC')
->propertyCondition('max_sleeps', $group_size, '>=')
->propertyCondition('max_children', $group_size_children, '>=')
->propertyCondition('bookable', 1);
// Add a unit type condition if this has been defined.
if ($unit_types != NULL) {
$query
->propertyCondition('type', $unit_types);
}
// Execute the query and collect the results.
$results = $query
->execute();
if (count($results) == 0) {
return ROOMS_SIZE_FAILURE;
}
if (empty($this->units)) {
return $results['rooms_unit'];
}
else {
// Computes the intersection of units and results.
return $this
->intersectUnits($results['rooms_unit']);
}
}
}