• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_rest.php
  • Класс: CIMRestService
  • Вызов: CIMRestService::chatUserDelete
static function chatUserDelete($arParams, $n, CRestServer $server)
{
	global $USER;

	$arParams = array_change_key_case($arParams, CASE_UPPER);

	if (isset($arParams['DIALOG_ID']))
	{
		if (BitrixImCommon::isChatId($arParams['DIALOG_ID']))
		{
			$arParams['CHAT_ID'] = BitrixImDialog::getChatId($arParams['DIALOG_ID']);
		}
		else
		{
			throw new BitrixRestRestException("Dialog ID can't be empty", "DIALOG_ID_EMPTY", CRestServer::STATUS_WRONG_REQUEST);
		}
	}

	$arParams['CHAT_ID'] = intval($arParams['CHAT_ID']);
	$arParams['USER_ID'] = intval($arParams['USER_ID']);

	if ($arParams['CHAT_ID'] <= 0)
	{
		throw new BitrixRestRestException("Chat ID can't be empty", "CHAT_ID_EMPTY", CRestServer::STATUS_WRONG_REQUEST);
	}

	if (CIMChat::GetGeneralChatId() == $arParams['CHAT_ID'])
	{
		throw new BitrixRestRestException("Action unavailable", "ACCESS_ERROR", CRestServer::STATUS_FORBIDDEN);
	}

	if (!Chat::isActionAllowed('chat' . $arParams['CHAT_ID'], 'LEAVE'))
	{
		throw new BitrixRestRestException('It is forbidden to delete users of this chat', 'ACCESS_ERROR', CRestServer::STATUS_FORBIDDEN);
	}

	$userId = $USER->GetID();
	if (in_array($server->getMethod(), Array("imbot.chat.leave", "imbot.chat.user.delete")))
	{
		$userId = self::getBotId($arParams, $server);
	}

	if (in_array($server->getMethod(), Array("im.chat.user.delete", "imbot.chat.user.delete")) && $arParams['USER_ID'] <= 0)
	{
		throw new BitrixRestRestException("User ID can't be empty", "USER_ID_EMPTY", CRestServer::STATUS_WRONG_REQUEST);
	}

	$CIMChat = new CIMChat($userId);
	$result = $CIMChat->DeleteUser($arParams['CHAT_ID'], $arParams['USER_ID'] > 0? $arParams['USER_ID']: $userId);
	if (!$result)
	{
		$error = $GLOBALS['APPLICATION']->GetException();
		if ($error->GetID() === 'LEAVE_OWNER_FORBIDDEN')
		{
			throw new BitrixRestRestException($error->GetString(), "ACCESS_ERROR", CRestServer::STATUS_FORBIDDEN);
		}

		throw new BitrixRestRestException("You don't have access or user isn't member in chat", "WRONG_REQUEST", CRestServer::STATUS_WRONG_REQUEST);
	}

	return true;
}