- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task/template.php
- Класс: Bitrix\Tasks\Manager\Task\Template
- Вызов: Template::add
static function add($userId, array $data, array $parameters = array('PUBLIC_MODE' => false)) { $userId = Assert::expectIntegerPositive($userId, '$userId'); $errors = static::ensureHaveErrorCollection($parameters); if($parameters['PUBLIC_MODE']) { $data = static::filterData($data, array(), $errors); } if($errors->checkNoFatals()) { $responsibles = Responsible::extractPrimaryIndexes($data[Responsible::getCode(true)]); // todo: temporal adapters, implement model object with array access and lazy adaptation static::adaptSet($data); // serialize some... $data["ACCOMPLICES"] = Type::serializeArray($data["ACCOMPLICES"], true); $data["AUDITORS"] = Type::serializeArray($data["AUDITORS"], true); $data["RESPONSIBLES"] = Type::serializeArray($responsibles, true); $data["TAGS"] = Type::serializeArray($data["TAGS"], true); $data["REPLICATE_PARAMS"] = Type::serializeArray($data["REPLICATE_PARAMS"], true); if(count($responsibles) > 1) // template represents multitask in case of multiple responsibles { $data['MULTITASK'] = 'Y'; } // todo: CTaskTemplates::add() hates unknown fields in $data. Improve CTaskTemplates::add() to make it ignore garbage in input $dataToAdd = $data; unset($dataToAdd['DEPENDS_ON']); foreach($dataToAdd as $key => $v) { if(mb_strpos($key, static::SE_PREFIX) === 0) { unset($dataToAdd[$key]); } } $templateInstance = new \CTaskTemplates(); $itemId = $templateInstance->add($dataToAdd); if($itemId) { $subEntityParams = array_merge( $parameters, array('MODE' => static::MODE_ADD) ); if(is_array($data[static::SE_PREFIX.'CHECKLIST'])) { Template\Checklist::manageSet($userId, $itemId, $data[static::SE_PREFIX.'CHECKLIST'], $subEntityParams); } } $resultErrors = $templateInstance->getErrors(); if(!empty($resultErrors)) { $errors->load($resultErrors); } } return array( 'DATA' => array('ID' => $itemId), 'ERRORS' => $errors, ); }