• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_message.php
  • Класс: CIMMessage
  • Вызов: CIMMessage::GetUnsendMessage
static function GetUnsendMessage($order = "ASC")
{
	//todo: change send mail logic
	global $DB;

	$mailService = new BitrixImV2Mail();

	$unsendIds = $mailService->getMessageIdsToSend();

	if (empty($unsendIds))
	{
		return [];
	}

	$implodeUnsendIds = implode(',', $unsendIds);

	CTimeZone::Disable();
	$strSql ="
		SELECT
			M.ID,
			M.CHAT_ID,
			M.MESSAGE,
			M.MESSAGE_OUT,
			".$DB->DatetimeToTimestampFunction('M.DATE_CREATE')." DATE_CREATE,
			M.EMAIL_TEMPLATE,
			R.USER_ID TO_USER_ID,
			U1.ACTIVE TO_USER_ACTIVE,
			U1.LOGIN TO_USER_LOGIN,
			U1.NAME TO_USER_NAME,
			U1.LAST_NAME TO_USER_LAST_NAME,
			U1.EMAIL TO_USER_EMAIL,
			U1.LID TO_USER_LID,
			U1.AUTO_TIME_ZONE AUTO_TIME_ZONE,
			U1.TIME_ZONE TIME_ZONE,
			U1.TIME_ZONE_OFFSET TIME_ZONE_OFFSET,
			U1.EXTERNAL_AUTH_ID TO_EXTERNAL_AUTH_ID,
			M.AUTHOR_ID FROM_USER_ID,
			U2.LOGIN FROM_USER_LOGIN,
			U2.NAME FROM_USER_NAME,
			U2.LAST_NAME FROM_USER_LAST_NAME,
			U2.EXTERNAL_AUTH_ID FROM_EXTERNAL_AUTH_ID
		FROM b_im_relation R
		INNER JOIN b_im_message M ON M.CHAT_ID = R.CHAT_ID AND IMPORT_ID IS NULL AND R.USER_ID != M.AUTHOR_ID AND M.ID IN ({$implodeUnsendIds})
		LEFT JOIN b_user U1 ON U1.ID = R.USER_ID
		LEFT JOIN b_user U2 ON U2.ID = M.AUTHOR_ID
		".($order == "DESC"? "ORDER BY M.DATE_CREATE DESC, M.ID DESC": "")."
	";
	CTimeZone::Enable();
	$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); $arMessages = Array(); while ($arRes = $dbRes->Fetch()) { $arRes["DATE_CREATE"] = $arRes["DATE_CREATE"] + CIMMail::GetUserOffset($arRes); $arMessages[$arRes['ID']] = $arRes; } return $arMessages; }