Этот пост является дополнением статьи по работе с главным модулем в Bitrix D7. Главный модуль включает в себя множество базовых механизмов обеспечивающих работу системы. В его функционал так же входят пользователи, пользовательские поля, и группы пользователей.
Как мы знаем в системе Bitrix механизм авторизации и работы с пользователями идёт вместе с основным модулем. Поэтому, используя классы главного модуля мы так же можем получить данные полей для пользователя:
$dbUser = \Bitrix\Main\UserTable::getList(array(
'select' => array('ID', 'NAME', 'PERSONAL_PHOTO', 'PERSONAL_WWW'),
'filter' => array('ID' => $USER->GetID())
));
if ($arUser = $dbUser->fetch()){
var_dump($arUser);
}
В результате, используя метод getList() мы получаем поля текущего авторизованного пользователя (согласно установленному фильтру в параметрах вызова метода).
В системе Bitrix пользовательские поля могут быть использованы довольно широко, и являются универсальным инструментом для реализации различных задач по хранению данных. Так посредством главного модуля, мы можем получить данные пользовательских полей:
$dbUserFields = \Bitrix\Main\UserFieldTable::getList(array(
'filter' => array('ENTITY_ID' => 'IBLOCK_'.$IBLOCK_ID.'_SECTION')
));
while ($arUserField = $dbUserFields->fetch()) {
if ($arUserField["USER_TYPE_ID"] == 'enumeration') {
$dbEnums = CUserFieldEnum::GetList(
array(),
array('USER_FIELD_ID' => $arUserField['ID'])
);
while ($arEnum = $dbEnums->GetNext()) {
$arUserField['ENUMS'][$arEnum['XML_ID']] = $arEnum;
}
}
$arResult['USER_FIELDS'][$arUserField["FIELD_NAME"]] = $arUserField;
}
Настраивая параметры фильтра для запроса, мы можем выбирать значения различных пользовательских полей в нужных участках кода.
Группы пользователей, как и сами пользователи в системе Bitrix так же связаны с главным модулем. Это означает что работать с группами пользователей мы можем посредством использования методов главного модуля.
Получение списка групп пользователя
$dbGroup = \Bitrix\Main\UserGroupTable::getList(array(
'filter' => array("USER_ID" => 90)
));
$arGroups = $dbGroup->FetchAll();
echo '<pre>'; print_r($arGroups); echo '</pre>';
Добавление пользователя в определённую группу
\Bitrix\Main\UserGroupTable::add(array( "USER_ID" => $USER_ID, "GROUP_ID" => 10, ));
Удаление пользователей из группы
\Bitrix\Main\UserGroupTable::delete(array( "USER_ID" => $USER_ID, "GROUP_ID" => 10, ));