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

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

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

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

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

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

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

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

$dbUser = \Bitrix\Main\UserTable::getList(array(
    'select' => [
        'ID', 
        'NAME', 
        'PERSONAL_PHOTO', 
        'PERSONAL_WWW'
     ],
     'filter' => [
         'ID' => $USER->GetID()
     ]
));
if ($arUser = $dbUser->fetch()){
    var_dump($arUser);
}

Стандартная проверка на поискового бота

\Bitrix\Catalog\Product\Basket::isNotCrawler() вернёт false если это бот.

if (!\Bitrix\Catalog\Product\Basket::isNotCrawler()) {
    $skipUserInit = true;
}

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

//D7
use Bitrix\Main\UserTable;

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

echo $user['ID'];

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

echo $cUser['ID'];

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

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

$user = new CUser;
$arFields = [
  "NAME"              => "Сергей",
  "LAST_NAME"         => "Иванов",
  "EMAIL"             => "ivanov@microsoft.com",
  "LOGIN"             => "ivan",
  "LID"               => "ru",
  "ACTIVE"            => "Y",
  "GROUP_ID"          => [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 = [
    "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 = [
    "UF_SHOP" => [11,12,13], 
]; 
$user->Update($ID, $fields);

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

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

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

$result = \Bitrix\Main\GroupTable::getList([
    'select'  => [
        'NAME',
        'ID',
        'STRING_ID',
        'C_SORT'
    ],
    'filter'  => ['!ID'=>'1']
]);

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

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

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

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

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

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

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

\Bitrix\Main\UserGroupTable::delete([		 
	"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()