- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/Permission.php
- Класс: BitrixImV2ChatPermission
- Вызов: Permission::getByChatTypes
public function getByChatTypes(): array
{
if (isset(self::$permissionsByChatTypes))
{
return self::$permissionsByChatTypes;
}
$generalChat = GeneralChat::get();
$roleForPostToGeneral = Chat::ROLE_MEMBER;
if ($generalChat !== null)
{
$roleForPostToGeneral = $generalChat->getCanPost();
}
$default = [
self::ACTION_CHANGE_AVATAR => Chat::ROLE_MEMBER,
self::ACTION_RENAME => Chat::ROLE_MEMBER,
self::ACTION_EXTEND => Chat::ROLE_MEMBER,
self::ACTION_CALL => Chat::ROLE_MEMBER,
self::ACTION_MUTE => Chat::ROLE_MEMBER,
self::ACTION_LEAVE => Chat::ROLE_MEMBER,
self::ACTION_LEAVE_OWNER => Chat::ROLE_MEMBER,
self::ACTION_SEND => Chat::ROLE_MEMBER,
self::ACTION_USER_LIST => Chat::ROLE_MEMBER,
];
self::$permissionsByChatTypes[self::TYPE_DEFAULT] = $default;
self::$permissionsByChatTypes[self::TYPE_GENERAL] = [
self::ACTION_CHANGE_AVATAR => Chat::ROLE_NONE,
self::ACTION_RENAME => Chat::ROLE_NONE,
self::ACTION_EXTEND => Chat::ROLE_NONE,
self::ACTION_LEAVE => Chat::ROLE_NONE,
self::ACTION_LEAVE_OWNER => Chat::ROLE_NONE,
self::ACTION_SEND => $roleForPostToGeneral,
];
self::$permissionsByChatTypes[self::TYPE_ANNOUNCEMENT] = [
self::ACTION_LEAVE_OWNER => Chat::ROLE_OWNER,
self::ACTION_SEND => Chat::ROLE_MANAGER,
];
if (Loader::includeModule('imbot'))
{
self::$permissionsByChatTypes[BitrixImBotServiceNotifier::CHAT_ENTITY_TYPE] = [
self::ACTION_CHANGE_AVATAR => Chat::ROLE_NONE,
self::ACTION_RENAME => Chat::ROLE_NONE,
self::ACTION_LEAVE_OWNER => Chat::ROLE_NONE,
];
self::$permissionsByChatTypes[BitrixImBotBotSupport24::CHAT_ENTITY_TYPE] = [
self::ACTION_CHANGE_AVATAR => Chat::ROLE_NONE,
self::ACTION_EXTEND => Chat::ROLE_NONE,
self::ACTION_CALL => Chat::ROLE_NONE,
self::ACTION_MUTE => Chat::ROLE_NONE,
self::ACTION_LEAVE => Chat::ROLE_NONE,
self::ACTION_LEAVE_OWNER => Chat::ROLE_NONE,
self::ACTION_USER_LIST => Chat::ROLE_NONE,
];
}
if (Loader::includeModule('socialnetwork'))
{
self::$permissionsByChatTypes[self::TYPE_SONET] = [
self::ACTION_CHANGE_AVATAR => Chat::ROLE_NONE,
self::ACTION_RENAME => Chat::ROLE_NONE,
self::ACTION_EXTEND => Chat::ROLE_NONE,
self::ACTION_LEAVE => Chat::ROLE_NONE,
self::ACTION_LEAVE_OWNER => Chat::ROLE_NONE,
];
}
if (Loader::includeModule('tasks'))
{
self::$permissionsByChatTypes[self::TYPE_TASKS] = $default;
}
if (Loader::includeModule('calendar'))
{
self::$permissionsByChatTypes[CCalendar::CALENDAR_CHAT_ENTITY_TYPE] = $default;
}
if (BitrixMainLoader::includeModule('crm'))
{
self::$permissionsByChatTypes[self::TYPE_CRM] = [
self::ACTION_CHANGE_AVATAR => Chat::ROLE_NONE,
self::ACTION_RENAME => Chat::ROLE_NONE,
self::ACTION_LEAVE_OWNER => Chat::ROLE_NONE,
];
}
if (BitrixMainLoader::includeModule('voximplant'))
{
self::$permissionsByChatTypes[self::TYPE_CALL] = [
self::ACTION_EXTEND => Chat::ROLE_NONE,
self::ACTION_CALL => Chat::ROLE_NONE,
self::ACTION_MUTE => Chat::ROLE_NONE,
self::ACTION_LEAVE => Chat::ROLE_NONE,
self::ACTION_LEAVE_OWNER => Chat::ROLE_NONE,
];
}
foreach (self::$permissionsByChatTypes as $code => $value)
{
self::$permissionsByChatTypes[$code] = array_merge($default, $value);
}
if ($this->jsonFormat)
{
return $this->converter->process(self::$permissionsByChatTypes);
}
return self::$permissionsByChatTypes;
}