Шпаргалка по Bitrix. Работа с пользовательскими полями

05.05.2022
Содержание:

Данная запись является шпаргалкой по работе с пользовательскими полями. В записи представлены конструкции кода для работы с полями пользователя, условиями для проверки типа пользователя и примерами запросов для изменения данных пользователя через API

Получаем пользователя по ID

Для получения информации о пользователе вы можете написать следующий запрос.

Для получения всех стандартных полей укажите в select -> ‘*’

Для получения всех дополнительных полей укажите в select -> ‘UF*’

$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);
}

Получаем пользователя по ID

//D7
use Bitrix\Main\UserTable;

$user = UserTable::getList([
    'select' => array('ID'),
    'filter' => array('EMAIL' => 'user@mail')
])->fetch();

echo $user['ID'];

//old
$cUser = $USER::GetList(
    $by="ID",
    $order="desc",
    array(
        'EMAIL' => 'user@mail'
    ),
    array(
        'SELECT' => array('ID')
    )
)->fetch();

echo $cUser['ID'];

Создание нового пользователя

// создадим массив описывающий изображение 
// находящееся в файле на сервере
$arIMAGE = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/photo.gif");
$arIMAGE["MODULE_ID"] = "main";

$user = new CUser;
$arFields = Array(
  "NAME"              => "Сергей",
  "LAST_NAME"         => "Иванов",
  "EMAIL"             => "ivanov@microsoft.com",
  "LOGIN"             => "ivan",
  "LID"               => "ru",
  "ACTIVE"            => "Y",
  "GROUP_ID"          => array(10,11),
  "PASSWORD"          => "123456",
  "CONFIRM_PASSWORD"  => "123456",
  "PERSONAL_PHOTO"    => $arIMAGE
);

$ID = $user->Add($arFields);
if (intval($ID) > 0) {

    echo "Пользователь успешно добавлен.";
}
else {
    echo $user->LAST_ERROR;
}

Изменение полей пользователя

$user = new CUser;
$fields = Array(
    "NAME" => "Сергей",
    "LAST_NAME" => "Иванов",
    "EMAIL" => "ivanov@microsoft.com",
    "UF_PROD_NAME" => "Тестовый товар"
);
$user->Update($USER->GetID(), $fields);
$strError .= $user->LAST_ERROR;

Для обновления пользовательского поля, вида «список» (где 11,12,13 — это ID значений списка.):

$user = new CUser;
$fields = Array( 
    "UF_SHOP" => array(11,12,13), 
); 
$user->Update($ID, $fields);

Авторизовать пользователя по ID

$USER->Authorize($user['ID']);

Получаем список групп

$result = \Bitrix\Main\GroupTable::getList(array(
    'select'  => array('NAME','ID','STRING_ID','C_SORT'),
    'filter'  => array('!ID'=>'1') //все кроме группы администраторов
));

while ($arGroup = $result->fetch()) {
	//Обрабатываем результат
}

Перенос пользователя в другую группу

\Bitrix\Main\UserGroupTable::add(array(
    "USER_ID" => $USER_ID,
    "GROUP_ID" => 10,
));

Получаем список активных пользователей в группе

$result = \Bitrix\Main\UserGroupTable::getList(array(
    'filter' => array('GROUP_ID'=>5,'USER.ACTIVE'=>'Y'),
    'select' => array(
        'USER_ID',
        'NAME'=>'USER.NAME',
        'LAST_NAME'=>'USER.LAST_NAME'
    ),
    'order' => array(
        'USER.ID'=>'DESC'
    ),
));

while ($arGroup = $result->fetch()) {
    //Обрабатываем результат
}

Удалить пользователя из группы

\Bitrix\Main\UserGroupTable::delete(array(		 
	"USER_ID" => $REQUEST['USER_ID'], 
	"GROUP_ID" => 5, 
));

Получить ID текущего авторизованного пользователя

\Bitrix\Main\Engine\CurrentUser::get()->getId()

Проверить, авторизован ли пользователь

if(\Bitrix\Main\Engine\CurrentUser::get()->getId()) {
    // выполняем код
}

Проверить, является ли пользователь админом

\Bitrix\Main\Engine\CurrentUser::get()->isAdmin()

Получить логин текущего пользователя

\Bitrix\Main\Engine\CurrentUser::get()->getLogin()

Получить массив групп текущего пользователя

\Bitrix\Main\Engine\CurrentUser::get()->getUserGroups()

Получить полное имя текущего пользователя

\Bitrix\Main\Engine\CurrentUser::get()->getFullName()

Получить имя текущего пользователя

\Bitrix\Main\Engine\CurrentUser::get()->getName()

Получить фамилию текущего пользователя

\Bitrix\Main\Engine\CurrentUser::get()->getLastName()

Получить отчество текущего пользователя

\Bitrix\Main\Engine\CurrentUser::get()->getSecondName()
На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime
Наши планы
  • Написание материала для курса по разработке ботов на Telegram
  • Разработка универсального парсера на PHP

Поддержите мой сайт!

Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube