- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/transfer/export/site.php
- Класс: Bitrix\Landing\Transfer\Export\Site
- Вызов: Site::nextStep
static function nextStep(Event $event): array
{
$settings = $event->getParameter('SETTING');
$manifest = $event->getParameter('MANIFEST');
$next = $event->getParameter('NEXT');
$itemCode = (int)$event->getParameter('ITEM_CODE');
$siteType = substr($manifest['CODE'], strlen(AppConfiguration::PREFIX_CODE));
Type::setScope($siteType);
Hook::setEditMode();
LandingCore::setEditMode();
if (!$next || $next === 'false'/*bug fix*/)
{
$next = [
'ID' => 0,
'EXPORTED_SITES_META' => []
];
}
else
{
$next = unserialize(htmlspecialcharsback($next), ['allowed_classes' => false]);
}
$defaultReturn = [
'NEXT' => false
];
$filter = [
'>ID' => $next['ID']
];
// limit top border, if sites too much
if (isset($settings['FINISH_ID']))
{
$filter['<=SITE_ID'] = $settings['FINISH_ID'];
}
// limit current step
if ($itemCode)
{
$filter['SITE_ID'] = $itemCode;
}
// pages export
$res = LandingCore::getList([
'select' => [
'ID', 'SITE_ID'
],
'filter' => $filter,
'order' => [
'ID' => 'asc'
],
'limit' => 1
]);
if ($row = $res->fetch())
{
if (!in_array($row['SITE_ID'], $next['EXPORTED_SITES_META']))
{
$exportSiteMeta = self::exportSiteMeta($row['SITE_ID']);
if (!$exportSiteMeta)
{
return $defaultReturn;
}
$next['EXPORTED_SITES_META'][] = $row['SITE_ID'];
$exportSiteMeta['NEXT'] = serialize($next);
// we'll repeat current step
return $exportSiteMeta;
}
$exportLanding = Landing::exportLanding(
$row['ID'],
self::FILENAME_EXPORT_STEP_PAGE
);
if (!$exportLanding)
{
return $defaultReturn;
}
$next['ID'] = $row['ID'];
$exportLanding['NEXT'] = serialize($next);
return $exportLanding;
}
return $defaultReturn;
}