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

	$generalChatResult = self::find();
	if ($generalChatResult->hasResult())
	{
		$generalChat = new GeneralChat(['ID' => $generalChatResult->getResult()['ID']]);
		return 	$result->setResult([
			'CHAT_ID' => $generalChat->getChatId(),
			'CHAT' => $generalChat,
		]);
	}

	$params = [
		'TYPE' => self::IM_TYPE_OPEN,
		'ENTITY_TYPE' => self::ENTITY_TYPE_GENERAL,
		'COLOR' => 'AZURE',
		'TITLE' => Loc::getMessage('IM_CHAT_GENERAL_TITLE'),
		'DESCRIPTION' => Loc::getMessage('IM_CHAT_GENERAL_DESCRIPTION'),
		'AUTHOR_ID' => 0
	];

	$chat = new static($params);
	$chat->setExtranet(false);
	$chat->save();

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

	$chat->sendBanner();

	$adminIds = [];
	if (Loader::includeModule('bitrix24'))
	{
		$adminIds = CBitrix24::getAllAdminId();
	}

	foreach ($this->getUsersForInstall() as $user)
	{
		$relation = new Relation();
		$relation->setChatId($chat->getChatId());
		$relation->setUserId((int)$user['ID']);
		$relation->setManager(in_array((int)$user['ID'], $adminIds, true));
		$relation->setMessageType(self::IM_TYPE_OPEN);
		$relation->setStatus(IM_STATUS_READ);
		$relation->save();
	}

	$chat->addIndex();

	self::linkGeneralChat($chat->getChatId());

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

	self::cleanGeneralChatCache(self::ID_CACHE_ID);
	self::cleanGeneralChatCache(self::MANAGERS_CACHE_ID);
	self::cleanCache($chat->getChatId());

	return $result;
}