- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskelapsed.php
- Класс: not
- Вызов: not::Delete
static function Delete($ID, $arParams = array())
{
global $DB;
$ID = intval($ID);
if ($ID < 1)
return false;
$executiveUserId = null;
if (isset($arParams['USER_ID']))
$executiveUserId = (int) $arParams['USER_ID'];
elseif ($userId = BitrixTasksUtilUser::getId())
$executiveUserId = $userId;
/** @noinspection PhpDeprecationInspection */
$rsRemovingLogItem = self::getByID($ID);
if ($rsRemovingLogItem && ($arRemovingLogItem = $rsRemovingLogItem->fetch()))
$taskId = $arRemovingLogItem['TASK_ID'];
else
return (false);
$curDuration = 0;
$rsTask = CTasks::getList(
array(),
array('ID' => $taskId),
array('ID', 'TIME_SPENT_IN_LOGS')
);
if ($rsTask && ($arTask = $rsTask->fetch()))
$curDuration = (int) $arTask['TIME_SPENT_IN_LOGS'];
foreach(GetModuleEvents('tasks', 'OnBeforeTaskElapsedTimeDelete', true) as $arEvent)
{
if (ExecuteModuleEventEx($arEvent, array($ID, $arRemovingLogItem))===false)
return false;
}
$deleteResult = BitrixTasksElapsedTimeTable::delete($ID);
$occurAsUserId = CTasksTools::getOccurAsUserId();
if ( ! $occurAsUserId )
$occurAsUserId = ($executiveUserId ? $executiveUserId : 1);
$oLog = new CTaskLog();
$oLog->Add(array(
'TASK_ID' => $taskId,
'USER_ID' => $occurAsUserId,
'~CREATED_DATE' => $DB->currentTimeFunction(),
'FIELD' => 'TIME_SPENT_IN_LOGS',
'FROM_VALUE' => $curDuration,
'TO_VALUE' => $curDuration - (int) $arRemovingLogItem['SECONDS']
));
foreach(GetModuleEvents('tasks', 'OnTaskElapsedTimeDelete', true) as $arEvent)
ExecuteModuleEventEx($arEvent, array($ID, &$arRemovingLogItem));
return $deleteResult;
}