function Add($arFields, $arParams = array()) { global $DB, $USER_FIELD_MANAGER; $bCheckFilesPermissions = false; if (isset($arParams['CHECK_RIGHTS_ON_FILES']) && ($arParams['CHECK_RIGHTS_ON_FILES'] === true || $arParams['CHECK_RIGHTS_ON_FILES'] === 'Y')) { CTaskAssert::assert(isset($arParams['USER_ID']) && CTaskAssert::isLaxIntegers($arParams['USER_ID']) && $arParams['USER_ID'] > 0); $bCheckFilesPermissions = true; } $arParamsForCheckFields = array('CHECK_RIGHTS_ON_FILES' => $bCheckFilesPermissions); if (isset($arParams['USER_ID'])) { $arParamsForCheckFields['USER_ID'] = $arParams['USER_ID']; } if ($this->CheckFields($arFields, false, $arParamsForCheckFields)) { if ($USER_FIELD_MANAGER->CheckFields("TASKS_TASK_TEMPLATE", 0, $arFields, $effectiveUserId)) { $arBinds = array("DESCRIPTION", "REPLICATE_PARAMS", "ACCOMPLICES", "AUDITORS", "FILES", "TAGS", "DEPENDS_ON", "RESPONSIBLES"); // fix for absent SITE_ID if ((string) $arFields['SITE_ID'] == '' || $arFields['SITE_ID'] == static::CURRENT_SITE_ID) { $arFields['SITE_ID'] = SITE_ID; } $ID = $DB->Add("b_tasks_template", $arFields, $arBinds, "tasks"); if (isset($arFields['FILES'])) { CTaskFiles::removeTemporaryStatusForFiles(unserialize($arFields['FILES']), $arParams['USER_ID']); } $USER_FIELD_MANAGER->Update("TASKS_TASK_TEMPLATE", $ID, $arFields, $effectiveUserId); // periodic tasks if ($arFields["REPLICATE"] == "Y") { // Firstly, remove all agents for this template /** @noinspection PhpDynamicAsStaticMethodCallInspection */ CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ');', 'tasks'); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 0);', 'tasks'); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 1);', 'tasks'); // Set up new agent if ($arFields['REPLICATE'] === 'Y') { $nextTime = CTasks::GetNextTime(unserialize($arFields['REPLICATE_PARAMS'])); if ($nextTime) { CTimeZone::Disable(); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ CAgent::AddAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 0);', 'tasks', 'N', 86400, $nextTime, 'Y', $nextTime); CTimeZone::Enable(); } } } // template tree if (intval($arFields['BASE_TEMPLATE_ID'])) { try { Template\DependencyTable::createLink($ID, intval($arFields['BASE_TEMPLATE_ID'])); } catch (\Bitrix\Tasks\DB\Tree\LinkExistsException $e) { } } return $ID; } } return false; }