- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/userfield/resourcebooking.php
- Класс: BitrixCalendarUserFieldResourceBooking
- Вызов: ResourceBooking::getFormDateTimeSlots
static function getFormDateTimeSlots($fieldName = '', $options = [])
{
$from = (isset($options['from']) && $options['from'] instanceof Date) ? $options['from'] : new Date();
if (isset($options['to']) && ($options['to'] instanceof Date))
{
$to = $options['to'];
}
else
{
$to = clone $from;
$to->add($options['dateInterval'] ?? 'P5D');
}
$formData = BitrixCalendarUserFieldResourceBooking::getFillFormData(
$options['settingsData'],
[
'fieldName' => $fieldName,
'from' => $from,
'to' => $to
]
);
// Merge Accessibility
$accessibility = [];
if ($formData['fieldSettings']['USE_USERS'] === 'Y'
&& isset($options['settingsData']['users']['value']))
{
$selectedUser = $options['settingsData']['users']['value'];
if (
isset($formData['usersAccessibility'])
&& isset($formData['usersAccessibility'][$selectedUser])
)
{
$accessibility = array_merge($accessibility, $formData['usersAccessibility'][$selectedUser]);
}
}
if ($formData['fieldSettings']['USE_RESOURCES'] === 'Y'
&& isset($options['settingsData']['resources']['value']))
{
$selectedResource = $options['settingsData']['resources']['value'];
if (
isset($formData['resourcesAccessibility'])
&& isset($formData['resourcesAccessibility'][$selectedResource])
)
{
$accessibility = array_merge($accessibility, $formData['resourcesAccessibility'][$selectedResource]);
}
}
$result = null;
if ($selectedUser || $selectedResource)
{
$format = Date::convertFormatToPhp(FORMAT_DATETIME);
foreach ($accessibility as $i => $item)
{
$accessibility[$i]['fromTs'] = (new DateTime($item['dateFrom'], $format))->getTimestamp();
$accessibility[$i]['toTs'] = (new DateTime($item['dateTo'], $format))->getTimestamp();
}
$result = self::getAvailableTimeSlots($accessibility, [
'from' => $from,
'to' => $to,
'scale' => $options['settingsData']['time']['scale']
]);
}
return $result;
}