• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/kanban/timeline.php
  • Класс: BitrixTasksKanbanTimeLineTable
  • Вызов: TimeLineTable::getStages
static function getStages()
{
	static $timeLineStages = [];

	if ($timeLineStages)
	{
		return $timeLineStages;
	}

	$timeClient = self::getDateTimeClient();
	$dateClient1 = self::getDateClient();
	$dateClient2 = $dateClient1 . ' 23:59:59';

	$format = self::getDatePhpFormat();
	$timeClientTS = MakeTimeStamp($timeClient);
	$dateClient31TS = MakeTimeStamp($dateClient1);
	$dateClient2TS = MakeTimeStamp($dateClient2);
	$currentWeekDay = date('N', $timeClientTS);

	$timeLineStages = [
		// overdue
		'PERIOD1' => [
			'COLOR' => 'FF5752',
			'FILTER' => [
				'<=DEADLINE' => date($format, $timeClientTS)
			],
			'UPDATE' => [],
			'UPDATE_ACCESS' => false
		],
		// today
		'PERIOD2' => [
			'COLOR' => '9DCF00',
			'FILTER' => [
				'>DEADLINE' => date($format, $timeClientTS),
				'<=DEADLINE' => date($format, $dateClient2TS)
			],
			'UPDATE' => [
				'DEADLINE' => self::getClosestWorkHour($dateClient2TS)
			],
			'UPDATE_ACCESS' => CTaskItem::ACTION_CHANGE_DEADLINE
		],
		// on this week
		'PERIOD3' => [
			'COLOR' => '2FC6F6',
			'FILTER' => [
				'>DEADLINE' => date($format, $dateClient2TS),
				'<=DEADLINE' => date($format, ($endTimeWeek = $dateClient2TS + (7 - $currentWeekDay) * 86400))
			],
			'UPDATE' => [
				'DEADLINE' => self::getClosestWorkHour($endTimeWeek)
			],
			'UPDATE_ACCESS' => CTaskItem::ACTION_CHANGE_DEADLINE
		],
		// on next week
		'PERIOD4' => [
			'COLOR' => '55D0E0',
			'FILTER' => [
				'>DEADLINE' => date($format, $endTimeWeek),
				'<=DEADLINE' => date($format, ($endTimeNextWeek = $endTimeWeek + 7 * 86400))
			],
			'UPDATE' => [
				'DEADLINE' => self::getClosestWorkHour($endTimeNextWeek)
			],
			'UPDATE_ACCESS' => CTaskItem::ACTION_CHANGE_DEADLINE
		],
		// without deadline
		'PERIOD5' => [
			'COLOR' => 'A8ADB4',
			'FILTER' => [
				'DEADLINE' => false
			],
			'UPDATE' => [
				'DEADLINE' => false
			],
			'UPDATE_ACCESS' => CTaskItem::ACTION_CHANGE_DEADLINE
		],
		// over next week
		'PERIOD6' => [
			'COLOR' => '468EE5',
			'FILTER' => [
				'>DEADLINE' => date($format, $endTimeNextWeek),
			],
			'UPDATE' => [
				'DEADLINE' => self::getClosestWorkHour($endTimeNextWeek + 7 * 86400)
			],
			'UPDATE_ACCESS' => CTaskItem::ACTION_CHANGE_DEADLINE
		],
	];

	return $timeLineStages;
}