- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/util/scheduler.php
- Класс: Bitrix\Tasks\Util\is
- Вызов: is::matchWorkingTime
protected function matchWorkingTime($taskId, DateTime $startDate = null, Datetime $endDate = null, $duration = null) { $task = $this->taskPool[$taskId]; if ($this->taskPool[$taskId]['MATCH_WORK_TIME'] != 'Y') { /* print_r('Actual moving '.$taskId.' to:'.PHP_EOL); print_r($task['START_DATE_PLAN']->getInfoGmt().PHP_EOL); print_r($task['END_DATE_PLAN']->getInfoGmt().PHP_EOL); */ return; // do nothing, dates are okay already } else { if ($startDate && $endDate) { $this->correctWorkTime($taskId, $startDate, $endDate, $duration); } elseif($startDate) { $task->setStartDatePlanUserTimeGmt($this->calendar->getClosestWorkTime($startDate, true)->toStringGmt()); $start = $task->getStartDatePlanGmt(true); $end = $task->getEndDatePlanGmt(); if ($start->checkGT($end)) { $task->setEndDatePlanUserTimeGmt($this->calendar->calculateEndDate($startDate, $end->getTimestamp() - $startDate->getTimestamp())->toStringGmt()); } } else if ($endDate) { $task->setEndDatePlanUserTimeGmt($this->calendar->getClosestWorkTime($endDate, false)->toStringGmt()); $start = $task->getStartDatePlanGmt(true); $end = $task->getEndDatePlanGmt(); if ($start->checkGT($end)) { $task->setStartDatePlanUserTimeGmt($this->calendar->calculateStartDate($end, $endDate->getTimestamp() - $start->getTimestamp())->toStringGmt()); } } } }