- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_main.php
- Класс: CVoxImplantMain
- Вызов: CVoxImplantMain::GetDialogInfo
public function GetDialogInfo($phone, $chatTitle = '', $getPhoto = true)
{
$phoneNormalize = CVoxImplantPhone::Normalize($phone);
if (!$phoneNormalize)
{
$phoneNormalize = preg_replace("/[^0-9#*]/i", "", $phone);
}
$phone = $phoneNormalize;
$hrPhoto = [];
$openChat = true;
$result = VIPhoneTable::getList([
'select' => ['USER_ID', 'PHONE_MNEMONIC'],
'filter' => [
'=PHONE_NUMBER' => $phone,
'=USER.ACTIVE' => 'Y',
'=USER.IS_REAL_USER' => 'Y'
]
]);
$userId = false;
while ($row = $result->fetch())
{
if (!$userId && $row['PHONE_MNEMONIC'] != 'WORK_PHONE' )
{
$userId = $row['USER_ID'];
$openChat = false;
}
else if (!$userId && $row['PHONE_MNEMONIC'] == 'WORK_PHONE' )
{
$openChat = true;
}
}
if ($userId == $this->userId)
{
$openChat = true;
}
$dialogId = 0;
$isUnified = false;
if (!CModule::IncludeModule('im'))
{
return false;
}
if (CVoxImplantConfig::GetChatAction() == CVoxImplantConfig::INTERFACE_CHAT_NONE)
{
}
else if ($openChat)
{
$entityId = $phone;
if (CVoxImplantConfig::GetChatAction() == CVoxImplantConfig::INTERFACE_CHAT_APPEND)
{
$entityId = 'UNIFY_CALL_CHAT';
$chatTitle = GetMessage('VI_CALL_CHAT_UNIFY');
$isUnified = true;
}
$result = IMModelChatTable::getList(Array(
'select' => Array('ID', 'AVATAR'),
'filter' => Array('=ENTITY_TYPE' => 'CALL', '=ENTITY_ID' => $entityId, '=AUTHOR_ID' => $this->userId)
));
if ($row = $result->fetch())
{
$dialogId = 'chat'.$row['ID'];
$avatarId = $row['AVATAR'];
}
else
{
$CIMChat = new CIMChat($this->userId);
$chatId = $CIMChat->Add(Array(
'TITLE' => $chatTitle != ''? $chatTitle: BitrixMainPhoneNumberParser::getInstance()->parse($phone)->format(),
'USERS' => false,
'CALL_NUMBER' => $entityId == 'UNIFY_CALL_CHAT'? '': $entityId,
'ENTITY_TYPE' => 'CALL',
'ENTITY_ID' => $entityId,
));
if ($chatId)
{
$dialogId = 'chat'.$chatId;
$avatarId = $CIMChat->lastAvatarId;
}
}
if ($getPhoto && intval($avatarId) > 0)
{
$arPhotoHrTmp = CFile::ResizeImageGet(
$avatarId,
array('width' => 200, 'height' => 200),
BX_RESIZE_IMAGE_EXACT,
false,
false,
true
);
$hrPhoto[$dialogId] = empty($arPhotoHrTmp['src'])? '/bitrix/js/im/images/hidef-avatar-v2.png': $arPhotoHrTmp['src'];
}
}
else if ($userId)
{
if ($getPhoto)
{
$userData = CIMContactList::GetUserData(Array('ID' => $userId, 'DEPARTMENT' => 'N', 'HR_PHOTO' => 'Y'));
$hrPhoto = $userData['hrphoto'];
}
$dialogId = $userId;
}
if (!$dialogId)
{
$this->error = new CVoxImplantError(__METHOD__, 'ERROR_NEW_CHAT', GetMessage('VI_ERROR_NEW_CHAT'));
return false;
}
//foreach(GetModuleEvents("voximplant", "OnGetDialogInfo", true) as $arEvent)
// ExecuteModuleEventEx($arEvent, array('USER_ID' => $this->userId, 'DIALOG_ID' => $dialogId));
return Array(
'DIALOG_ID' => $dialogId,
'HR_PHOTO' => $hrPhoto,
'UNIFIED' => $isUnified,
);
}