- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/user.php
- Класс: BitrixMailUser
- Вызов: User::sendEventAgent
static function sendEventAgent($messageId = 0, $cnt = 0)
{
$messageId = intval($messageId);
if ($messageId <= 0)
{
return;
}
$res = UserMessageTable::getList(array(
'filter' => array(
'=ID' => $messageId
)
));
if ($messageFields = $res->fetch())
{
if (intval($cnt) > 10)
{
if (MainLoader::includeModule('im'))
{
$title = trim($messageFields['SUBJECT']);
if ($title == '')
{
$title = trim($messageFields['CONTENT']);
$title = preg_replace("/[ATTACHMENTs*=s*[^]]*]/is".BX_UTF_PCRE_MODIFIER, "", $title);
$CBXSanitizer = new CBXSanitizer;
$CBXSanitizer->delAllTags();
$title = $CBXSanitizer->sanitizeHtml($title);
}
CIMNotify::add(array(
"MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
"NOTIFY_TYPE" => IM_NOTIFY_SYSTEM,
"NOTIFY_MODULE" => "mail",
"NOTIFY_EVENT" => "user_message_failed",
"TO_USER_ID" => $messageFields['USER_ID'],
"NOTIFY_MESSAGE" => Loc::getMessage("MAIL_USER_MESSAGE_FAILED", array(
"#TITLE#" => $title
))
));
}
UserMessageTable::delete($messageId);
return;
}
switch ($messageFields['TYPE'])
{
case 'rpl':
$eventId = sprintf('onReplyReceived%s', $messageFields['ENTITY_TYPE']);
break;
case 'fwd':
$eventId = sprintf('onForwardReceived%s', $messageFields['ENTITY_TYPE']);
break;
}
if (!empty($eventId))
{
$attachments = array();
if (!empty($messageFields['ATTACHMENTS']))
{
$tmpAttachments = unserialize($messageFields['ATTACHMENTS'], ['allowed_classes' => false]);
if (is_array($tmpAttachments))
{
foreach($tmpAttachments as $key => $uploadFile)
{
$file = CFile::makeFileArray($uploadFile);
if (
is_array($file)
&& !empty($file)
)
{
$file['name'] = $key;
$attachments[$key] = $file;
}
}
}
}
$event = new MainEvent(
'mail', $eventId,
array(
'site_id' => $messageFields['SITE_ID'],
'entity_id' => $messageFields['ENTITY_ID'],
'from' => $messageFields['USER_ID'],
'subject' => $messageFields['SUBJECT'],
'content' => $messageFields['CONTENT'],
'attachments' => $attachments
)
);
$event->send();
foreach ($event->getResults() as $eventResult)
{
if ($eventResult->getType() == BitrixMainEventResult::ERROR)
{
$cnt++;
global $pPERIOD;
$pPERIOD = 10 + (60 * $cnt);
return "\Bitrix\Mail\User::sendEventAgent(".$messageId.", ".$cnt.");";
}
}
UserMessageTable::delete($messageId);
}
}
return;
}