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