• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/util/calendar.php
  • Класс: Bitrix\Tasks\Util\Calendar
  • Вызов: Calendar::setSettings
public function setSettings(array $settings)
{
	if(is_array($settings['HOURS']) && !empty($settings['HOURS']))
	{
		$h = $settings['HOURS'];

		$this->workTime = array(
			// currently one interval, no time for lunch
			array(
				'start' => 	array(
					'hours' => (int) $h['START']['H'],
					'minutes' => (int) $h['START']['M'],
					'time' => ((int) $h['START']['H']) * 60 +  ((int) $h['START']['M'])
				),
				'end' => 	array(
					'hours' => (int) $h['END']['H'],
					'minutes' => (int) $h['END']['M'],
					'time' => ((int) $h['END']['H']) * 60 +  ((int) $h['START']['M'])
				)
			)
		);
	}

	// holidays
	if(is_array($settings['HOLIDAYS']))
	{
		foreach($settings['HOLIDAYS'] as $day)
		{
			$this->holidays[(intval($day['M']) - 1).'_'.intval($day['D'])] = true;
		}
	}

	// week settings

	$dayMap = array(
		'MO' => 1,
		'TU' => 2,
		'WE' => 3,
		'TH' => 4,
		'FR' => 5,
		'SA' => 6,
		'SU' => 0,
	);

	$this->weekEnds = array();
	if(is_array($settings['WEEKEND']))
	{
		foreach($settings['WEEKEND'] as $day)
		{
			$this->weekEnds[$dayMap[$day]] = true;
		}
	}
	if(count($this->weekEnds) == 7) // wtf? the entire week is a one big weekend? fall back to "safe defaults"
	{
		$this->weekEnds = array($dayMap['SA'] => true, $dayMap['SU'] => true);
	}

	$this->weekStart = $dayMap[$settings['WEEK_START']];

	/*
	print_r('WeekEnds');
	print_r($this->weekEnds);
	print_r('weekStart');
	print_r($this->weekStart);
	print_r('holidays');
	print_r($this->holidays);
	print_r('worktime');
	print_r($this->workTime);
	*/
}