protected function getAvailGroups()
{
$arAvailGroups = [];
if (!$this->bAllSections)
{
$intSectionsCount = count($this->arSections);
for ($i = 0; $i < $intSectionsCount; $i++)
{
$list = CIBlockSection::GetNavChain(
$this->iBlockId,
$this->arSections[$i],
[
'ID',
'IBLOCK_ID',
'IBLOCK_SECTION_ID',
'NAME',
'LEFT_MARGIN',
'RIGHT_MARGIN',
],
true
);
$curLEFT_MARGIN = 0;
$curRIGHT_MARGIN = 0;
foreach ($list as $ar_res)
{
$curLEFT_MARGIN = (int)$ar_res['LEFT_MARGIN'];
$curRIGHT_MARGIN = (int)$ar_res['RIGHT_MARGIN'];
$arAvailGroups[$ar_res['ID']] = [
'ID' => (int)$ar_res['ID'],
'IBLOCK_SECTION_ID' => (int)$ar_res['IBLOCK_SECTION_ID'],
'NAME' => $ar_res['NAME'],
];
}
unset($ar_res, $list);
$filter = [
'IBLOCK_ID' => $this->iBlockId,
'>LEFT_MARGIN' => $curLEFT_MARGIN,
' $curRIGHT_MARGIN,
'ACTIVE' => 'Y',
'IBLOCK_ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y',
];
$db_res = CIBlockSection::GetList(
['LEFT_MARGIN '=> 'ASC'],
$filter,
false,
[
'ID',
'IBLOCK_ID',
'IBLOCK_SECTION_ID',
'NAME',
'LEFT_MARGIN',
]
);
while ($ar_res = $db_res->Fetch())
{
$arAvailGroups[$ar_res['ID']] = [
'ID' => (int)$ar_res['ID'],
'IBLOCK_SECTION_ID' => (int)$ar_res['IBLOCK_SECTION_ID'],
'NAME' => $ar_res['NAME'],
];
}
unset($ar_res, $db_res);
}
}
else
{
$filter = [
'IBLOCK_ID' => $this->iBlockId,
'ACTIVE' => 'Y',
'IBLOCK_ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y',
];
$db_res = CIBlockSection::GetList(
['LEFT_MARGIN' => 'ASC'],
$filter,
false,
[
'ID',
'IBLOCK_ID',
'IBLOCK_SECTION_ID',
'NAME',
'LEFT_MARGIN',
]
);
while ($ar_res = $db_res->Fetch())
{
$arAvailGroups[$ar_res['ID']] = [
'ID' => (int)$ar_res['ID'],
'IBLOCK_SECTION_ID' => (int)$ar_res['IBLOCK_SECTION_ID'],
'NAME' => $ar_res['NAME'],
];
}
unset($ar_res, $db_res);
}
return $arAvailGroups;
}