- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task/template.php
- Класс: BitrixTasksManagerTaskTemplate
- Вызов: Template::addTemplateByTask
static function addTemplateByTask($userId, $taskId, $data)
{
$id = 0;
$errors = [];
$task = new ItemTask($taskId, $userId);
$conversionResult = $task->transformToTemplate();
if ($conversionResult->isSuccess())
{
$template = $conversionResult->getInstance();
$responsibles = [];
if (is_array($data['SE_RESPONSIBLE']))
{
foreach($data['SE_RESPONSIBLE'] as $user)
{
if (intval($user['ID']))
{
$responsibles[] = intval($user['ID']);
}
}
}
if (count($responsibles))
{
$template['RESPONSIBLES'] = $responsibles;
}
$template['SE_CHECKLIST'] = new ItemTaskCheckList();
$template['REPLICATE_PARAMS'] = $data[static::getCode(true)]['REPLICATE_PARAMS'];
$saveResult = $template->save();
if ($saveResult->isSuccess())
{
$id = $template->getId();
$checkListItems = TaskCheckListFacade::getByEntityId($taskId);
$checkListItems = array_map(
function($item)
{
$item['COPIED_ID'] = $item['ID'];
unset($item['ID']);
return $item;
},
$checkListItems
);
$checkListRoots = TemplateCheckListFacade::getObjectStructuredRoots($checkListItems, $id, $userId);
foreach ($checkListRoots as $root)
{
$checkListSaveResult = $root->save();
if (!$checkListSaveResult->isSuccess())
{
$conversionResult->abortConversion();
$errors = $checkListSaveResult->getErrors()->getMessages();
}
}
}
else
{
$conversionResult->abortConversion();
$errors = $saveResult->getErrors()->getMessages();
}
}
else
{
$errors[] = Loc::getMessage('TASKS_MANAGER_TASK_TEMPLATE_CONVERSION_ERROR');
}
if (!$id && empty($errors))
{
$errors[] = Loc::getMessage('TASKS_MANAGER_TASK_TEMPLATE_UNKNOWN_ERROR');
}
return [
'ID' => $id,
'ERRORS' => $errors,
];
}