• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/User/OwnerService.php
  • Класс: BitrixImV2ChatUserOwnerService
  • Вызов: OwnerService::changeChatsOwnerAfterUserFiredAgent
static function changeChatsOwnerAfterUserFiredAgent(int $ownerId): string
{
	$ownerChats = ChatTable::getList([
		'filter' => [
			'AUTHOR_ID' => $ownerId,
			'TYPE' => [Chat::IM_TYPE_OPEN, Chat::IM_TYPE_CHAT]
		]
	]);

	foreach ($ownerChats as $ownerChat)
	{
		$chat = ChatChatFactory::getInstance()->getChat($ownerChat['ID']);

		$ownerRelation = $chat->getRelations([
			'FILTER' => [
				'USER_ID' => $ownerId
			],
			'LIMIT' => 1
		]);
		if ($ownerRelation->getIterator()->current())
		{
			$ownerRelation->getIterator()->current()->setManager(false);
			$ownerRelation->getIterator()->current()->save();
		}

		$relations = $chat->getRelations([
			'FILTER' => [
				'!USER_ID' => $ownerId
			]
		]);
		if ($relations->count())
		{
			foreach ($relations as $relation)
			{
				$user = $relation->getUser();
				if (
					$user->isExist()
					&& $user->isActive()
					&& !$user->isBot()
					&& !$user->isExtranet()
					&& !$user->isConnector()
				)
				{
					$chat->setAuthorId($relation->getUserId());
					$chat->save();

					$relation->setManager(true);
					$relation->save();

					break;
				}
			}
		}
	}

	return '';
}