3namespace Bitrix\Im\V2\Chat;
5use Bitrix\Im\V2\Message\Send\SendResult;
7use Bitrix\Main\Localization\Loc;
10use Bitrix\Im\Model\UserTable;
11use Bitrix\Im\Model\MessageTable;
13use Bitrix\Im\V2\Message;
14use Bitrix\Im\V2\Message\MessageError;
15use Bitrix\Im\V2\Result;
16use Bitrix\Im\V2\Service\Context;
17use Bitrix\Im\V2\Service\Locator;
18use Bitrix\Im\V2\Message\Send\SendingConfig;
19use Bitrix\Im\V2\Message\Send\SendingService;
20use Bitrix\Im\V2\Message\Send\PushService;
21use Bitrix\Im\V2\Message\Params;
22use Bitrix\Im\V2\Message\ReadService;
28 return self::IM_TYPE_SYSTEM;
55 if (!isset(
$params[
'AUTHOR_ID']))
57 if (!isset(
$params[
'TO_USER_ID']))
90 if (empty(
$params[
'TO_USER_ID']))
105 !($userData =
$res->fetch())
106 || $userData[
'ACTIVE'] ==
'N'
107 || in_array($userData[
'EXTERNAL_AUTH_ID'], $blockedExternalAuthId,
true)
118 WHERE AUTHOR_ID = " .
$params[
'TO_USER_ID'] .
" AND TYPE = '" . self::IM_TYPE_SYSTEM .
"'
121 if ($row =
$res->fetch())
124 'ID' => (
int)$row[
'ID'],
125 'TYPE' => $row[
'TYPE'],
126 'ENTITY_TYPE' => $row[
'ENTITY_TYPE'],
127 'ENTITY_ID' => $row[
'ENTITY_ID'],
139 if ($paramsResult->isSuccess())
141 $params = $paramsResult->getResult();
145 return $result->addErrors($paramsResult->getErrors());
151 !($userData =
$res->fetch())
152 || $userData[
'ACTIVE'] ==
'N'
153 || in_array($userData[
'EXTERNAL_AUTH_ID'], $blockedExternalAuthId,
true)
162 if ($chat->getChatId() <= 0)
167 \Bitrix\Im\Model\RelationTable::add([
168 'CHAT_ID' => $chat->getChatId(),
170 'USER_ID' =>
$params[
'AUTHOR_ID'],
173 $chat->isFilledNonCachedData =
false;
176 'CHAT_ID' => $chat->getChatId(),
355 if (!$this->getAuthorId())
360 $blockedExternalAuthId = UserTable::filterExternalUserTypes([
'replica']);
363 !$recipient->isActive()
364 || in_array($recipient->getExternalAuthId(), $blockedExternalAuthId,
true)
372 && !
$message->getParams()->isSet(Params::ATTACH)
413 $chatId = $this->getChatId();
415 if ($chatId ===
null || $chatId === 0)
421 $this->setMessageCount(0)->save();
441 $lastMessages = MessageTable::getList([
442 'select' => [
'ID',
'AUTHOR_ID'],
444 '=NOTIFY_TAG' =>
$message->getNotifyTag(),
445 '=CHAT_ID' => $this->getChatId(),
449 while ($lastMessage = $lastMessages->fetch())
451 $lastMessageParams =
new Params();
452 $lastMessageParams->loadByMessageId($lastMessage[
'ID']);
454 if ($lastMessageParams->isSet(Params::USERS))
456 $users = array_merge($users, $lastMessageParams->get(Params::USERS)->getValue());
458 $users[] = (int)$lastMessage[
'AUTHOR_ID'];
460 \CIMNotify::Delete($lastMessage[
'ID']);
464 ->setValue(array_unique($users))
465 ->unsetValue(
$message->getAuthorId())
474 if (!empty(
$message->getNotifyButtons()))
476 $buttons =
$message->getNotifyButtons();
477 foreach ($buttons as $index => $button)
481 && !empty($button[
'TITLE'])
482 && !empty($button[
'VALUE'])
483 && !empty($button[
'TYPE'])
489 $buttons[$index] = $button;
493 unset($buttons[$index]);
501 'TITLE' => Loc::getMessage(
'IM_NOTIFY_CONFIRM_BUTTON_ACCEPT'),
506 'TITLE' => Loc::getMessage(
'IM_NOTIFY_CONFIRM_BUTTON_CANCEL'),
513 $message->setNotifyButtons($buttons);
524 \CIMNotify::DeleteByTag(
$message->getNotifyTag());
530 if (Loader::includeModule(
'pull'))
533 $this->getContext()->getUserId(),
536 'command' =>
'notifyDeleteAll',
538 'chatId' => $this->getChatId(),
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static filterExternalUserTypes(array $skipTypes=[])
checkAccessInternal(int $userId)
add(array $params, ?Context $context=null)
dropAllConfirmByTag(Message $message)
getPushService(Message $message, SendingConfig $config)
static getByUser(?int $userId=null)
sendMessage($message, $sendingConfig=null)
static find(array $params=[], ?Context $context=null)
validateMessage(Message $message, SendingConfig $sendingServiceConfig)
getStartId(?int $userId=null)
prepareParams(array $params=[])
prepareConfirm(Message $message)
dropOtherUserNotificationByTag(Message $message)
static deleteByChatId(int $chatId, int $userId)
static getConnection($name="")
static add($recipient, array $parameters, $channelType=\CPullChannel::TYPE_PRIVATE)
static send($userId=null, $appId=self::MOBILE_APP)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']