• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman.php
  • Класс: CTimeMan
  • Вызов: CTimeMan::GetTaskTime
static function GetTaskTime($arParams)
{
	if ($arParams['EXPIRED_DATE'] > 0)
	{
		$arParams['EXPIRED_DATE'] += CTimeMan::RemoveHoursTS($arParams['DATE_START']);
	}

	if (CModule::IncludeModule('tasks'))
	{
		$time = 0;

		$arFilter = ['TASK_ID' => $arParams['TASK_ID'], 'USER_ID' => $arParams['USER_ID'], '>=CREATED_DATE' => ConvertTimeStamp($arParams['DATE_START'], 'FULL')];
		if ($arParams['DATE_FINISH'])
		{
			$arFilter[' 'ASC'], $arFilter);

		while ($arRes = $dbRes->Fetch())
		{
			self::$arWasElapedCache[$arRes['TASK_ID']] = true;
			$time += $arRes['MINUTES'] * 60;
		}

		if ($time == 0)
		{
			$arFilter['FIELD'] = 'STATUS';

			$dbRes = CTaskLog::GetList(['CREATED_DATE' => 'ASC'], $arFilter);

			$current_time = $arParams['DATE_START'];
			$last_status = $arParams['TASK_STATUS'];
			while ($arRes = $dbRes->Fetch())
			{
				if ($arRes['FROM_VALUE'] == 3)
				{
					$time += MakeTimeStamp($arRes['CREATED_DATE']) - $current_time;
				}
				elseif ($arRes['TO_VALUE'] == 3)
				{
					$current_time = MakeTimeStamp($arRes['CREATED_DATE']);
				}

				$last_status = $arRes['TO_VALUE'];
			}

			if ($last_status == 3)
			{
				if ($arParams['DATE_FINISH'])
				{
					$time += $arParams['DATE_FINISH'] - $current_time;
				}
				elseif ($arParams['EXPIRED_DATE'])
				{
					$time += $arParams['EXPIRED_DATE'] - $current_time;
				}
				else
				{
					$time += time() + CTimeZone::GetOffset() - $current_time;
				}
			}
		}

		return $time;
	}

	return false;
}