• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/FavoriteChat.php
  • Класс: BitrixImV2ChatFavoriteChat
  • Вызов: FavoriteChat::add
public function add(array $params, ?Context $context = null): Result
{
	$result = new Result;

	$paramsResult = $this->prepareParams($params);
	if (!$paramsResult->isSuccess())
	{
		return $result->addErrors($paramsResult->getErrors());
	}

	$params = $paramsResult->getResult();

	$chat = $this->getFavoriteChat($params['AUTHOR_ID'] ?? null);

	if (!$chat)
	{
		$chat = new static($params);
		$chat
			->setTitle(Loc::getMessage('IM_CHAT_FAVORITE_TITLE_V2'))
			->setDescription(Loc::getMessage('IM_CHAT_FAVORITE_DESCRIPTION'))
			->save()
		;

		if (!$chat->getChatId())
		{
			return $result->addError(new ChatError(ChatError::CREATION_ERROR));
		}

		if ($chat->getAuthorId() > 0)
		{
			RelationTable::add([
				'CHAT_ID' => $chat->getChatId(),
				'MESSAGE_TYPE' => IM_MESSAGE_PRIVATE,
				'USER_ID' => $chat->getAuthorId(),
				'STATUS' => IM_STATUS_READ,
			]);
		}
	}

	$result->setResult([
		'CHAT_ID' => $chat->getChatId(),
		'CHAT' => $chat,
	]);

	return $result;
}