- Модуль: imconnector
- Путь к файлу: ~/bitrix/modules/imconnector/lib/connectors/network.php
- Класс: BitrixImConnectorConnectorsNetwork
- Вызов: Network::getUserId
public function getUserId($params, bool $createUser = true)
{
$userId = 0;
if (empty($params['UUID']))
{
return $userId;
}
if (Loader::includeModule('im'))
{
$orm = UserTable::getList([
'select' => [
'ID',
'NAME',
'LAST_NAME',
'PERSONAL_GENDER',
'PERSONAL_PHOTO',
'PERSONAL_WWW',
'EMAIL'
],
'filter' => [
'=EXTERNAL_AUTH_ID' => self::EXTERNAL_AUTH_ID,
'=XML_ID' => 'network|' . $params['UUID']
],
'limit' => 1
]);
if ($userFields = $orm->fetch())
{
$userId = $userFields['ID'];
$updateFields = [];
if (
!empty($params['NAME'])
&& $params['NAME'] !== $userFields['NAME']
)
{
$updateFields['NAME'] = $params['NAME'];
}
if (
isset($params['LAST_NAME'])
&& $params['LAST_NAME'] !== $userFields['LAST_NAME']
)
{
$updateFields['LAST_NAME'] = $params['LAST_NAME'];
}
if (
isset($params['PERSONAL_GENDER'])
&& $params['PERSONAL_GENDER'] !== $userFields['PERSONAL_GENDER']
)
{
$updateFields['PERSONAL_GENDER'] = $params['PERSONAL_GENDER'];
}
if (
isset($params['PERSONAL_WWW'])
&& $params['PERSONAL_WWW'] !== $userFields['PERSONAL_WWW']
)
{
$updateFields['PERSONAL_WWW'] = $params['PERSONAL_WWW'];
}
if (
isset($params['EMAIL'])
&& $params['EMAIL'] !== $userFields['EMAIL']
)
{
$updateFields['EMAIL'] = $params['EMAIL'];
}
if (
isset($params['PERSONAL_PHOTO'])
&& !empty($params['PERSONAL_PHOTO'])
)
{
$userAvatar = User::uploadAvatar($params['PERSONAL_PHOTO'], $userId);
if (
$userAvatar
&& $userFields['PERSONAL_PHOTO'] != $userAvatar
)
{
$connection = Application::getConnection();
$connection->query(
'UPDATE b_user SET PERSONAL_PHOTO = '
. (int)$userAvatar
. ' WHERE ID = '
. (int)$userId
);
$updateFields['ID'] = $userId;
}
}
if (!empty($updateFields))
{
$cUser = new CUser;
$cUser->Update($userId, $updateFields);
}
}
elseif ($createUser)
{
$userName = $params['NAME'] ?: Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_GUEST_NAME');
$userLastName = $params['LAST_NAME'];
$userGender = $params['PERSONAL_GENDER'];
$userWww = $params['PERSONAL_WWW'];
$userEmail = $params['EMAIL'];
$cUser = new CUser;
$fields = [];
$fields['LOGIN'] = self::MODULE_ID_IMOPENLINES . '_' . rand(1000,9999) . randString(5);
$fields['NAME'] = $userName;
$fields['LAST_NAME'] = $userLastName;
if ($userEmail)
{
$fields['EMAIL'] = $userEmail;
}
$fields['PERSONAL_GENDER'] = $userGender;
$fields['PERSONAL_WWW'] = $userWww;
$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'] = 'network|'.$params['UUID'];
$fields['ACTIVE'] = 'Y';
$userId = $cUser->Add($fields);
if ($userId && $params['PERSONAL_PHOTO'])
{
$userAvatar = User::uploadAvatar($params['PERSONAL_PHOTO'], $userId);
$connection = Application::getConnection();
$connection->query(
'UPDATE b_user SET PERSONAL_PHOTO = '
. (int)$userAvatar
. ' WHERE ID = '
. (int)$userId
);
}
}
}
return $userId;
}