• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/transfer/export/site.php
  • Класс: BitrixLandingTransferExportSite
  • Вызов: Site::exportSiteMeta
static function exportSiteMeta(int $siteId): ?array
{
	$files = [];

	$site = SiteCore::getList([
		'filter' => [
			'ID' => $siteId
		]
	])->fetch();
	if (!$site)
	{
		return null;
	}

	$site['DATE_CREATE'] = (string)$site['DATE_CREATE'];
	$site['DATE_MODIFY'] = (string)$site['DATE_MODIFY'];
	$site['SYS_PAGES'] = BitrixLandingSyspage::get($siteId);
	$site['FOLDERS_NEW'] = self::getFolders($siteId);

	// layout templates
	$site['TEMPLATES'] = [];
	$res = Template::getList([
		'select' => [
			'ID', 'XML_ID'
		]
	]);
	while ($row = $res->fetch())
	{
		$site['TEMPLATES'][$row['ID']] = $row['XML_ID'];
	}

	// site layout template
	$site['TEMPLATE_REF'] = [];
	if ($site['TPL_ID'])
	{
		$site['TEMPLATE_REF'] = TemplateRef::getForSite($siteId);
	}

	// additional fields
	$hookFields = [];
	foreach (Hook::getForSite($siteId) as $hookCode => $hook)
	{
		if ($hookCode == 'SETTINGS')
		{
			continue;
		}
		foreach ($hook->getFields() as $fCode => $field)
		{
			$hookCodeFull = $hookCode . '_' . $fCode;
			$hookFields[$hookCodeFull] = $field->getValue();
			if (!$hookFields[$hookCodeFull])
			{
				unset($hookFields[$hookCodeFull]);
			}
			else if (in_array($hookCodeFull, Hook::HOOKS_CODES_FILES))
			{
				if ($hookFields[$hookCodeFull] > 0)
				{
					$files[] = ['ID' => $hookFields[$hookCodeFull]];
				}
			}
		}
	}
	$site['ADDITIONAL_FIELDS'] = $hookFields;

	return [
		'FILE_NAME' => str_replace('#site_id#', $siteId, self::FILENAME_EXPORT_STEP_META),
		'CONTENT' => $site,
		'FILES' => $files
	];
}