• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/access/chatauthprovider.php
  • Класс: BitrixImAccessChatAuthProvider
  • Вызов: ChatAuthProvider::addChatCodes
public function addChatCodes(int $chatId, array $userIds): void
{
	$userIds = array_filter(array_map('intVal', $userIds));
	if ($chatId > 0 && !empty($userIds))
	{
		$connection = BitrixMainApplication::getConnection();
		$helper = $connection->getSqlHelper();
		$providerId = $helper->forSql($this->id);
		$accessCode = $helper->forSql($this->generateAccessCode($chatId));

		$users = implode(',', $userIds);
		$connection->queryExecute(/** @lang mysql */ "
			INSERT INTO b_user_access (USER_ID, PROVIDER_ID, ACCESS_CODE)
			SELECT ID, '{$providerId}', '{$accessCode}'
			FROM b_user
			WHERE ID IN({$users})
		");

		foreach ($userIds as $uid)
		{
			CAccess::ClearCache($uid);
		}
	}
}