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