• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/transfer/import/site.php
  • Класс: BitrixLandingTransferImportSite
  • Вызов: Site::importSite
static function importSite(array $data, ConfigurationStructure $structure): AddResult
{
	$code = isset($data['CODE']) ? $data['CODE'] : null;

	// clear old keys
	$notAllowedKeys = [
		'ID', 'DOMAIN_ID', 'DATE_CREATE', 'DATE_MODIFY',
		'CREATED_BY_ID', 'MODIFIED_BY_ID', 'CODE'
	];
	foreach ($notAllowedKeys as $key)
	{
		if (isset($data[$key]))
		{
			unset($data[$key]);
		}
	}

	// if site path are exist, create random one
	if ($code)
	{
		$check = SiteCore::getList([
			'select' => [
				'ID'
			],
			'filter' => [
				'=CODE' => $code
			]
		]);
		if ($check->fetch())
		{
			$code = null;
		}
	}
	if (!$code)
	{
		$code = strtolower(randString(10));
	}
	$data['CODE'] = $code;
	$data['ACTIVE'] = 'Y';

	// files
	$files = [];
	foreach (Hook::HOOKS_CODES_FILES as $hookCode)
	{
		if (
			isset($data['ADDITIONAL_FIELDS'][$hookCode]) &&
			$data['ADDITIONAL_FIELDS'][$hookCode] > 0
		)
		{
			$unpackFile = $structure->getUnpackFile($data['ADDITIONAL_FIELDS'][$hookCode]);
			if ($unpackFile)
			{
				$files[] = $data['ADDITIONAL_FIELDS'][$hookCode] = AppConfiguration::saveFile(
					$unpackFile
				);
			}
			else
			{
				unset($data['ADDITIONAL_FIELDS'][$hookCode]);
			}
		}
	}

	$res = SiteCore::add($data);

	// save files to site
	if ($files && $res->isSuccess())
	{
		foreach ($files as $fileId)
		{
			File::addToSite($res->getId(), $fileId);
		}
	}

	return $res;
}