• Модуль: ldap
  • Путь к файлу: ~/bitrix/modules/ldap/classes/general/ldap.php
  • Класс: CLDAP
  • Вызов: CLDAP::GetGroupListArray
public function GetGroupListArray($query = '')
{
	$group_filter = $this->arFields['GROUP_FILTER'];
	if(trim($group_filter) <> '' && mb_substr(trim($group_filter), 0, 1) != '(')
		$group_filter = '('.trim($group_filter).')';
	$query = '(&'.$group_filter.$query.')';

	if (!array_key_exists($query, $this->groupsLists))
	{
		$this->BindAdmin();

		$arGroupAttr = array(
			"name", "cn", "gidNumber", "description", "memberof",
			"primarygrouptoken", "primarygroupid", "samaccountname",
			"distinguishedname"
		);

		foreach(array("GROUP_ID_ATTR", "GROUP_NAME_ATTR", "GROUP_MEMBERS_ATTR") as $fieldName)
			$arGroupAttr = $this->setFieldAsAttr($arGroupAttr, $fieldName);

		if ($this->arFields['USER_GROUP_ACCESSORY'] == 'Y')
			$arGroupAttr = $this->setFieldAsAttr($arGroupAttr, "USER_GROUP_ATTR");

		$arGroupsTmp = $this->QueryArray($query, $arGroupAttr);

		if (!$arGroupsTmp)
			return false;

		$arGroups = array();
		$group_id_attr = mb_strtolower($this->arFields['GROUP_ID_ATTR']);

		if(is_set($this->arFields, 'GROUP_NAME_ATTR'))
			$group_name_attr = mb_strtolower($this->arFields['GROUP_NAME_ATTR']);
		else
			$group_name_attr = false;

		foreach ($arGroupsTmp as $grp)
		{
			$grp['ID'] = $grp[$group_id_attr];

			if ($group_name_attr && is_set($grp, $group_name_attr))
				$grp['NAME'] = $grp[$group_name_attr];

			$arGroups[$grp['ID']] = $grp;
		}

		$this->groupsLists[$query] = $arGroups;
	}

	return $this->groupsLists[$query];
}