• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/controller/template.php
  • Класс: BitrixDocumentGeneratorControllerTemplate
  • Вызов: Template::addAction
public function addAction(array $fields, CRestServer $restServer = null)
{
	if($restServer && !isset($fields['fileId']))
	{
		$fields['fileId'] = $this->uploadFile($fields[static::FILE_PARAM_NAME], [
			'isTemplate' => true,
		]);
		if(!$fields['fileId'])
		{
			return null;
		}
		unset($fields[static::FILE_PARAM_NAME]);
	}
	// do not let add templates to other modules in rest scope
	if($restServer)
	{
		$fields['moduleId'] = Driver::REST_MODULE_ID;
		$fields['providers'] = [
			Rest::class,
		];
	}
	if(empty($fields['providers']))
	{
		unset($fields['providers']);
	}
	elseif(!is_array($fields['providers']))
	{
		$fields['providers'] = [$fields['providers']];
	}
	$emptyFields = $this->checkArrayRequiredParams($fields, ['name', 'fileId', 'numeratorId', 'region', 'providers', 'moduleId']);
	if(!empty($emptyFields))
	{
		$this->errorCollection[] = new Error('Empty required fields: '.implode(', ', $emptyFields));
		return null;
	}

	if(!$this->includeModule($fields['moduleId']))
	{
		return null;
	}
	if(!$fields['active'])
	{
		$fields['active'] = 'Y';
	}
	if(!$fields['withStamps'])
	{
		$fields['withStamps'] = 'N';
	}
	if(!$fields['users'])
	{
		$fields['users'] = [];
	}
	if(empty($fields['users']))
	{
		$currentUserId = Driver::getInstance()->getUserId();
		if($currentUserId > 0)
		{
			$fields['users'][] = 'U' . $currentUserId;
		}
	}
	$fields['bodyType'] = Docx::class;
	$fields['createdBy'] = Driver::getInstance()->getUserId();
	$converter = new Converter(Converter::TO_UPPER | Converter::KEYS | Converter::TO_SNAKE);
	$templateData = $converter->process($fields);
	$result = $this->add($templateData, $fields['providers'], $fields['users']);
	if($result->isSuccess())
	{
		foreach($fields['providers'] as $provider)
		{
			Driver::extendTemplateProviders($fields['moduleId'], $provider);
		}
		return $result->getData();
	}
	else
	{
		$this->errorCollection = $result->getErrorCollection();
		return null;
	}
}