Данная запись является шпаргалкой по работе с пользовательскими полями. В записи представлены конструкции кода для работы с полями пользователя, условиями для проверки типа пользователя и примерами запросов для изменения данных пользователя через 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()