• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/transfer/import/site.php
  • Класс: BitrixLandingTransferImportSite
  • Вызов: Site::addFolders
static function addFolders(int $siteId, array $foldersNew, array $landingMapIds): void
{
	if (!$foldersNew)
	{
		return;
	}

	$folderMapIds = [];
	foreach ($foldersNew as $folderId => $folder)
	{
		$indexId = null;

		if (!$folder['PARENT_ID'])
		{
			unset($folder['PARENT_ID']);
		}

		if ($folder['INDEX_ID'] ?? null)
		{
			$indexId = $landingMapIds[$folder['INDEX_ID']] ?? null;
			unset($folder['INDEX_ID']);
		}

		$res = SiteCore::addFolder($siteId, $folder);
		if ($res->isSuccess())
		{
			if ($indexId)
			{
				$resLanding = LandingCore::update($indexId, [
					'FOLDER_ID' => $res->getId()
				]);
				if ($resLanding->isSuccess())
				{
					BitrixLandingFolder::update($res->getId(), [
						'INDEX_ID' => $indexId
					]);
				}
			}
			$folderMapIds[$folderId] = $res->getId();
		}
	}

	$newFolders = SiteCore::getFolders($siteId);
	foreach ($newFolders as $folder)
	{
		if ($folderMapIds[$folder['PARENT_ID']] ?? null)
		{
			BitrixLandingFolder::update($folder['ID'], [
				'PARENT_ID' => $folderMapIds[$folder['PARENT_ID']]
			]);
		}
	}

	self::updateFolderIds($siteId, $folderMapIds);
}