• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Entity/Calendar/CalendarItem.php
  • Класс: BitrixImV2EntityCalendarCalendarItem
  • Вызов: CalendarItem::initByGetListArray
static function initByGetListArray(array $calendarInfo): self
{
	$calendar = new static();

	if ($calendarInfo['DT_SKIP_TIME'] === 'Y')
	{
		$calendarSettings = CCalendar::GetSettings(['getDefaultForEmpty' => false]);
		$workTimeStart = explode('.', $calendarSettings['work_time_start']);
		$workTimeEnd = explode('.', $calendarSettings['work_time_end']);
		$dateFrom = new DateTime($calendarInfo['DATE_FROM']);
		$dateTo = new DateTime($calendarInfo['DATE_TO']);
		$dateFrom->setTime((int)$workTimeStart[0], (int)($workTimeStart[1] ?? 0));
		$dateTo->setTime((int)$workTimeEnd[0], (int)($workTimeEnd[1] ?? 0));
	}
	else
	{
		$dateFrom = DateTime::createFromTimestamp($calendarInfo['DATE_FROM_TS_UTC'] + (int)date('Z'));
		$dateTo = DateTime::createFromTimestamp($calendarInfo['DATE_TO_TS_UTC'] + (int)date('Z'));
	}
	$calendar
		->setId($calendarInfo['ID'])
		->setTitle($calendarInfo['NAME'])
		->setType($calendarInfo['CAL_TYPE'])
		->setOwnerId((int)$calendarInfo['OWNER_ID'])
		->setCreatedBy((int)$calendarInfo['CREATED_BY'])
		->setDateFrom($dateFrom)
		->setDateTo($dateTo)
		->setMembersIds(array_map('intval', array_column($calendarInfo['ATTENDEE_LIST'], 'id')))
	;

	return $calendar;
}