- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/widget/user.php
- Класс: BitrixImopenlinesWidgetUser
- Вызов: User::register
static function register($userFields = [])
{
self::clearError();
$fields = [];
$fields['NAME'] = isset($userFields['NAME']) && trim($userFields['NAME'])? $userFields['NAME']: '';
$fields['LAST_NAME'] = isset($userFields['LAST_NAME'])? trim($userFields['LAST_NAME']): '';
if (isset($userFields['AVATAR']) && trim($userFields['AVATAR']))
{
$userFields['AVATAR'] = self::getPersonalPhoto($userFields['AVATAR']);
if ($userFields['AVATAR'])
{
$fields['PERSONAL_PHOTO'] = $userFields['AVATAR'];
}
}
if (isset($userFields['EMAIL']) && trim($userFields['EMAIL']))
{
$fields['EMAIL'] = trim($userFields['EMAIL']);
}
if (isset($userFields['PERSONAL_WWW']) && trim($userFields['PERSONAL_WWW']))
{
$fields['PERSONAL_WWW'] = trim($userFields['PERSONAL_WWW']);
}
if (isset($userFields['PERSONAL_GENDER']) && trim($userFields['PERSONAL_GENDER']))
{
$fields['PERSONAL_GENDER'] = $userFields['PERSONAL_GENDER'] == 'F'? 'F': 'M';
}
if (isset($userFields['WORK_POSITION']) && trim($userFields['WORK_POSITION']))
{
$fields['WORK_POSITION'] = trim($userFields['WORK_POSITION']);
}
if (isset($userFields['USER_HASH']) && trim($userFields['USER_HASH']) && preg_match("/^[a-fA-F0-9]{32}$/i", $userFields['USER_HASH']))
{
$userCode = $userFields['USER_HASH'];
$userData = BitrixMainUserTable::getList([
'select' => ['ID', 'EXTERNAL_AUTH_ID'],
'filter' => ['=XML_ID' => 'livechat|'.$userCode]
])->fetch();
if ($userData && $userData['EXTERNAL_AUTH_ID'] == self::EXTERNAL_AUTH_ID)
{
return [
'ID' => $userData['ID'],
'HASH' => $userCode,
];
}
}
else
{
$userCode = self::getUserCode();
}
$fields['LOGIN'] = self::MODULE_ID . '_wgt_' . rand(1000,9999) . randString(5);
$fields['PASSWORD'] = md5($fields['LOGIN'].'|'.rand(1000,9999).'|'.time());
$fields['CONFIRM_PASSWORD'] = $fields['PASSWORD'];
$fields['EXTERNAL_AUTH_ID'] = self::EXTERNAL_AUTH_ID;
$fields['XML_ID'] = 'livechat|'.$userCode;
$fields['ACTIVE'] = 'Y';
$userManager = new CUser;
$userId = $userManager->Add($fields);
if (!$userId)
{
$errorCode = '';
$errorMessage = '';
global $APPLICATION;
if ($exception = $APPLICATION->GetException())
{
$errorCode = $exception->GetID();
$errorMessage = $exception->GetString();
}
self::setError(__METHOD__, 'USER_REGISTER_ERROR', Loc::getMessage('IMOL_WIDGET_USER_ERROR_CREATE'), ['CODE' => $errorCode, 'MSG' => $errorMessage]);
return false;
}
return [
'ID' => $userId,
'HASH' => $userCode,
];
}