• Модуль: 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 '';
}