- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_history.php
- Класс: CIMHistory
- Вызов: CIMHistory::GetPreviousMessages
private function GetPreviousMessages($messageId, $chatId = null, $dateCreate = null, $limit = 10, $timezone = true)
{
global $DB;
if (is_null($chatId) || !is_object($dateCreate))
{
$message = BitrixImModelMessageTable::getList(Array('select' => Array('DATE_CREATE', 'CHAT_ID'), 'filter' => Array('=ID' => $messageId)))->fetch();
if (!$message)
return false;
$chatId = $message['CHAT_ID'];
$dateCreate = $message['DATE_CREATE'];
}
else
{
$chatId = intval($chatId);
}
$limit = intval($limit)+1;
if (!$timezone)
CTimeZone::Disable();
$sql =
"SELECT
ID,
CHAT_ID,
MESSAGE,
".$DB->DatetimeToTimestampFunction('DATE_CREATE')." DATE_CREATE,
AUTHOR_ID
FROM b_im_message
WHERE
CHAT_ID = ".$chatId."
and DATE_CREATE <= '".$dateCreate->format('Y-m-d H:i:s')."'
ORDER BY CHAT_ID, DATE_CREATE desc
LIMIT ".$limit;
if (!$timezone)
CTimeZone::Enable();
$result = $DB->Query($sql, false, "File: ".__FILE__."
Line: ".__LINE__);
$messages = array();
while ($message = $result->Fetch())
{
$messages[$message['ID']] = $message;
}
asort($messages);
return $messages;
}