- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskitem.php
- Класс: CTaskItem
- Вызов: CTaskItem::checkProjectDates
private function checkProjectDates($arTaskData, $arNewFields)
{
if (array_key_exists('GROUP_ID', $arNewFields) && (int)$arNewFields['GROUP_ID'] > 0)
{
$groupId = (int)$arNewFields['GROUP_ID'];
}
else
{
$groupId = (int)$arTaskData['GROUP_ID'];
}
if (!$groupId)
{
return;
}
if (CModule::includeModule('socialnetwork'))
{
$group = CSocNetGroup::getById($groupId);
if ($group && $group['PROJECT'] == 'Y' && ($group['PROJECT_DATE_START'] || $group['PROJECT_DATE_FINISH']))
{
$projectStartDate = DateTime::createFrom($group['PROJECT_DATE_START']);
$projectFinishDate = DateTime::createFrom($group['PROJECT_DATE_FINISH']);
if ($projectFinishDate)
{
$projectFinishDate->addSecond(86399); // + 23:59:59
}
$deadline = DateTime::createFrom($arTaskData['DEADLINE']);
$endDatePlan = DateTime::createFrom($arTaskData['END_DATE_PLAN']);
$startDatePlan = DateTime::createFrom($arTaskData['START_DATE_PLAN']);
if (isset($arNewFields['DEADLINE']) && $arNewFields['DEADLINE'])
{
$deadline = DateTime::createFrom($arNewFields['DEADLINE']);
}
if (isset($arNewFields['END_DATE_PLAN']) && $arNewFields['END_DATE_PLAN'])
{
$endDatePlan = DateTime::createFrom($arNewFields['END_DATE_PLAN']);
}
if (isset($arNewFields['START_DATE_PLAN']) && $arNewFields['START_DATE_PLAN'])
{
$startDatePlan = DateTime::createFrom($arNewFields['START_DATE_PLAN']);
}
if ($deadline && !$deadline->checkInRange($projectStartDate, $projectFinishDate))
{
$this->_errors[] = ["text" => GetMessage("TASKS_DEADLINE_OUT_OF_PROJECT_RANGE"), "id" => "ERROR_TASKS_OUT_OF_PROJECT_DATE"];
}
if ($endDatePlan && !$endDatePlan->checkInRange($projectStartDate, $projectFinishDate))
{
$this->_errors[] = ["text" => GetMessage("TASKS_PLAN_DATE_END_OUT_OF_PROJECT_RANGE"), "id" => "ERROR_TASKS_OUT_OF_PROJECT_DATE"];
}
if ($startDatePlan && !$startDatePlan->checkInRange($projectStartDate, $projectFinishDate))
{
$this->_errors[] = ["text" => GetMessage("TASKS_PLAN_DATE_START_OUT_OF_PROJECT_RANGE"), "id" => "ERROR_TASKS_OUT_OF_PROJECT_DATE"];
}
if (!empty($this->_errors))
{
static::throwExceptionVerbose($this->_errors);
}
}
}
}