• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/utils.php
  • Класс: CIntranetUtils
  • Вызов: CIntranetUtils::GetDepartmentManager
static function GetDepartmentManager($arDepartments, $skipUserId=false, $bRecursive=false)
{
	if(!is_array($arDepartments) || empty($arDepartments))
		return array();

	if (null == self::$SECTIONS_SETTINGS_CACHE)
		self::_GetDeparmentsTree();

	$arManagers = array();
	$arManagerIDs = array();
	foreach ($arDepartments as $section_id)
	{
		$arSection = self::$SECTIONS_SETTINGS_CACHE['DATA'][$section_id];

		if ($arSection['UF_HEAD'] && $arSection['UF_HEAD'] != $skipUserId)
		{
			$arManagers[$arSection['UF_HEAD']] = null;
			$arManagerIDs[] = $arSection['UF_HEAD'];
		}
	}

	if(count($arManagerIDs) > 0)
	{
		$dbRes = CUser::GetList('ID', 'ASC', array('ID' => implode('|', array_unique($arManagerIDs))));
		while($arUser = $dbRes->GetNext())
		{
			$arManagers[$arUser['ID']] = $arUser;
		}
	}

	foreach ($arDepartments as $section_id)
	{
		$arSection = self::$SECTIONS_SETTINGS_CACHE['DATA'][$section_id];

		$bFound = $arSection['UF_HEAD']
			&& $arSection['UF_HEAD'] != $skipUserId
			&& array_key_exists($arSection['UF_HEAD'], $arManagers);

		if (!$bFound && $bRecursive && $arSection['IBLOCK_SECTION_ID'])
		{
			$ar = CIntranetUtils::GetDepartmentManager(array($arSection['IBLOCK_SECTION_ID']), $skipUserId, $bRecursive);
			$arManagers = $arManagers + $ar;
		}
	}

	return $arManagers;
}