• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/tools/correction.php
  • Класс: BitrixImOpenLinesToolsCorrection
  • Вызов: Correction::setSessionsThatNotShown
static function setSessionsThatNotShown(int $limit = 0): array
{
	$result = [];

	$connection = Application::getConnection();

	$sql = "
		SELECT
			b_imopenlines_session.ID AS SESSION_ID,
			b_im_chat.LAST_MESSAGE_ID AS LAST_MESSAGE_ID,
			b_im_chat.ID AS CHAT_ID,
			(
				SELECT b_im_message.DATE_CREATE
				FROM b_im_message
				WHERE b_im_message.CHAT_ID = b_imopenlines_session.CHAT_ID AND
					b_im_message.AUTHOR_ID != 0
				ORDER BY b_im_message.DATE_CREATE DESC
				LIMIT 1
			) as DATE_SEND_LAST_MESSAGE
		FROM
			b_imopenlines_session_check,
			b_imopenlines_session,
			b_im_chat,
			b_imopenlines_config
		WHERE
			0 = (
				SELECT
					   count(*)
				FROM
					 b_im_relation
				WHERE
					b_im_relation.CHAT_ID = b_imopenlines_session.CHAT_ID AND
					b_im_relation.USER_ID != b_imopenlines_session.USER_ID
				) 
			AND
			0 < (
				SELECT count(*)
				FROM b_imopenlines_session_check
				WHERE b_imopenlines_session_check.SESSION_ID = b_imopenlines_session.ID
				) 
			AND b_imopenlines_session.ID = b_imopenlines_session_check.SESSION_ID 
			AND b_imopenlines_session_check.DATE_QUEUE IS NULL 
			AND b_imopenlines_session.CLOSED != 'Y' 
			AND b_im_chat.ID = b_imopenlines_session.CHAT_ID 
			AND b_imopenlines_session.CONFIG_ID = b_imopenlines_config.ID
		ORDER BY
			DATE_SEND_LAST_MESSAGE DESC
	";

	if (!empty($limit))
	{
		$sql .= ' LIMIT 10 ';
	}

	$raw = $connection->query($sql);
	while ($value = $raw->fetch())
	{
		$result[] = $value;
	}

	return $result;
}