- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskitem.php
- Класс: CTaskItem
- Вызов: CTaskItem::proceedActionEdit
private function proceedActionEdit($arActionArguments, $arTaskData)
{
$this->lastOperationResultData['UPDATE'] = array();
$arFields = $arActionArguments['FIELDS'];
$arParams = $arActionArguments['PARAMETERS'];
if(!is_array($arParams))
{
$arParams = array();
}
$actionChangeDeadlineFields = ['ID', 'DEADLINE', 'START_DATE_PLAN', 'END_DATE_PLAN', 'DURATION'];
$arGivenFieldsNames = array_keys($arFields);
$newTask = BitrixTasksAccessModelTaskModel::createFromArray($arFields, $arTaskData);
if ($arGivenFieldsNames === array_intersect($arGivenFieldsNames, $actionChangeDeadlineFields))
{
if (!$this->checkAccess(ActionDictionary::ACTION_TASK_DEADLINE))
{
throw new TasksException(
GetMessage('TASKS_ACCESS_DENIED_TO_DEADLINE_UPDATE'),
TasksException::TE_ACTION_NOT_ALLOWED
);
}
}
elseif (!$this->checkAccess(ActionDictionary::ACTION_TASK_SAVE, $newTask))
{
throw new TasksException(
GetMessage('TASKS_ACCESS_DENIED_TO_TASK_UPDATE'),
TasksException::TE_ACTION_NOT_ALLOWED
);
}
if (isset($arFields['ID']))
{
unset($arFields['ID']);
}
$arParams = array_merge($arParams, array(
'USER_ID' => $this->executiveUserId,
'CHECK_RIGHTS_ON_FILES' => true
));
$prevGroupId = (int) $arTaskData['GROUP_ID'];
$this->checkProjectDates($arTaskData, $arFields); //
$this->markCacheAsDirty();
$o = new CTasks();
/** @noinspection PhpDeprecationInspection */
if ($o->update($this->taskId, $arFields, $arParams) !== true)
{
$this->markCacheAsDirty();
static::throwExceptionVerbose($o->GetErrors());
}
$this->markCacheAsDirty();
$this->lastOperationResultData['UPDATE'] = $o->getLastOperationResultData();
if (
($arActionArguments['SUBTASKS_CHANGE_GROUP'] ?? null) !== false
&& array_key_exists('GROUP_ID', $arFields)
&& $prevGroupId !== (int) $arFields['GROUP_ID']
)
{
$this->moveSubTasksToGroup($arFields['GROUP_ID']);
}
return;
}