- Модуль: 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];
}