• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/document/onlyoffice/templates/createdocumentbycalltemplatescenario.php
  • Класс: BitrixDiskDocumentOnlyOfficeTemplatesCreateDocumentByCallTemplateScenario
  • Вызов: CreateDocumentByCallTemplateScenario::buildFileByTemplate
protected function buildFileByTemplate(int $templateId): Result
{
	$result = new Result();

	$templateManager = new TemplateManager();
	$template = $templateManager->getById($templateId);
	if (!$template)
	{
		$result->addError(new Error("Could find template {$templateId}"));

		return $result;
	}

	$templateFile = new File($template['path']);
	if (!$templateFile->isReadable())
	{
		$result->addError(new Error('Could not read file ' . $template['path']));

		return $result;
	}

	$values = $this->getValuesForTemplate();
	$langMessages = $this->getLangMessages();
	$body = new DocumentGeneratorBodyDocx($templateFile->getContents());
	$body->normalizeContent();

	$result = $body
		->setValues($values)
		->setValues($langMessages)
		->process()
	;
	if (!$result->isSuccess())
	{
		return $result;
	}

	$storage = new DocumentGeneratorStorageBFile();
	$result = $storage->write(
		$body->getContent(),
		[
			'fileName' => "resume_{$this->call->getId()}.docx",
			'contentType' => $body->getFileMimeType(),
		]
	);

	if (!$result->isSuccess())
	{
		return $result;
	}

	$result->setData([
		'bfile' => CFile::makeFileArray($result->getId()),
	]);

	return $result;
}