function availability_calendar_calendar_entity_property_filtered_availability_get in Availability Calendars 7.5
Entity property getter callback for the 'filtered availability' property.
The filtered availability equals the availability but represented in a format optimised for the search API.
Parameters
object $entity: param array $options param string $property_name param string $entity_type param array $property_info
Return value
array|null
Throws
\Exception
1 string reference to 'availability_calendar_calendar_entity_property_filtered_availability_get'
File
- ./
availability_calendar.entity.inc, line 178 - Contains Entity API and Search API hooks and callbacks.
Code
function availability_calendar_calendar_entity_property_filtered_availability_get($entity) {
module_load_include('inc', 'availability_calendar');
$cid = $entity->cid;
$from = new DateTime();
$to = new DateTime();
$months_to_index = variable_get('availability_calendar_months_to_index', 13);
$to
->add(new DateInterval("P{$months_to_index}M"));
$default_state = availability_calendar_get_field_setting('default_state');
if ($default_state === NULL) {
// We could use info from the field filter, but as we have no idea of that
// context, we just walk through all fields. Performance hit should be
// minimal in "normal" set-ups.
$field = availability_calendar_get_referring_field($cid);
if (!empty($field)) {
$field_info = field_info_field($field);
$default_state = $field_info['settings']['default_state'];
}
}
$availability = availability_calendar_get_availability($cid, $from, $to, $default_state);
$non_available_states = availability_calendar_get_states(FALSE);
$result = array();
foreach ($availability as $date => $sid) {
if (array_key_exists($sid, $non_available_states)) {
$timestamp = new DateTime($date);
$timestamp = (int) $timestamp
->format('U');
$result[] = $timestamp;
}
}
return $result;
}