Этот пост является дополнением статьи по работе с главным модулем в 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, ));