• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_notify.php
  • Класс: CIMNotify
  • Вызов: CIMNotify::GetUnsendNotify
static function GetUnsendNotify() //todo refactor mail send
{
	global $DB;

	$mailService = new IMV2Mail();
	$unsendIds = $mailService->getNotificationIdsToSend(5000);

	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.NOTIFY_TYPE,
				M.NOTIFY_MODULE,
				M.NOTIFY_EVENT,
				M.NOTIFY_TITLE,
				M.NOTIFY_BUTTONS,
				M.NOTIFY_TAG,
				M.NOTIFY_SUB_TAG,
				M.EMAIL_TEMPLATE,
				M.AUTHOR_ID FROM_USER_ID,
				U2.LOGIN FROM_USER_LOGIN,
				U2.NAME FROM_USER_NAME,
				U2.LAST_NAME FROM_USER_LAST_NAME,
				U2.SECOND_NAME FROM_USER_SECOND_NAME,
				U2.EXTERNAL_AUTH_ID FROM_EXTERNAL_AUTH_ID,
				C.AUTHOR_ID TO_USER_ID,
				U1.LOGIN TO_USER_LOGIN,
				U1.NAME TO_USER_NAME,
				U1.LAST_NAME TO_USER_LAST_NAME,
				U1.SECOND_NAME TO_USER_SECOND_NAME,
				U1.EMAIL TO_USER_EMAIL,
				U1.ACTIVE TO_USER_ACTIVE,
				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
			FROM b_im_message M
			LEFT JOIN b_user U2 ON U2.ID = M.AUTHOR_ID
			LEFT JOIN b_im_chat C ON M.CHAT_ID = C.ID
			LEFT JOIN b_user U1 ON U1.ID = C.AUTHOR_ID
			WHERE M.ID IN ({$implodeUnsendIds})
			ORDER BY M.ID DESC
		";
	$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); CTimeZone::Enable(); $arNotify = Array(); while ($arRes = $dbRes->Fetch()) { $arRes["DATE_CREATE"] = $arRes["DATE_CREATE"] + CIMMail::GetUserOffset($arRes); $arNotify[$arRes['ID']] = $arRes; } return $arNotify; }