• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/calendar.php
  • Класс: BitrixTasksIntegrationCalendar
  • Вызов: Calendar::getWorkSettings
static function getWorkSettings(): array
{
	$workSettings = static::getDefaultWorkSettings();

	if (static::includeModule())
	{
		$calendarSettings = static::getSettings();

		if (is_array($calendarSettings['week_holidays']))
		{
			$workSettings['WEEKEND'] = $calendarSettings['week_holidays'];
		}
		if ((string)$calendarSettings['year_holidays'] !== '')
		{
			$holidays = explode(',', $calendarSettings['year_holidays']);
			if (is_array($holidays) && !empty($holidays))
			{
				foreach ($holidays as $day)
				{
					$day = trim($day);
					[$day, $month] = explode('.', $day);
					$day = (int)$day;
					$month = (int)$month;

					if ($day && $month)
					{
						$workSettings['HOLIDAYS'][] = [
							'M' => $month,
							'D' => $day,
						];
					}
				}
			}
		}

		$time = explode('.', (string)$calendarSettings['work_time_start']);
		if (!isset($time[0]))
		{
			$time[0] = 0;
		}
		if (!isset($time[1]))
		{
			$time[1] = 0;
		}
		if ((int)$time[0])
		{
			$workSettings['HOURS']['START']['H'] = (int)$time[0];
		}
		if ((int)$time[1])
		{
			$workSettings['HOURS']['START']['M'] = (int)$time[1];
		}

		$time = explode('.', (string)$calendarSettings['work_time_end']);
		if (!isset($time[0]))
		{
			$time[0] = 0;
		}
		if (!isset($time[1]))
		{
			$time[1] = 0;
		}
		if ((int)$time[0])
		{
			$workSettings['HOURS']['END']['H'] = (int)$time[0];
		}
		if ((int)$time[1])
		{
			$workSettings['HOURS']['END']['M'] = (int)$time[1];
		}
	}

	$deadlineTimeSettings = CUserOptions::getOption(
		'tasks.bx.calendar.deadline',
		'time_visibility',
		[]
	);
	$workSettings['deadlineTimeVisibility'] = (
		(isset($deadlineTimeSettings['visibility']) && $deadlineTimeSettings['visibility'] === 'Y') ? 'Y' : 'N'
	);

	return [
		'WORK_SETTINGS' => $workSettings,
		'WORK_TIME' => $workSettings['HOURS'],
	];
}