- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_message.php
- Класс: CIMMessage
- Вызов: CIMMessage::GetFormatMessage
static function GetFormatMessage($arParams)
{
$arParams['ID'] = intval($arParams['ID']);
$arParams['TO_USER_ID'] = isset($arParams['TO_CHAT_ID'])? intval($arParams['TO_CHAT_ID']): intval($arParams['TO_USER_ID']);
$arParams['FROM_USER_ID'] = intval($arParams['FROM_USER_ID']);
$arParams['MESSAGE'] = trim($arParams['MESSAGE']);
$arParams['DATE_CREATE'] = intval($arParams['DATE_CREATE']);
$arParams['PARAMS'] = empty($arParams['PARAMS'])? Array(): $arParams['PARAMS'];
$arParams['EXTRA_PARAMS'] = empty($arParams['EXTRA_PARAMS'])? Array(): $arParams['EXTRA_PARAMS'];
$arParams['NOTIFY'] = $arParams['NOTIFY'] === true? true: $arParams['NOTIFY'];
$arUsers = CIMContactList::GetUserData(Array(
'ID' => isset($arParams['TO_CHAT_ID'])? $arParams['FROM_USER_ID']: Array($arParams['TO_USER_ID'], $arParams['FROM_USER_ID']),
'PHONES' => 'Y',
));
$arChat = Array();
if (isset($arParams['TO_CHAT_ID']))
{
$arChat = CIMChat::GetChatData(array(
'ID' => $arParams['TO_CHAT_ID'],
'USE_CACHE' => 'N',
));
$extraParamContext = $arParams['EXTRA_PARAMS']['CONTEXT'] ?? null;
if (!empty($arUsers['users']) && $extraParamContext == 'LIVECHAT' && CModule::IncludeModule('imopenlines'))
{
[$lineId, $userId] = explode('|', $arChat['chat'][$arParams['TO_CHAT_ID']]['entity_id']);
$userCode = 'livechat|' . $lineId . '|' . $arParams['TO_CHAT_ID'] . '|' . $userId;
unset($lineId, $userId);
foreach ($arUsers['users'] as $userId => $userData)
{
$arUsers['users'][$userId] = BitrixImOpenLinesConnector::getOperatorInfo($arParams['EXTRA_PARAMS']['LINE_ID'], $userId, $userCode);
}
}
}
if (isset($arParams['TEMPLATE_ID']))
{
$arParams['TEMPLATE_ID'] = is_numeric($arParams['TEMPLATE_ID'])? (int)$arParams['TEMPLATE_ID']: (string)$arParams['TEMPLATE_ID'];
}
else
{
$arParams['TEMPLATE_ID'] = '';
}
if (isset($arParams['FILE_TEMPLATE_ID']))
{
$arParams['FILE_TEMPLATE_ID'] = is_numeric($arParams['FILE_TEMPLATE_ID'])? (int)$arParams['FILE_TEMPLATE_ID']: (string)$arParams['FILE_TEMPLATE_ID'];
}
else
{
$arParams['FILE_TEMPLATE_ID'] = '';
}
return Array(
'chatId' => $arParams['CHAT_ID'],
'dialogId' => isset($arParams['TO_CHAT_ID'])? 'chat'.$arParams['TO_CHAT_ID']: 0,
'chat' => $arChat['chat'] ?? [],
'lines' => $arChat['lines'][$arParams['CHAT_ID']] ?? null,
'userInChat' => $arChat['userInChat'] ?? [],
'userBlockChat' => $arChat['userChatBlockStatus'] ?? [],
'users' => (is_array($arUsers) && is_array($arUsers['users'])) ? $arUsers['users'] : null,
'message' => Array(
'id' => $arParams['ID'],
'templateId' => $arParams['TEMPLATE_ID'],
'templateFileId' => $arParams['FILE_TEMPLATE_ID'],
'prevId' => intval($arParams['PREV_ID']),
'chatId' => $arParams['CHAT_ID'],
'senderId' => $arParams['FROM_USER_ID'],
'recipientId' => isset($arParams['TO_CHAT_ID'])? 'chat'.$arParams['TO_CHAT_ID']: $arParams['TO_USER_ID'],
'system' => $arParams['SYSTEM'] == 'Y'? 'Y': 'N',
'date' => BitrixMainTypeDateTime::createFromTimestamp($arParams['DATE_CREATE']),
'text' => BitrixImText::parse($arParams['MESSAGE']),
'textLegacy' => BitrixImText::parseLegacyFormat($arParams['MESSAGE']),
'params' => $arParams['PARAMS'],
'counter' => isset($arParams['COUNTER']) && (int)$arParams['COUNTER'] > 0 ? (int)$arParams['COUNTER'] : 0,
'importantFor' => array_values($arParams['IMPORTANT_FOR'] ?? []),
'isImportant' => isset($arParams['IS_IMPORTANT']) && $arParams['IS_IMPORTANT'] === 'Y',
),
'files' => isset($arParams['FILES'])? $arParams['FILES']: [],
'notify' => $arParams['NOTIFY'],
);
}