Разберём задачу: требуется зарегистрировать нового пользователя в bitrix с одновременным добавлением его в определённые группы или удалением из этих групп. Ниже в многострочном поле ввода конечный программный код скрипта, а ниже его комментарии что и как работает.
Конечный код регистрации пользователя и присвоения в группы с вставками для тестирования работы.
Комментарии по коду скрипта добавления нового пользователя bitrix и присвоения его группам или удаления из них.
require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';
//Подключаем Bitrix-пролог, чтобы начать использовать фреймворк Bitrix.
global $USER;
// Объявляем глобальную переменную $USER которая является объектом Bitrix, в котором содержится метод Register необходимый далее для регистрации нового пользователя.
var_dump($USER);
Выводим информацию о содержании массива $USER - это тестовая информация, удалите эту строку в рабочем скрипте - она нужна только для предварительного тестирования работы php-скрипта.
echo "- - -\n";
//Эта строчка нужна для визуального отделения одной тестовой информации от другой. Далее по коду аналогичная строчка встречается несколько раз и выполняет аналогичную функцию, повторно комментироваться она не будет. В рабочем скрипте эти строчки не нужны - удалите их.
$arResult = $USER->Register("test123" . mt_rand(1,999999), "", "", "123456", "123456", "autoreg-user-sitecomponentname1-1@domen.ru");
// Регистрируем нового пользователя с логином начинающимся "test123" и заканчивающимся случайным числом от 1 до 999999(Вы можете использовать свой алгоритм), паролем 123456 и e-mail адресом autoreg-user-sitecomponentname1-1@domen.ru полученное в результате работы метода значение присваиваем переменной $arResult. В случаи если работа метода добавления нового пользователя завершилось успешно массив $arResult будет содержать элемент с ключом ["ID"], если же результат работы метода - ошибка: ключа ["ID"] в массиве не будет, зато будет присутствовать информация о ошибке. В дальнейшем для того чтобы понять, успешно ли добавлен новый пользователь в вышеприведённый скрипт опирается только на наличие или отсутствие элемента массива с ключом ["ID"].
var_dump($arResult);
//Выводим информацию о содержании массива $arResult, можно будет увидеть присутствие или отсутствие элемента с ключом ["ID"] о котором шла речь в предыдущем абзаце. Эта строчка в скрипте необходима исключительно для теста и отладки работы, поэтому удалите её в рабочей версии скрипта.
if (isset($arResult["ID"])) {
$arGroups = CUser::GetUserGroup($arResult["ID"]);
//В первой строке условие о котором шла речь в двух абзацах выше. PHP функция isset возвращает истину(true) в случаи если элемент с ключом ["ID"] присутствует в массиве $arResult. Если условие истинно, выполняется вторая строчка в которой статический метод GetUserGroup класса CUser возвращаем массив с идентификаторами групп пользователей сайта на Bitrix, которым принадлежит пользователь Bitrix с ID содержащимся в $arResult["ID"]. Полученное значение - массив идентификаторов групп пользователей присваивается $arGroups.
var_dump($arGroups);
//Тестовая строчка, для того чтобы наглядно можно было оценить работу скрипта. Выводит содержание массива, содержащий идентификаторы групп пользователей сайта Bitrix для пользователя Id которого находится в $arResult["ID"]. Удалите эту строчка уз рабочего скрипта, после проверки работы.
Код скрипта с вычищенной тестовой информацией.
Регистрация нового пользователя Bitrix и добавление в пользовательскую группу методом CUser:Add
Получаем поля пользователя битрикс по ID вместе с относящимися пользовательскими полями к данному пользователю
В примере ниже в массив под ключом SELECT передаём массив необходимых для выборки пользовательских полей, например UF_CODE_LKA. Если требуется выбрать все поля, то передаём массив array("UF_*")
Получаем пользовательское поле текущего пользователя
Добавление пользователя битриск сразу генерацией случайного логина, пароля и e-mail, активация пользователя и сразу с добавлением информации в пользовательское поле.
Следующий скрипт проверяет для неавторизированного пользователя bitrix существует ли пользователь с указанным email в системе и получает его ID, а если не существует регистрирует нового пользователя.
Логика работы скрипта следующая: сначала проверяется авторизован ли пользователь в битрикс. Если авторизован то ничего не делаем. Если не авторизован то по указанному e-mail проверяем существует ли в системе пользователь с таким e-mail в поле EMAIL, если нет то по e-mail ищем пользователя по полю LOGIN, если и такого пользователя нет регистрируем пользователя с указанным e-mail и получаем его Id.
В случаи если необходимо выполнить авторизацию это можно сделать строчкой $USER->Authorize($userId);