- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_messenger.php
- Класс: CIMMessenger
- Вызов: CIMMessenger::SendMention
static function SendMention($params)
{
$params['CHAT_ID'] = intval($params['CHAT_ID']);
if (!isset($params['MESSAGE']) || $params['CHAT_ID'] <= 0)
{
return false;
}
$userName = BitrixImUser::getInstance($params['FROM_USER_ID'])->getFullName(false);
$userGender = BitrixImUser::getInstance($params['FROM_USER_ID'])->getGender();
if (!$userName)
{
return false;
}
$orm = BitrixImModelChatTable::getById($params['CHAT_ID']);
$chat = $orm->fetch();
if (!$chat)
{
return false;
}
$params['CHAT_TITLE'] = $chat['TITLE'] ?? '';
$params['CHAT_TYPE'] = trim($chat['TYPE'] ?? '');
$params['CHAT_COLOR'] = trim($chat['COLOR'] ?? '');
$params['CHAT_ENTITY_TYPE'] = trim($chat['CHAT_ENTITY_TYPE'] ?? '');
$params['CHAT_AVATAR'] = intval($chat['AVATAR']);
if (!in_array($params['CHAT_TYPE'], Array(IM_MESSAGE_OPEN, IM_MESSAGE_CHAT, IM_MESSAGE_OPEN_LINE)))
{
return false;
}
if (!isset($params['CHAT_RELATION']))
{
$params['CHAT_RELATION'] = CIMChat::GetRelationById($params['CHAT_ID'], false, true, false);
}
$mentionUsers = $params['MENTION_USERS'] ?? self::getMentionUsers($params['MESSAGE'] ?? '');
$forUsers = self::prepareUsersForMention($mentionUsers, $params);
$chatTitle = mb_substr(htmlspecialcharsback($params['CHAT_TITLE']), 0, 32);
$notifyMail = GetMessage('IM_MESSAGE_MENTION_'.($userGender=='F'?'F':'M'), Array('#TITLE#' => $chatTitle));
$notifyText = GetMessage('IM_MESSAGE_MENTION_'.($userGender=='F'?'F':'M'), Array('#TITLE#' => '[CHAT='.$params['CHAT_ID'].']'.$chatTitle.'[/CHAT]'));
$pushText = GetMessage('IM_MESSAGE_MENTION_PUSH_2_'.($userGender=='F'?'F':'M'), Array('#USER#' => $userName, '#TITLE#' => $chatTitle)).': '.self::PrepareParamsForPush(Array('MESSAGE' => $params['MESSAGE'], 'FILES' => $params['FILES']));
if ($pushText <> '')
{
foreach ($forUsers as $userId)
{
if ($params['FROM_USER_ID'] == $userId)
continue;
$arMessageFields = array(
"TO_USER_ID" => $userId,
"FROM_USER_ID" => $params['FROM_USER_ID'],
"NOTIFY_TYPE" => IM_NOTIFY_FROM,
"NOTIFY_MODULE" => "im",
"NOTIFY_EVENT" => "mention",
"NOTIFY_TAG" => 'IM|MENTION|'.$params['CHAT_ID'],
"NOTIFY_SUB_TAG" => 'IM_MESS_'.$params['CHAT_ID'].'_'.$userId,
"NOTIFY_MESSAGE" => $notifyText,
"NOTIFY_MESSAGE_OUT" => $notifyMail,
);
CIMNotify::Add($arMessageFields);
BitrixPullPush::add($userId, self::PreparePushForMentionInChat(Array(
'CHAT_ID' => $params['CHAT_ID'],
'CHAT_TITLE' => $params['CHAT_TITLE'],
'CHAT_TYPE' => $params['CHAT_TYPE'],
'CHAT_AVATAR' => $params['CHAT_AVATAR'],
'CHAT_ENTITY_TYPE' => $params['CHAT_ENTITY_TYPE'],
'FROM_USER_ID' => $params['FROM_USER_ID'],
'MESSAGE' => $pushText,
)));
}
}
return true;
}