- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/mail.php
- Класс: BitrixImOpenLinesMail
- Вызов: Mail::prepareOperatorAnswerForTemplate
static function prepareOperatorAnswerForTemplate($sessionId, $setSendFlag = true)
{
if (!BitrixMainLoader::includeModule('im'))
{
return false;
}
$sessionId = intval($sessionId);
if (!$sessionId)
return false;
$select = ModelSessionTable::getSelectFieldsPerformance();
$select['CONFIG_LANGUAGE_ID'] = 'CONFIG.LANGUAGE_ID';
$orm = ModelSessionTable::getList(Array(
'select' => $select,
'filter' => Array('=ID' => $sessionId)
));
$session = $orm->fetch();
if (!$session || $session['SOURCE'] != 'livechat')
{
return false;
}
$parsedUserCode = SessionCommon::parseUserCode($session['USER_CODE']);
$chatId = $parsedUserCode['EXTERNAL_CHAT_ID'];
$CIMChat = new CIMChat($session['USER_ID']);
$result = $CIMChat->GetLastMessageLimit($chatId, $session['START_ID'], $session['END_ID'], false, false);
if (!$result)
{
return false;
}
$messages = Array();
$findClientMessage = false;
$findOperatorMessage = false;
$lastMessageId = null;
foreach ($result['message'] as $messageId => $messageData)
{
if (!$lastMessageId)
{
$lastMessageId = $messageId;
}
if (count($messages) == 0 && $messageId == $session['LAST_SEND_MAIL_ID'])
{
break;
}
if ($messageId < $session['LAST_SEND_MAIL_ID'])
{
if ($findClientMessage && $messageData['senderId'] != $session['USER_ID'])
{
if ($findClientMessage)
{
break;
}
}
}
if ($messageData['senderId'] == $session['USER_ID'])
{
$findClientMessage = true;
}
else
{
$findOperatorMessage = true;
}
$messages[$messageId] = $messageData;
}
if (!$findOperatorMessage)
return false;
BitrixMainTypeCollection::sortByColumn($messages, Array('id' => SORT_ASC), '', null, true);
$result['message'] = $messages;
$messages = self::prepareMessagesForTemplate($session, $result, $session['CONFIG_LANGUAGE_ID']);
if ($setSendFlag)
{
Session::setLastSendMailId($session, $lastMessageId);
}
return $messages;
}