• Модуль: 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'],
	);
}