- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_history.php
- Класс: CIMHistory
- Вызов: CIMHistory::SearchChatMessage
function SearchChatMessage($searchText, $chatId, $bTimeZone = true)
{
$chatId = intval($chatId);
$searchText = trim($searchText);
if ($searchText == '')
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_HISTORY_SEARCH_EMPTY"), "ERROR_SEARCH_EMPTY");
return false;
}
if (!BitrixImDialog::hasAccess('chat'.$chatId, $this->user_id))
{
return false;
}
$where = Array(
'=CHAT_ID' => $chatId,
'*%MESSAGE' => $searchText,
);
if($this->checkFullText($searchText))
{
$where = Array(
'=CHAT_ID' => $chatId,
'*INDEX.SEARCH_CONTENT' => BitrixMainSearchContent::prepareStringToken($searchText),
);
}
$ar = CIMChat::GetRelationById($chatId, $this->user_id, true, false);
if ($ar && $ar['START_ID'] > 0)
{
$where['>=ID'] = intval($ar['START_ID']);
}
$orm = BitrixImModelMessageTable::getList(
[
'select' => [
'ID',
'CHAT_ID',
'MESSAGE',
'AUTHOR_ID',
'DATE_CREATE'
],
'filter' => $where,
'order' => ['DATE_CREATE' => 'DESC', 'ID' => 'DESC'],
'limit' => 1000,
]
);
$arMessages = Array();
$arMessageId = Array();
$arUnreadMessage = Array();
$usersMessage = Array();
while ($arRes = $orm->fetch())
{
$arMessages[$arRes['ID']] = Array(
'id' => $arRes['ID'],
'chatId' => $arRes['CHAT_ID'],
'senderId' => $arRes['AUTHOR_ID'],
'recipientId' => $arRes['CHAT_ID'],
'date' => $arRes['DATE_CREATE'],
'text' => BitrixImText::parse($arRes['MESSAGE']),
'textLegacy' => BitrixImText::parseLegacyFormat($arRes['MESSAGE'])
);
$usersMessage[$arRes['CHAT_ID']][] = $arRes['ID'];
$arMessageId[] = $arRes['ID'];
}
$params = CIMMessageParam::Get($arMessageId);
$arFiles = Array();
foreach ($params as $messageId => $param)
{
$arMessages[$messageId]['params'] = $param;
if (isset($param['FILE_ID']))
{
foreach ($param['FILE_ID'] as $fileId)
{
$arFiles[$fileId] = $fileId;
}
}
}
$arMessageFiles = CIMDisk::GetFiles($chatId, $arFiles);
$arMessages = CIMMessageLink::prepareShow($arMessages, $params);
return Array('chatId' => $chatId, 'message' => $arMessages, 'unreadMessage' => $arUnreadMessage, 'usersMessage' => $usersMessage, 'files' => $arMessageFiles);
}