- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/User/OwnerService.php
- Класс: BitrixImV2ChatUserOwnerService
- Вызов: OwnerService::migrateOwnershipOfGeneralChatAgent
static function migrateOwnershipOfGeneralChatAgent(): string
{
$generalChatId = COption::GetOptionInt('im', 'general_chat_id');
if (!$generalChatId)
{
return '';
}
$oldChat = ChatChatFactory::getInstance()->getChatById($generalChatId);
if ($oldChat instanceof ChatNullChat)
{
return '';
}
$oldChat
->setType(Chat::IM_TYPE_OPEN)
->setEntityType(Chat::ENTITY_TYPE_GENERAL)
->save();
$generalChat = ChatChatFactory::getInstance()->getGeneralChat();
if (!$generalChat || $generalChat instanceof ChatNullChat)
{
return '';
}
$canPostAll = (COption::GetOptionString('im', 'allow_send_to_general_chat_all', 'Y') === 'Y');
if ($canPostAll)
{
$generalChat
->setCanPost(Chat::MANAGE_RIGHTS_MEMBER)
->save();
return '';
}
$chatRights = COption::GetOptionString('im', 'allow_send_to_general_chat_rights');
if (!$chatRights)
{
return '';
}
$users = UserAccessTable::getList([
'select' => [
'USER_ID'
],
'filter' => [
'=ACCESS_CODE' => explode(',', $chatRights)
],
'group' => [
'USER_ID'
]
])->fetchAll();
if (!$users)
{
return '';
}
$userIds = array_column($users, 'USER_ID');
$relations = $generalChat->getRelations();
foreach ($relations as $relation)
{
if (in_array($relation->getUserId(), $userIds))
{
$relation->setManager(true);
$relation->save();
}
}
$generalChat
->setCanPost(Chat::MANAGE_RIGHTS_MANAGERS)
->save();
return '';
}