• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/wizard_site.php
  • Класс: CWizard
  • Вызов: CWizard::__GetNewStructure
function __GetNewStructure($structureID, &$arStructure)
{
	$arNewStructure = Array();
	$rootPageCnt = Array();
	$childNumber = "";

	$arPages = explode(";", $structureID);
	foreach ($arPages as $page)
	{
		//Format: Item ID: Root ID
		if ($page == '')
			continue;

		$pageID = $page;
		$rootID = false;

		if ( ($position = mb_strpos($page, ":")) !== false)
			list($pageID, $rootID) = explode(":", $pageID);

		$arPageProp = $this->__GetPageProperties($pageID, $arStructure);
		if (empty($arPageProp))
			continue;

		if ($rootID == '')
		{
			if (array_key_exists($pageID, $arNewStructure))
			{
				$rootPageCnt[$pageID]++; //(int)$rootNumber++;
				$arNewStructure[$pageID.$rootPageCnt[$pageID]] = $arPageProp + Array("CHILD" => Array());
			}
			else
			{
				$arNewStructure[$pageID] = $arPageProp + Array("CHILD" => Array());
				$rootPageCnt[$pageID] = "";
			}
		}
		else
		{
			//Create child
			if (isset($rootPageCnt[$rootID]) && array_key_exists($rootID.$rootPageCnt[$rootID], $arNewStructure))
			{
				if (array_key_exists($pageID, $arNewStructure[$rootID.$rootPageCnt[$rootID]]["CHILD"]))
				{
					(int)$childNumber++;
					$arNewStructure[$rootID.$rootPageCnt[$rootID]]["CHILD"][$pageID.$childNumber] = $arPageProp;
				}
				else
					$arNewStructure[$rootID.$rootPageCnt[$rootID]]["CHILD"][$pageID] = $arPageProp;
			}
			else
			{
				if (array_key_exists($pageID, $arNewStructure[$rootID]["CHILD"]))
				{
					(int)$childNumber++;
					$arNewStructure[$rootID]["CHILD"][$pageID.$childNumber] = $arPageProp;
				}
				else
					$arNewStructure[$rootID]["CHILD"][$pageID] = $arPageProp;
			}
		}
	}

	$arAddService = Array();
	foreach ($arStructure as $pageID => $arPage)
	{
		if (isset($arPage["TYPE"]) && $arPage["TYPE"] == "SERVICE" && !array_key_exists($pageID, $arNewStructure))
			$arAddService[$pageID] = $arPage;
	}

	return $arNewStructure + $arAddService;
}