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