- Модуль: 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;
}
}