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