- Модуль: 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);
}