Без регистрации, отправки смс-сообщений и прав модератора.
В продолжение темы полезных скриптов и инструментов. Недавно мы рассмотрели пример кастомного решения, с помощью которого можно сменить владельца чата в коробочной версии Битрикс24. Сегодня мы реализуем скрипт, который позволит исключать пользователей из чата без получения прав модератора.
Механизм достаточно узконаправленный, но иногда в нем возникает необходимость. Например, модератор чата в данный момент недоступен, при этом есть острая необходимость исключить из чата одного или нескольких сотрудников. В этом нам поможет метод CIMChat::DeleteUser(). С исходным кодом можно ознакомиться здесь.
Функция принимает 5 значений. Первые 3 — нам уже знакомы:
$chatId — уникальный идентификатор чата
$userId — идентификатор нового владельца чата
$checkPermission — проверка прав. передаем false чтобы выполнять операцию мог не только модератор чата
$skipMessage и $skipRecent — отвечают за отключение отправки системного уведомления об исключении пользователя. Передаем true, напишем собственное уведомление
Создадим HTML-форму:
<form method="post" action="?exclude_user=YES">
<div class="form-control">
<div class="form-group">
<label>ID чата</label>
<input type="text" class="form-control" id="chatId" name="chatId">
</div>
<div class="form-group">
<label>ID исключаемого пользователя</label>
<input type="text" class="form-control" id="userId" name="userId">
</div>
</div>
<button type="submit" id="send" name="send" class="btn btn-primary">Исключить пользователя</button>
</form>
Идентификатор чата, как нам уже известно из предыдущей статьи, можно узнать с помощью служебной команды /getChatId.
Код обработчика:
if (CModule::IncludeModule('im'))
{
$chatId = $_POST['chatId'];
$userId = $_POST['userId'];
//получаем данные о пользователе
$rsUser = CUser::GetByID($userId);
$arUser = $rsUser->Fetch();
$CElement = new CIMChat;
$change = $CElement->DeleteUser($chatId, $userId, false, true, true);
if ($change == 1){
/*отправляем уведомление*/
$ar = Array(
"TO_CHAT_ID" => $chatId, // ID чата
"FROM_USER_ID" => 0,
"SYSTEM" => Y,
"MESSAGE" => "Администратор исключил ".$arUser['NAME']." ".$arUser['LAST_NAME']." из чата.",
);
CIMChat::AddMessage($ar);
echo 'Пользователь успешно исключен из чата!';
}else{
echo'В процессе выполнения скрипта возникла ошибка. ';
}
}
Оставить комментарий