• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/integration/main/uiselector/departments.php
  • Класс: BitrixIntranetIntegrationMainUISelectorDepartments
  • Вызов: Departments::getData
public function getData($params = array())
{
	if (self::isExtranetUser())
	{
		return array();
	}

	$result = array(
		'ITEMS' => array(),
		'ITEMS_LAST' => array(),
		'ADDITIONAL_INFO' => array(
			'TYPE' => 'tree',
			'PREFIX' => 'DR',
			'RELATION_ENTITY_TYPE' => BitrixSocialnetworkIntegrationMainUISelectorHandler::ENTITY_TYPE_USERS,
			'GROUPS_LIST' => array(
				'departments' => array(
					'TITLE' => Loc::getMessage('MAIN_UI_SELECTOR_TITLE_DEPARTMENTS'),
					'TYPE_LIST' => array(Handler::ENTITY_TYPE_DEPARTMENTS),
					'DESC_LESS_MODE' => 'Y',
					'SORT' => 30
				)
			),
			'SELECT_TEXT' => Loc::getMessage('MAIN_UI_SELECTOR_SELECT_TEXT_DEPARTMENTS'),
			'SELECT_FLAT_TEXT' => Loc::getMessage('MAIN_UI_SELECTOR_SELECT_FLAT_TEXT_DEPARTMENTS'),
			'ALLOW_SELECT' => 'N',
			'SORT_SELECTED' => 400
		)
	);

	if (!Loader::includeModule('socialnetwork'))
	{
		return $result;
	}

	$entityType = Handler::ENTITY_TYPE_DEPARTMENTS;
	$options = (!empty($params['options']) ? $params['options'] : array());
	$lastItems = (!empty($params['lastItems']) ? $params['lastItems'] : array());
	if (
		empty($lastItems[$entityType])
		&& !empty($lastItems['DEPARTMENT'])
	)
	{
		$lastItems[$entityType] = $lastItems['DEPARTMENT'];
		unset($lastItems['DEPARTMENT']);
	}

	if (
		!empty($options['siteDepartmentId'])
		&& $options['siteDepartmentId'] == 'EX'
	)
	{
		$structure = array(
			'department' => array(
				'EX' => array(
					'id' => 'EX',
					'entityId' => 'EX',
					'name' => GetMessage('MAIN_UI_SELECTOR_EXTRANET'),
					'parent' => 'DR0'
				)
			),
			'department_relation' => array(
				'EX' => array(
					'id' => 'EX',
					'items' => array(),
					'type' => 'category'
				)
			)
		);
	}
	else
	{
		$result['ADDITIONAL_INFO']['RELATION_ROOT'] = (!empty($options['siteDepartmentId']) ? intval($options['siteDepartmentId']) : 0);

		$structure = CSocNetLogDestination::getStucture(array(
			'LAZY_LOAD' => true,
			'DEPARTMENT_ID' => (!empty($options['siteDepartmentId']) ? intval($options['siteDepartmentId']) : false)
		));
		if (
			!empty($options['enableFlat'])
			&& $options['enableFlat'] == 'Y'
			&& is_array($structure['department'])
		)
		{
			if (
				!empty($options['allowSelect'])
				&& $options['allowSelect'] == 'Y'
			)
			{
				$result['ADDITIONAL_INFO']['ALLOW_FLAT'] = 'Y';
			}

			foreach($structure['department'] as $code => $departmentData)
			{
				$structure['department'][$code]['idFlat'] = 'D'.$departmentData['entityId'];
			}
		}
	}

	if (
		!empty($options['allowSelect'])
		&& $options['allowSelect'] == 'Y'
	)
	{
		$result['ADDITIONAL_INFO']['ALLOW_SELECT'] = 'Y';
	}

	if (!empty($structure['department']))
	{
		foreach($structure['department'] as $itemCode => $item)
		{
			$result['ITEMS'][$itemCode] = $item;
			if (!empty($result['ITEMS'][$itemCode]['idFlat']))
			{
				$itemFlat = $item;
				$itemFlat['id'] = $item['idFlat'];
				$itemFlat['name'] = str_replace('#NAME#', $itemFlat['name'], Loc::getMessage('MAIN_UI_SELECTOR_DEPARTMENT_FLAT_PATTERN'));

				unset($itemFlat['idFlat']);
				unset($itemFlat['parent']);
				$result['ITEMS'][$result['ITEMS'][$itemCode]['idFlat']] = $itemFlat;
			}
		}
	}

	if(!empty($lastItems[$entityType]))
	{
		$result["ITEMS_LAST"] = array_values($lastItems[$entityType]);
	}

	return $result;
}