• Модуль: 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;
}