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