• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/controller/template.php
  • Класс: BitrixDocumentGeneratorControllerTemplate
  • Вызов: Template::add
protected function add(array $templateData, array $providers = [], array $users = [])
{
	$result = new Result();
	$id = intval($templateData['ID'] ?? 0);
	if($id > 0 && !Driver::getInstance()->getUserPermissions()->canModifyTemplate($id))
	{
		$result->addError(new Error('You do not have permissions to modify this template'));
	}
	if($result->isSuccess())
	{
		if($id > 0)
		{
			$template = BitrixDocumentGeneratorTemplate::loadById($id);
			if($template)
			{
				unset($templateData['CREATED_BY']);
				unset($templateData['ID']);
				$templateData['UPDATE_TIME'] = new DateTime();
				$templateData['UPDATED_BY'] = Driver::getInstance()->getUserId();
				$result = TemplateTable::update($id, $templateData);
			}
			else
			{
				$result->addError(new Error(Loc::getMessage('DOCGEN_CONTROLLER_TEMPLATE_NOT_FOUND')));
			}
		}
		else
		{
			if(empty($templateData['NUMERATOR_ID']))
			{
				$templateData['NUMERATOR_ID'] = $this->createNumerator($templateData['NAME']);
			}
			$result = TemplateTable::add($templateData);
		}
	}
	if(!$result->isSuccess())
	{
		return $result;
	}
	$templateId = $result->getId();
	if(!empty($providers))
	{
		TemplateProviderTable::deleteByTemplateId($templateId);
		foreach($providers as $provider)
		{
			if (
				DataProviderManager::checkProviderName(
					TemplateProviderTable::getClassNameFromFilterString($provider),
					$templateData['MODULE_ID']
				)
			)
			{
				$providerResult = TemplateProviderTable::add([
					'TEMPLATE_ID' => $templateId,
					'PROVIDER' => $provider,
				]);
				if(!$providerResult->isSuccess())
				{
					$result->addErrors($providerResult->getErrors());
				}
			}
		}
	}
	if(!empty($users))
	{
		TemplateUserTable::delete($templateId);
		foreach($users as $code)
		{
			$userResult = TemplateUserTable::add([
				'TEMPLATE_ID' => $templateId,
				'ACCESS_CODE' => $code,
			]);
			if(!$userResult->isSuccess())
			{
				$result->addErrors($userResult->getErrors());
			}
		}
	}
	$template = BitrixDocumentGeneratorTemplate::loadById($templateId);
	$result->setData($this->getAction($template));

	return $result;
}