- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/widget/chat.php
- Класс: BitrixImopenlinesWidgetChat
- Вызов: Chat::get
static function get($userId, $configId)
{
global $USER, $APPLICATION;
self::clearError();
$orm = BitrixImModelChatTable::getList(array(
'select' => ['ID', 'ENTITY_DATA_1', 'ENTITY_DATA_2', 'ENTITY_DATA_3'],
'filter' => array(
'=ENTITY_TYPE' => 'LIVECHAT',
'=ENTITY_ID' => $configId.'|'.$userId
),
'limit' => 1
));
if($chat = $orm->fetch())
{
return $chat;
}
if ($userId == $USER->GetID())
{
$avatarId = $USER->GetParam('PERSONAL_PHOTO');
}
else
{
$user = BitrixMainUserTable::getById($userId)->fetch();
if ($user)
{
$avatarId = $user['PERSONAL_PHOTO'];
}
else
{
self::setError(__METHOD__, 'USER_ERROR', Loc::getMessage('IMOL_WIDGET_CHAT_ERROR_USER_NOT_FOUND'));
return false;
}
}
$config = BitrixImopenlinesModelConfigTable::getById($configId)->fetch();
if (!$config)
{
self::setError(__METHOD__, 'CONFIG_ERROR', Loc::getMessage('IMOL_WIDGET_CHAT_ERROR_CONFIG_NOT_FOUND'));
return false;
}
$userName = BitrixImUser::getInstance($userId)->getFullName(false);
$chatColorCode = BitrixImColor::getCodeByNumber($userId);
if (BitrixImUser::getInstance($userId)->getGender() == 'M')
{
$replaceColor = BitrixImColor::getReplaceColors();
if (isset($replaceColor[$chatColorCode]))
{
$chatColorCode = $replaceColor[$chatColorCode];
}
}
$addChat['TITLE'] = Loc::getMessage('IMOL_WIDGET_CHAT_NAME', Array(
"#USER_NAME#" => $userName,
"#LINE_NAME#" => $config['LINE_NAME']
));
$addChat['TYPE'] = IM_MESSAGE_CHAT;
$addChat['COLOR'] = $chatColorCode;
$addChat['AVATAR_ID'] = $avatarId;
$addChat['ENTITY_TYPE'] = 'LIVECHAT';
$addChat['ENTITY_ID'] = $configId.'|'.$userId;
$addChat['SKIP_ADD_MESSAGE'] = 'Y';
$addChat['AUTHOR_ID'] = $userId;
$addChat['USERS'] =[$userId];
$chat = new CIMChat(0);
$id = $chat->Add($addChat);
if (!$id)
{
$errorCode = '';
$errorMessage = '';
if ($exception = $APPLICATION->GetException())
{
$errorCode = $exception->GetID();
$errorMessage = $exception->GetString();
}
self::setError(__METHOD__, 'CHAT_ERROR', Loc::getMessage('IMOL_WIDGET_CHAT_ERROR_CREATE'), ['CODE' => $errorCode, 'MSG' => $errorMessage]);
return false;
}
return [
'ID' => $id,
'ENTITY_DATA_1' => '',
'ENTITY_DATA_2' => '',
'ENTITY_DATA_3' => ''
];
}