• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/helper/workgroup.php
  • Класс: BitrixSocialnetworkHelperWorkgroup
  • Вызов: Workgroup::setOwner
static function setOwner(array $fields = []): bool
{
	global $APPLICATION;

	$groupId = (int) ($fields['groupId'] ?? 0);
	$newOwnerId = (int) ($fields['userId'] ?? 0);
	$currentUserId = User::getCurrentUserId();

	if ($groupId <= 0)
	{
		throw new ArgumentException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_WRONG_GROUP_ID'));
	}

	if ($newOwnerId <= 0)
	{
		throw new ArgumentException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_WRONG_USER_ID'));
	}

	$filter = [
		'ID' => $groupId,
	];

	$isCurrentUserAdmin = static::isCurrentUserModuleAdmin();

	if (!$isCurrentUserAdmin)
	{
		$filter['CHECK_PERMISSIONS'] = $currentUserId;
	}

	$res = CSocNetGroup::getList([], $filter);
	if (!($groupFields = $res->fetch()))
	{
		throw new ObjectNotFoundException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_GROUP_NO_FOUND'));
	}

	$groupPerms = static::getPermissions([
		'groupId' => $groupId,
	]);

	if (!$groupPerms['UserCanModifyGroup'])
	{
		throw new AccessDeniedException(Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_NO_PERMS'));
	}

	if (!CSocNetUserToGroup::setOwner($newOwnerId, $groupFields['ID'], $groupFields))
	{
		if ($ex = $APPLICATION->getException())
		{
			$errorMessage = $ex->getString();
		}
		else
		{
			$errorMessage = Loc::getMessage('SOCIALNETWORK_HELPER_WORKGROUP_ERROR_OPERATION_FAILED');
		}

		throw new Exception($errorMessage, 100);
	}

	return true;
}