- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/NotifyChat.php
- Класс: BitrixImV2ChatNotifyChat
- Вызов: NotifyChat::validateMessage
public function validateMessage(Message $message, SendingConfig $sendingServiceConfig): Result
{
$result = new Result;
if (!$this->getAuthorId())
{
return $result->addError(new ChatError(ChatError::WRONG_RECIPIENT));
}
$blockedExternalAuthId = UserTable::filterExternalUserTypes(['replica']);
$recipient = User::getInstance($this->getAuthorId());
if (
!$recipient->isActive()
|| in_array($recipient->getExternalAuthId(), $blockedExternalAuthId, true)
)
{
return $result->addError(new ChatError(ChatError::WRONG_RECIPIENT));
}
if (
!$message->getMessage()
&& !$message->getParams()->isSet(Params::ATTACH)
)
{
return $result->addError(new MessageError(MessageError::EMPTY_MESSAGE));
}
if (
!$message->getNotifyType()
|| !in_array($message->getNotifyType(), [IM_NOTIFY_CONFIRM, IM_NOTIFY_SYSTEM, IM_NOTIFY_FROM], true)
)
{
$result->addError(new MessageError(MessageError::NOTIFY_TYPE));
}
if (!$message->getNotifyModule())
{
$result->addError(new MessageError(MessageError::NOTIFY_MODULE));
}
if (!$message->getNotifyEvent())
{
$result->addError(new MessageError(MessageError::NOTIFY_EVENT));
}
if(
$message->getNotifyType() === IM_NOTIFY_CONFIRM
&& !$message->getNotifyButtons()
)
{
$result->addError(new MessageError(MessageError::NOTIFY_BUTTONS));
}
if(
$message->getNotifyType() === IM_NOTIFY_FROM
&& !$message->getAuthorId()
)
{
$result->addError(new MessageError(MessageError::WRONG_SENDER));
}
return $result;
}