• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/copy/implement/task.php
  • Класс: BitrixTasksCopyImplementTask
  • Вызов: Task::getRecountedProjectDeadline
private function getRecountedProjectDeadline($currentFieldDate, $taskCreatedDate)
{
	try
	{
		$projectTerm = $this->projectTerm;

		$startPoint = $projectTerm["start_point"];
		$startPointTime = TasksDateTime::createFrom($startPoint);
		if (!$startPointTime)
		{
			$startPointTime = new TasksDateTime();
		}

		$oldStartPoint = ($projectTerm["old_start_point"] ? $projectTerm["old_start_point"] : $taskCreatedDate);
		$oldStartPointTime = TasksDateTime::createFrom($oldStartPoint);
		if (!$oldStartPointTime)
		{
			$oldStartPointTime = TasksDateTime::createFrom($taskCreatedDate);
		}
		if (!$oldStartPointTime)
		{
			$oldStartPointTime = new TasksDateTime();
		}

		$oldStartPointTime->setTime(0, 0);

		$currentFieldDateTime = TasksDateTime::createFrom($currentFieldDate);

		$interval = $currentFieldDateTime->getTimestamp() - $oldStartPointTime->getTimestamp();
		if ($interval < 0)
		{
			return '';
		}
		$startPointTime->add('PT' . $interval . 'S');

		$phpDateTimeFormat = DateTime::convertFormatToPhp(FORMAT_DATETIME);
		$deadline = $startPointTime->format($phpDateTimeFormat);

		$endPoint = $projectTerm["end_point"];
		if ($endPoint)
		{
			$deadlineTime = TasksDateTime::createFrom($deadline);
			if (!$deadlineTime)
			{
				$deadlineTime = new TasksDateTime();
			}

			$endPointTime = TasksDateTime::createFrom($endPoint);
			if (!$endPointTime)
			{
				$endPointTime = new TasksDateTime();
			}

			$endPointTime->add("PT86399S");
			if ($deadlineTime->getTimestamp() > $endPointTime->getTimestamp())
			{
				$phpDateFormat = DateTime::convertFormatToPhp(FORMAT_DATE);
				$deadline = $endPointTime->format($phpDateFormat);
			}
		}

		return $deadline;
	}
	catch (Exception $exception)
	{
		$this->result->addError(new Error($exception->getMessage(), self::TASK_COPY_ERROR));
		return "";
	}
}