- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_notify.php
- Класс: CIMNotify
- Вызов: CIMNotify::ConfirmBySubTag
static function ConfirmBySubTag($notifySubTag, $resultMessages)
{
global $DB;
$notifySubTag = (string)$notifySubTag;
if ($notifySubTag == '')
return false;
$dbRes = $DB->Query("
SELECT M.ID, M.NOTIFY_TYPE, R.USER_ID, R.STATUS, R.CHAT_ID
FROM b_im_relation R, b_im_message M
WHERE M.CHAT_ID = R.CHAT_ID AND M.NOTIFY_SUB_TAG = '".$DB->ForSQL($notifySubTag)."'", false, "File: ".__FILE__."
Line: ".__LINE__);
$arUsers = Array();
$arChatId = Array();
$messages = Array();
while ($row = $dbRes->Fetch())
{
$messages[$row['ID']] = $row;
$arUsers[$row['USER_ID']] = $row['USER_ID'];
$arChatId[$row['CHAT_ID']] = $row['CHAT_ID'];
}
$pullActive = false;
if (CModule::IncludeModule("pull"))
$pullActive = true;
$arUsersSend = Array();
foreach ($arUsers as $userId => $count)
{
CIMMessenger::SpeedFileDelete($userId, IM_SPEED_NOTIFY);
if ($count > 0)
{
$arUsersSend[] = $userId;
}
if ($pullActive)
{
CPushManager::DeleteFromQueueBySubTag($userId, $notifySubTag);
}
}
$counters = self::GetCounters(array_keys($arChatId));
if (count($messages) > 0)
{
foreach ($messages as $messageId => $message)
{
self::Delete($messageId);
if ($pullActive)
{
BitrixPullEvent::add($message['USER_ID'], Array(
'module_id' => 'im',
'command' => 'notifyConfirm',
'params' => Array(
'id' => $messageId,
'chatId' => $message['CHAT_ID'],
'confirmMessages' => $resultMessages,
'counter' => $counters[$message['CHAT_ID']],
),
'extra' => BitrixImCommon::getPullExtra()
));
}
}
}
return true;
}