• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/controller/template.php
  • Класс: BitrixDocumentGeneratorControllerTemplate
  • Вызов: Template::installDefaultTemplate
public function installDefaultTemplate(array $template)
{
	$result = new Result();
	/** @var BitrixDocumentGeneratorBody $body */
	$body = new $template['BODY_TYPE']('');
	$bodyFile = new BitrixMainIOFile(Path::combine(Application::getDocumentRoot(), $template['FILE']));
	if($bodyFile->isExists())
	{
		$fileArray = CFile::MakeFileArray($bodyFile->getPath(), $body->getFileMimeType());
		$fileArray['isTemplate'] = true;
		$saveResult = FileTable::saveFile($fileArray);
		if($saveResult->isSuccess())
		{
			$template['FILE_ID'] = $saveResult->getId();
		}
		else
		{
			$result->addErrors($saveResult->getErrors());
		}
	}
	else
	{
		$result->addError(new Error('File '.$bodyFile->getPath().' is not exist'));
	}
	if($result->isSuccess())
	{
		if(isset($template['MODULE_ID']) && !$this->includeModule($template['MODULE_ID']))
		{
			$result->addErrors($this->getErrors());
		}
	}
	if ($result->isSuccess() && isset($template['NUMERATOR']) && !isset($template['NUMERATOR_ID']))
	{
		$config = $template['NUMERATOR']['CONFIG'];
		$config[Numerator::getType()]['type'] = Driver::NUMERATOR_TYPE;

		if (!empty($config[Numerator::getType()]['code']))
		{
			// in case the numerator was created on this hit while adding another default template
			$id = NumeratorTable::getIdByCode($config[Numerator::getType()]['code']);
			if ($id !== null)
			{
				$template['NUMERATOR_ID'] = $id;
			}
		}

		if (empty($template['NUMERATOR_ID']))
		{
			$numerator = Numerator::create();
			$numeratorCreateResult = $numerator->setConfig($config);
			if ($numeratorCreateResult->isSuccess())
			{
				$numeratorCreateResult = $numerator->save();
			}

			if ($numeratorCreateResult->isSuccess())
			{
				$template['NUMERATOR_ID'] = $numerator->getId();
			}
			else
			{
				$result->addErrors($numeratorCreateResult->getErrors());
			}
		}
	}
	if($result->isSuccess())
	{
		if(isset($template['IS_DELETED']) && $template['IS_DELETED'] === 'Y')
		{
			unset($template['ID']);
		}
		$template['IS_DELETED'] = 'N';
		$providers = $template['PROVIDERS'];
		unset($template['PROVIDER_NAMES']);
		unset($template['PROVIDERS']);
		unset($template['FILE']);
		if (!empty($template['ID']))
		{
			unset($template['PRODUCTS_TABLE_VARIANT']);
		}

		$result = $this->add($template, $providers, [TemplateUserTable::ALL_USERS]);
	}

	return $result;
}