Этот пост является дополнением статьи по работе с главным модулем в Bitrix D7. Главный модуль включает в себя множество базовых механизмов обеспечивающих работу системы. В его функционал так же входят пользователи, пользовательские поля, и группы пользователей.
Как мы знаем в системе Bitrix механизм авторизации и работы с пользователями идёт вместе с основным модулем. Поэтому, используя классы главного модуля мы так же можем получить данные полей для пользователя:
1 2 3 4 5 6 7 | $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 пользовательские поля могут быть использованы довольно широко, и являются универсальным инструментом для реализации различных задач по хранению данных. Так посредством главного модуля, мы можем получить данные пользовательских полей:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | $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 так же связаны с главным модулем. Это означает что работать с группами пользователей мы можем посредством использования методов главного модуля.
Получение списка групп пользователя
1 2 3 4 5 | $dbGroup = \Bitrix\Main\UserGroupTable::getList( array ( 'filter' => array ( "USER_ID" => 90) )); $arGroups = $dbGroup ->FetchAll(); echo '<pre>' ; print_r( $arGroups ); echo '</pre>' ; |
Добавление пользователя в определённую группу
1 2 3 4 | \Bitrix\Main\UserGroupTable::add( array ( "USER_ID" => $USER_ID , "GROUP_ID" => 10, )); |
Удаление пользователей из группы
1 2 3 4 | \Bitrix\Main\UserGroupTable:: delete ( array ( "USER_ID" => $USER_ID , "GROUP_ID" => 10, )); |