• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman_admin_report.php
  • Класс: CTimeManAdminReport
  • Вызов: CTimeManAdminReport::_getDepartmentsData
private function _getDepartmentsData($arSections)
{
	$arResult = array();
	$arChains = array();

	$section_url = "/company/structure.php?set_filter_structure=Y&structure_UF_DEPARTMENT=#ID#";
	$iblockId = COption::GetOptionInt('intranet', 'iblock_structure', 0);

	$arSectionFilter = array(
		'CHECK_PERMISSIONS' => 'N',
		'IBLOCK_ID' => $iblockId,
		'ID' => array_unique($arSections)
	);

	$dbRes = CIBlockSection::GetList(
		array('LEFT_MARGIN' => 'DESC'),
		$arSectionFilter,
		false,
		array('ID', 'NAME', 'IBLOCK_SECTION_ID', 'UF_HEAD')
	);

	$chain_root = null;
	while ($arRes = $dbRes->Fetch())
	{
		if ($arRes['IBLOCK_SECTION_ID'] <= 0)
			$arRes['TOP_SECTION'] = true;

		$arRes['CHAIN'] = array();
		if (isset($arChains[$arRes['ID']]))
		{
			$arRes['CHAIN'] = $arChains[$arRes['ID']];
		}
		elseif ($arRes['IBLOCK_SECTION_ID'] > 0
				&& isset($arChains[$arRes['IBLOCK_SECTION_ID']]))
		{
			$arRes['CHAIN'] = $arChains[$arRes['IBLOCK_SECTION_ID']];
			$arRes['CHAIN'][] = array(
				'ID' => $arRes['ID'],
				'NAME' => $arRes['NAME'],
				'URL' => str_replace('#ID#', $arRes['ID'], $section_url)
			);
		}
		else
		{
			$db1 = CIBlockSection::GetNavChain($iblockId, $arRes['ID']);
			while ($sect = $db1->Fetch())
			{
				$arRes['CHAIN'][] = array(
					'ID' => $sect['ID'],
					'NAME' => $sect['NAME'],
					'URL' => str_replace('#ID#', $sect['ID'], $section_url)
				);

				if (!isset($arChains[$sect['ID']]))
				{
					$arChains[$sect['ID']] = $arRes['CHAIN'];
				}
			}
		}

		if (null === $chain_root)
			$chain_root = $arRes['CHAIN'][0]['ID'];
		elseif (
			false !== $chain_root
			&& $chain_root != $arRes['CHAIN'][0]['ID']
		)
			$chain_root = false;

		$arResult[$arRes['ID']] = $arRes;
	}

	if ($chain_root)
	{
		foreach ($arResult as &$dpt)
		{
			if (count($dpt['CHAIN']) > 1)
				array_shift($dpt['CHAIN']);
		}
	}

	return $arResult;
}