]> source.dussan.org Git - nextcloud-server.git/commitdiff
Map old account scope properties to new names
authorVincent Petry <vincent@nextcloud.com>
Tue, 23 Mar 2021 13:47:10 +0000 (14:47 +0100)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Mon, 29 Mar 2021 07:03:31 +0000 (07:03 +0000)
Use new scope values in settings page.
Adjust all consumers to use the new constants.
Map old scope values to new ones in account property getter.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
16 files changed:
apps/dav/lib/CardDAV/Converter.php
apps/dav/tests/unit/CardDAV/ConverterTest.php
apps/dav/tests/unit/CardDAV/SyncServiceTest.php
apps/files_sharing/lib/Controller/ShareController.php
apps/files_sharing/tests/Controller/ShareControllerTest.php
apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php
apps/settings/js/federationscopemenu.js
apps/settings/js/federationsettingsview.js
apps/settings/lib/Settings/Personal/PersonalInfo.php
apps/settings/tests/Controller/UsersControllerTest.php
lib/private/Accounts/AccountManager.php
lib/private/Accounts/AccountProperty.php
lib/public/Accounts/IAccountManager.php
tests/lib/Accounts/AccountManagerTest.php
tests/lib/Accounts/AccountPropertyTest.php
tests/lib/Accounts/AccountTest.php

index 59e5401d058a8ff3888972320b6abd94a2b4d27b..95ac43aba3649e8b4eb480c94fe8027c2d105fa7 100644 (file)
@@ -71,8 +71,8 @@ class Converter {
 
                foreach ($userData as $property => $value) {
                        $shareWithTrustedServers =
-                               $value['scope'] === AccountManager::VISIBILITY_CONTACTS_ONLY ||
-                               $value['scope'] === AccountManager::VISIBILITY_PUBLIC;
+                               $value['scope'] === AccountManager::SCOPE_FEDERATED ||
+                               $value['scope'] === AccountManager::SCOPE_PUBLISHED;
 
                        $emptyValue = !isset($value['value']) || $value['value'] === '';
 
index aef5cf8ef1c429ec168a10c9aebe41852f2c228e..43344451437c1caf0d6fc77feadc22de9a135a31 100644 (file)
@@ -53,36 +53,36 @@ class ConverterTest extends TestCase {
                                IAccountManager::PROPERTY_DISPLAYNAME =>
                                        [
                                                'value' => $user->getDisplayName(),
-                                               'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+                                               'scope' => AccountManager::SCOPE_FEDERATED,
                                        ],
                                IAccountManager::PROPERTY_ADDRESS =>
                                        [
                                                'value' => '',
-                                               'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                               'scope' => AccountManager::SCOPE_LOCAL,
                                        ],
                                IAccountManager::PROPERTY_WEBSITE =>
                                        [
                                                'value' => '',
-                                               'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                               'scope' => AccountManager::SCOPE_LOCAL,
                                        ],
                                IAccountManager::PROPERTY_EMAIL =>
                                        [
                                                'value' => $user->getEMailAddress(),
-                                               'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+                                               'scope' => AccountManager::SCOPE_FEDERATED,
                                        ],
                                IAccountManager::PROPERTY_AVATAR =>
                                        [
-                                               'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY
+                                               'scope' => AccountManager::SCOPE_FEDERATED
                                        ],
                                IAccountManager::PROPERTY_PHONE =>
                                        [
                                                'value' => '',
-                                               'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                               'scope' => AccountManager::SCOPE_LOCAL,
                                        ],
                                IAccountManager::PROPERTY_TWITTER =>
                                        [
                                                'value' => '',
-                                               'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                               'scope' => AccountManager::SCOPE_LOCAL,
                                        ],
                        ]
                );
index eb8186807c68bc6e699e2b2d092cba7110ba985d..724670bc986875711650f1fb2093061c59332d1f 100644 (file)
@@ -136,36 +136,36 @@ class SyncServiceTest extends TestCase {
                                IAccountManager::PROPERTY_DISPLAYNAME =>
                                        [
                                                'value' => $user->getDisplayName(),
-                                               'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+                                               'scope' => AccountManager::SCOPE_FEDERATED,
                                        ],
                                IAccountManager::PROPERTY_ADDRESS =>
                                        [
                                                'value' => '',
-                                               'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                               'scope' => AccountManager::SCOPE_LOCAL,
                                        ],
                                IAccountManager::PROPERTY_WEBSITE =>
                                        [
                                                'value' => '',
-                                               'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                               'scope' => AccountManager::SCOPE_LOCAL,
                                        ],
                                IAccountManager::PROPERTY_EMAIL =>
                                        [
                                                'value' => $user->getEMailAddress(),
-                                               'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+                                               'scope' => AccountManager::SCOPE_FEDERATED,
                                        ],
                                IAccountManager::PROPERTY_AVATAR =>
                                        [
-                                               'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY
+                                               'scope' => AccountManager::SCOPE_FEDERATED
                                        ],
                                IAccountManager::PROPERTY_PHONE =>
                                        [
                                                'value' => '',
-                                               'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                               'scope' => AccountManager::SCOPE_LOCAL,
                                        ],
                                IAccountManager::PROPERTY_TWITTER =>
                                        [
                                                'value' => '',
-                                               'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                               'scope' => AccountManager::SCOPE_LOCAL,
                                        ],
                        ]
                        );
index 31f13ee275692fe6c81dbcc582946e4b73156c14..7e83ffaa7dc97ba66bdc516dbd40531359209cd9 100644 (file)
@@ -343,7 +343,7 @@ class ShareController extends AuthPublicShareController {
                        $ownerAccount = $this->accountManager->getAccount($owner);
 
                        $ownerName = $ownerAccount->getProperty(IAccountManager::PROPERTY_DISPLAYNAME);
-                       if ($ownerName->getScope() === IAccountManager::VISIBILITY_PUBLIC) {
+                       if ($ownerName->getScope() === IAccountManager::SCOPE_PUBLISHED) {
                                $shareTmpl['owner'] = $owner->getUID();
                                $shareTmpl['shareOwner'] = $owner->getDisplayName();
                        }
index 270f38a1148993f4d3581ad6928babc002f0a4bf..e00d6bc8c662e59f0a060464c2c4a4d606d47af9 100644 (file)
@@ -234,7 +234,7 @@ class ShareControllerTest extends \Test\TestCase {
 
                $accountName = $this->createMock(IAccountProperty::class);
                $accountName->method('getScope')
-                       ->willReturn(IAccountManager::VISIBILITY_PUBLIC);
+                       ->willReturn(IAccountManager::SCOPE_PUBLISHED);
                $account = $this->createMock(IAccount::class);
                $account->method('getProperty')
                        ->with(IAccountManager::PROPERTY_DISPLAYNAME)
@@ -381,7 +381,7 @@ class ShareControllerTest extends \Test\TestCase {
 
                $accountName = $this->createMock(IAccountProperty::class);
                $accountName->method('getScope')
-                       ->willReturn(IAccountManager::VISIBILITY_PRIVATE);
+                       ->willReturn(IAccountManager::SCOPE_LOCAL);
                $account = $this->createMock(IAccount::class);
                $account->method('getProperty')
                        ->with(IAccountManager::PROPERTY_DISPLAYNAME)
@@ -528,7 +528,7 @@ class ShareControllerTest extends \Test\TestCase {
 
                $accountName = $this->createMock(IAccountProperty::class);
                $accountName->method('getScope')
-                       ->willReturn(IAccountManager::VISIBILITY_PUBLIC);
+                       ->willReturn(IAccountManager::SCOPE_PUBLISHED);
                $account = $this->createMock(IAccount::class);
                $account->method('getProperty')
                        ->with(IAccountManager::PROPERTY_DISPLAYNAME)
@@ -688,7 +688,7 @@ class ShareControllerTest extends \Test\TestCase {
 
                $accountName = $this->createMock(IAccountProperty::class);
                $accountName->method('getScope')
-                       ->willReturn(IAccountManager::VISIBILITY_PUBLIC);
+                       ->willReturn(IAccountManager::SCOPE_PUBLISHED);
                $account = $this->createMock(IAccount::class);
                $account->method('getProperty')
                        ->with(IAccountManager::PROPERTY_DISPLAYNAME)
index 889fcfd62779370cac26c045c019344335f79eaa..c462eeedb430aa991f35ebbdb94c761bbdeb7349 100644 (file)
@@ -193,7 +193,7 @@ class RetryJob extends Job {
 
                $publicData = [];
                foreach ($account->getProperties() as $property) {
-                       if ($property->getScope() === IAccountManager::VISIBILITY_PUBLIC) {
+                       if ($property->getScope() === IAccountManager::SCOPE_PUBLISHED) {
                                $publicData[$property->getName()] = $property->getValue();
                        }
                }
index b94e1686a4e8ba68c58740d69be74b956cd2d6a0..617a8e3d4121e8adb2e2e1eb49f5319933bb4c28 100644 (file)
                                        active: false
                                },
                                {
-                                       name: 'private',
+                                       name: 'v2-local',
                                        displayName: t('settings', 'Local'),
                                        tooltip: t('settings', "Don't synchronize to servers"),
                                        iconClass: 'icon-password',
                                        active: false
                                },
                                {
-                                       name: 'contacts',
-                                       displayName: t('settings', 'Trusted'),
+                                       name: 'v2-federated',
+                                       displayName: t('settings', 'Federated'),
                                        tooltip: t('settings', 'Only synchronize to trusted servers'),
                                        iconClass: 'icon-contacts-dark',
                                        active: false
                                },
                                {
-                                       name: 'public',
+                                       name: 'v2-published',
                                        displayName: t('settings', 'Published'),
                                        tooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),
                                        iconClass: 'icon-link',
index 759bf85c3e1b827f9538786c426957da437a3561..cf7f4648905fee58ed4858cf26d1e3c978820ba3 100644 (file)
@@ -86,8 +86,8 @@
                                }
 
                                if (!self.showFederationScopes) {
-                                       excludedScopes.push('contacts');
-                                       excludedScopes.push('public');
+                                       excludedScopes.push('v2-federated');
+                                       excludedScopes.push('v2-published');
                                }
 
                                var scopeMenu = new OC.Settings.FederationScopeMenu({
                        $icon.addClass('hidden');
 
                        switch (scope) {
-                               case 'private':
                                case 'v2-private':
+                               case 'v2-local':
                                        $icon.addClass('icon-password');
                                        $icon.removeClass('hidden');
                                        break;
-                               case 'contacts':
+                               case 'v2-federated':
                                        $icon.addClass('icon-contacts-dark');
                                        $icon.removeClass('hidden');
                                        break;
-                               case 'public':
+                               case 'v2-published':
                                        $icon.addClass('icon-link');
                                        $icon.removeClass('hidden');
                                        break;
index a853846fadd2ed3ac94af91563baa3fe969483f7..7a0253d2be48191b091c7a10aaaba4ac963947b5 100644 (file)
@@ -37,6 +37,7 @@ namespace OCA\Settings\Settings\Personal;
 
 use OC\Accounts\AccountManager;
 use OCA\FederatedFileSharing\FederatedShareProvider;
+use OCP\Accounts\IAccount;
 use OCP\Accounts\IAccountManager;
 use OCP\App\IAppManager;
 use OCP\AppFramework\Http\TemplateResponse;
@@ -96,7 +97,7 @@ class PersonalInfo implements ISettings {
 
                $uid = \OC_User::getUser();
                $user = $this->userManager->get($uid);
-               $userData = $this->accountManager->getUser($user);
+               $account = $this->accountManager->getAccount($user);
 
                // make sure FS is setup before querying storage related stuff...
                \OC_Util::setupFS($user->getUID());
@@ -110,7 +111,7 @@ class PersonalInfo implements ISettings {
 
                $languageParameters = $this->getLanguages($user);
                $localeParameters = $this->getLocales($user);
-               $messageParameters = $this->getMessageParameters($userData);
+               $messageParameters = $this->getMessageParameters($account);
 
                $parameters = [
                        'total_space' => $totalSpace,
@@ -119,23 +120,23 @@ class PersonalInfo implements ISettings {
                        'quota' => $storageInfo['quota'],
                        'avatarChangeSupported' => $user->canChangeAvatar(),
                        'lookupServerUploadEnabled' => $lookupServerUploadEnabled,
-                       'avatarScope' => $userData[IAccountManager::PROPERTY_AVATAR]['scope'],
+                       'avatarScope' => $account->getProperty(IAccountManager::PROPERTY_AVATAR)->getScope(),
                        'displayNameChangeSupported' => $user->canChangeDisplayName(),
-                       'displayName' => $userData[IAccountManager::PROPERTY_DISPLAYNAME]['value'],
-                       'displayNameScope' => $userData[IAccountManager::PROPERTY_DISPLAYNAME]['scope'],
-                       'email' => $userData[IAccountManager::PROPERTY_EMAIL]['value'],
-                       'emailScope' => $userData[IAccountManager::PROPERTY_EMAIL]['scope'],
-                       'emailVerification' => $userData[IAccountManager::PROPERTY_EMAIL]['verified'],
-                       'phone' => $userData[IAccountManager::PROPERTY_PHONE]['value'],
-                       'phoneScope' => $userData[IAccountManager::PROPERTY_PHONE]['scope'],
-                       'address' => $userData[IAccountManager::PROPERTY_ADDRESS]['value'],
-                       'addressScope' => $userData[IAccountManager::PROPERTY_ADDRESS]['scope'],
-                       'website' => $userData[IAccountManager::PROPERTY_WEBSITE]['value'],
-                       'websiteScope' => $userData[IAccountManager::PROPERTY_WEBSITE]['scope'],
-                       'websiteVerification' => $userData[IAccountManager::PROPERTY_WEBSITE]['verified'],
-                       'twitter' => $userData[IAccountManager::PROPERTY_TWITTER]['value'],
-                       'twitterScope' => $userData[IAccountManager::PROPERTY_TWITTER]['scope'],
-                       'twitterVerification' => $userData[IAccountManager::PROPERTY_TWITTER]['verified'],
+                       'displayName' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getValue(),
+                       'displayNameScope' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getScope(),
+                       'email' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getValue(),
+                       'emailScope' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getScope(),
+                       'emailVerification' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getVerified(),
+                       'phone' => $account->getProperty(IAccountManager::PROPERTY_PHONE)->getValue(),
+                       'phoneScope' => $account->getProperty(IAccountManager::PROPERTY_PHONE)->getScope(),
+                       'address' => $account->getProperty(IAccountManager::PROPERTY_ADDRESS)->getValue(),
+                       'addressScope' => $account->getProperty(IAccountManager::PROPERTY_ADDRESS)->getScope(),
+                       'website' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getValue(),
+                       'websiteScope' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getScope(),
+                       'websiteVerification' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getVerified(),
+                       'twitter' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getValue(),
+                       'twitterScope' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getScope(),
+                       'twitterVerification' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getVerified(),
                        'groups' => $this->getGroups($user),
                ] + $messageParameters + $languageParameters + $localeParameters;
 
@@ -263,14 +264,14 @@ class PersonalInfo implements ISettings {
        }
 
        /**
-        * @param array $userData
+        * @param IAccount $account
         * @return array
         */
-       private function getMessageParameters(array $userData): array {
+       private function getMessageParameters(IAccount $account): array {
                $needVerifyMessage = [IAccountManager::PROPERTY_EMAIL, IAccountManager::PROPERTY_WEBSITE, IAccountManager::PROPERTY_TWITTER];
                $messageParameters = [];
                foreach ($needVerifyMessage as $property) {
-                       switch ($userData[$property]['verified']) {
+                       switch ($account->getProperty($property)->getVerified()) {
                                case AccountManager::VERIFIED:
                                        $message = $this->l->t('Verifying');
                                        break;
index b14e8d00d60bd2397da67dc16c1fe7fb752bbef9..2daf383410eba05dfb8c179e639604c382154e4b 100644 (file)
@@ -208,41 +208,41 @@ class UsersControllerTest extends \Test\TestCase {
                                        IAccountManager::PROPERTY_DISPLAYNAME =>
                                                [
                                                        'value' => 'Display name',
-                                                       'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+                                                       'scope' => AccountManager::SCOPE_FEDERATED,
                                                        'verified' => AccountManager::NOT_VERIFIED,
                                                ],
                                        IAccountManager::PROPERTY_ADDRESS =>
                                                [
                                                        'value' => '',
-                                                       'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                                       'scope' => AccountManager::SCOPE_LOCAL,
                                                        'verified' => AccountManager::NOT_VERIFIED,
                                                ],
                                        IAccountManager::PROPERTY_WEBSITE =>
                                                [
                                                        'value' => '',
-                                                       'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                                       'scope' => AccountManager::SCOPE_LOCAL,
                                                        'verified' => AccountManager::NOT_VERIFIED,
                                                ],
                                        IAccountManager::PROPERTY_EMAIL =>
                                                [
                                                        'value' => '',
-                                                       'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+                                                       'scope' => AccountManager::SCOPE_FEDERATED,
                                                        'verified' => AccountManager::NOT_VERIFIED,
                                                ],
                                        IAccountManager::PROPERTY_AVATAR =>
                                                [
-                                                       'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY
+                                                       'scope' => AccountManager::SCOPE_FEDERATED
                                                ],
                                        IAccountManager::PROPERTY_PHONE =>
                                                [
                                                        'value' => '',
-                                                       'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                                       'scope' => AccountManager::SCOPE_LOCAL,
                                                        'verified' => AccountManager::NOT_VERIFIED,
                                                ],
                                        IAccountManager::PROPERTY_TWITTER =>
                                                [
                                                        'value' => '',
-                                                       'scope' => AccountManager::VISIBILITY_PRIVATE,
+                                                       'scope' => AccountManager::SCOPE_LOCAL,
                                                        'verified' => AccountManager::NOT_VERIFIED,
                                                ],
                                ]);
@@ -255,19 +255,19 @@ class UsersControllerTest extends \Test\TestCase {
                }
 
                $result = $controller->setUserSettings(//
-                       AccountManager::VISIBILITY_CONTACTS_ONLY,
+                       AccountManager::SCOPE_FEDERATED,
                        'displayName',
-                       AccountManager::VISIBILITY_CONTACTS_ONLY,
+                       AccountManager::SCOPE_FEDERATED,
                        '47658468',
-                       AccountManager::VISIBILITY_CONTACTS_ONLY,
+                       AccountManager::SCOPE_FEDERATED,
                        $email,
-                       AccountManager::VISIBILITY_CONTACTS_ONLY,
+                       AccountManager::SCOPE_FEDERATED,
                        'nextcloud.com',
-                       AccountManager::VISIBILITY_CONTACTS_ONLY,
+                       AccountManager::SCOPE_FEDERATED,
                        'street and city',
-                       AccountManager::VISIBILITY_CONTACTS_ONLY,
+                       AccountManager::SCOPE_FEDERATED,
                        '@nextclouders',
-                       AccountManager::VISIBILITY_CONTACTS_ONLY
+                       AccountManager::SCOPE_FEDERATED
                );
 
                $this->assertSame($expectedStatus, $result->getStatus());
index c5a0f21319e89b5b755183de68bbdedebe967168..ff3b04d83955c8e1de711abf5660217a1ce8a597 100644 (file)
@@ -421,41 +421,41 @@ class AccountManager implements IAccountManager {
                        self::PROPERTY_DISPLAYNAME =>
                                [
                                        'value' => $user->getDisplayName(),
-                                       'scope' => self::VISIBILITY_CONTACTS_ONLY,
+                                       'scope' => self::SCOPE_FEDERATED,
                                        'verified' => self::NOT_VERIFIED,
                                ],
                        self::PROPERTY_ADDRESS =>
                                [
                                        'value' => '',
-                                       'scope' => self::VISIBILITY_PRIVATE,
+                                       'scope' => self::SCOPE_LOCAL,
                                        'verified' => self::NOT_VERIFIED,
                                ],
                        self::PROPERTY_WEBSITE =>
                                [
                                        'value' => '',
-                                       'scope' => self::VISIBILITY_PRIVATE,
+                                       'scope' => self::SCOPE_LOCAL,
                                        'verified' => self::NOT_VERIFIED,
                                ],
                        self::PROPERTY_EMAIL =>
                                [
                                        'value' => $user->getEMailAddress(),
-                                       'scope' => self::VISIBILITY_CONTACTS_ONLY,
+                                       'scope' => self::SCOPE_FEDERATED,
                                        'verified' => self::NOT_VERIFIED,
                                ],
                        self::PROPERTY_AVATAR =>
                                [
-                                       'scope' => self::VISIBILITY_CONTACTS_ONLY
+                                       'scope' => self::SCOPE_FEDERATED
                                ],
                        self::PROPERTY_PHONE =>
                                [
                                        'value' => '',
-                                       'scope' => self::VISIBILITY_PRIVATE,
+                                       'scope' => self::SCOPE_LOCAL,
                                        'verified' => self::NOT_VERIFIED,
                                ],
                        self::PROPERTY_TWITTER =>
                                [
                                        'value' => '',
-                                       'scope' => self::VISIBILITY_PRIVATE,
+                                       'scope' => self::SCOPE_LOCAL,
                                        'verified' => self::NOT_VERIFIED,
                                ],
                ];
@@ -464,7 +464,7 @@ class AccountManager implements IAccountManager {
        private function parseAccountData(IUser $user, $data): Account {
                $account = new Account($user);
                foreach ($data as $property => $accountData) {
-                       $account->setProperty($property, $accountData['value'] ?? '', $accountData['scope'] ?? self::VISIBILITY_PRIVATE, $accountData['verified'] ?? self::NOT_VERIFIED);
+                       $account->setProperty($property, $accountData['value'] ?? '', $accountData['scope'] ?? self::SCOPE_LOCAL, $accountData['verified'] ?? self::NOT_VERIFIED);
                }
                return $account;
        }
index 97f9b1c356f17c39402cf68942cfa740d8942e7c..4c75ad85414a587d70297c1daea5c2ad38deb0a2 100644 (file)
@@ -26,6 +26,7 @@ declare(strict_types=1);
 
 namespace OC\Accounts;
 
+use OCP\Accounts\IAccountManager;
 use OCP\Accounts\IAccountProperty;
 
 class AccountProperty implements IAccountProperty {
@@ -42,7 +43,7 @@ class AccountProperty implements IAccountProperty {
        public function __construct(string $name, string $value, string $scope, string $verified) {
                $this->name = $name;
                $this->value = $value;
-               $this->scope = $scope;
+               $this->scope = $this->mapScopeToV2($scope);
                $this->verified = $verified;
        }
 
@@ -77,7 +78,7 @@ class AccountProperty implements IAccountProperty {
         * @return IAccountProperty
         */
        public function setScope(string $scope): IAccountProperty {
-               $this->scope = $scope;
+               $this->scope = $this->mapScopeToV2($scope);
                return $this;
        }
 
@@ -127,6 +128,23 @@ class AccountProperty implements IAccountProperty {
                return $this->scope;
        }
 
+       private function mapScopeToV2($scope) {
+               if (strpos($scope, 'v2-') === 0) {
+                       return $scope;
+               }
+
+               switch ($scope) {
+               case IAccountManager::VISIBILITY_PRIVATE:
+                       return IAccountManager::SCOPE_LOCAL;
+               case IAccountManager::VISIBILITY_CONTACTS_ONLY:
+                       return IAccountManager::SCOPE_FEDERATED;
+               case IAccountManager::VISIBILITY_PUBLIC:
+                       return IAccountManager::SCOPE_PUBLISHED;
+               }
+
+               return IAccountManager::SCOPE_LOCAL;
+       }
+
        /**
         * Get the verification status of a property
         *
index 9d720ba9e5061da0b72a74cd41b66b80471fe75a..e88fd32f6741e54568f99236633c67574d35cfab 100644 (file)
@@ -50,14 +50,14 @@ interface IAccountManager {
         *
         * @since 21.0.1
         */
-       public const SCOPE_LOCAL = 'private';
+       public const SCOPE_LOCAL = 'v2-local';
 
        /**
         * Contact details visible locally, through public link access and on trusted federated servers.
         *
         * @since 21.0.1
         */
-       public const SCOPE_FEDERATED = 'federated';
+       public const SCOPE_FEDERATED = 'v2-federated';
 
        /**
         * Contact details visible locally, through public link access, on trusted federated servers
@@ -65,7 +65,7 @@ interface IAccountManager {
         *
         * @since 21.0.1
         */
-       public const SCOPE_PUBLISHED = 'public';
+       public const SCOPE_PUBLISHED = 'v2-published';
 
        /**
         * Contact details only visible locally
index fcd1a78add71ac29579967b35664cff4d974c980..62da1cbc1daae9232886386bbd3a687a7f6474cf 100644 (file)
@@ -278,26 +278,26 @@ class AccountManagerTest extends TestCase {
                        IAccountManager::PROPERTY_TWITTER =>
                                [
                                        'value' => '@twitterhandle',
-                                       'scope' => IAccountManager::VISIBILITY_PRIVATE,
+                                       'scope' => IAccountManager::SCOPE_LOCAL,
                                        'verified' => IAccountManager::NOT_VERIFIED,
                                ],
                        IAccountManager::PROPERTY_EMAIL =>
                                [
                                        'value' => 'test@example.com',
-                                       'scope' => IAccountManager::VISIBILITY_PUBLIC,
+                                       'scope' => IAccountManager::SCOPE_PUBLISHED,
                                        'verified' => IAccountManager::VERIFICATION_IN_PROGRESS,
                                ],
                        IAccountManager::PROPERTY_WEBSITE =>
                                [
                                        'value' => 'https://example.com',
-                                       'scope' => IAccountManager::VISIBILITY_CONTACTS_ONLY,
+                                       'scope' => IAccountManager::SCOPE_FEDERATED,
                                        'verified' => IAccountManager::VERIFIED,
                                ],
                ];
                $expected = new Account($user);
-               $expected->setProperty(IAccountManager::PROPERTY_TWITTER, '@twitterhandle', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::NOT_VERIFIED);
-               $expected->setProperty(IAccountManager::PROPERTY_EMAIL, 'test@example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::VERIFICATION_IN_PROGRESS);
-               $expected->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_CONTACTS_ONLY, IAccountManager::VERIFIED);
+               $expected->setProperty(IAccountManager::PROPERTY_TWITTER, '@twitterhandle', IAccountManager::SCOPE_LOCAL, IAccountManager::NOT_VERIFIED);
+               $expected->setProperty(IAccountManager::PROPERTY_EMAIL, 'test@example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFICATION_IN_PROGRESS);
+               $expected->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_FEDERATED, IAccountManager::VERIFIED);
 
                $accountManager->expects($this->once())
                        ->method('getUser')
index afd807a44b4995fc98772bdf744d0ebaa912e94b..f99abc21f833a483ddd5bbcd2dde5640fcd4fdca 100644 (file)
@@ -37,12 +37,12 @@ class AccountPropertyTest extends TestCase {
                $accountProperty = new AccountProperty(
                        IAccountManager::PROPERTY_WEBSITE,
                        'https://example.com',
-                       IAccountManager::VISIBILITY_PUBLIC,
+                       IAccountManager::SCOPE_PUBLISHED,
                        IAccountManager::VERIFIED
                );
                $this->assertEquals(IAccountManager::PROPERTY_WEBSITE, $accountProperty->getName());
                $this->assertEquals('https://example.com', $accountProperty->getValue());
-               $this->assertEquals(IAccountManager::VISIBILITY_PUBLIC, $accountProperty->getScope());
+               $this->assertEquals(IAccountManager::SCOPE_PUBLISHED, $accountProperty->getScope());
                $this->assertEquals(IAccountManager::VERIFIED, $accountProperty->getVerified());
        }
 
@@ -50,7 +50,7 @@ class AccountPropertyTest extends TestCase {
                $accountProperty = new AccountProperty(
                        IAccountManager::PROPERTY_WEBSITE,
                        'https://example.com',
-                       IAccountManager::VISIBILITY_PUBLIC,
+                       IAccountManager::SCOPE_PUBLISHED,
                        IAccountManager::VERIFIED
                );
                $actualReturn = $accountProperty->setValue('https://example.org');
@@ -62,19 +62,48 @@ class AccountPropertyTest extends TestCase {
                $accountProperty = new AccountProperty(
                        IAccountManager::PROPERTY_WEBSITE,
                        'https://example.com',
-                       IAccountManager::VISIBILITY_PUBLIC,
+                       IAccountManager::SCOPE_PUBLISHED,
                        IAccountManager::VERIFIED
                );
-               $actualReturn = $accountProperty->setScope(IAccountManager::VISIBILITY_PRIVATE);
-               $this->assertEquals(IAccountManager::VISIBILITY_PRIVATE, $accountProperty->getScope());
-               $this->assertEquals(IAccountManager::VISIBILITY_PRIVATE, $actualReturn->getScope());
+               $actualReturn = $accountProperty->setScope(IAccountManager::SCOPE_LOCAL);
+               $this->assertEquals(IAccountManager::SCOPE_LOCAL, $accountProperty->getScope());
+               $this->assertEquals(IAccountManager::SCOPE_LOCAL, $actualReturn->getScope());
+       }
+
+       public function scopesProvider() {
+               return [
+                       // current values
+                       [IAccountManager::SCOPE_PRIVATE, IAccountManager::SCOPE_PRIVATE],
+                       [IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_LOCAL],
+                       [IAccountManager::SCOPE_PUBLISHED, IAccountManager::SCOPE_PUBLISHED],
+                       // legacy values
+                       [IAccountManager::VISIBILITY_PRIVATE, IAccountManager::SCOPE_LOCAL],
+                       [IAccountManager::VISIBILITY_CONTACTS_ONLY, IAccountManager::SCOPE_FEDERATED],
+                       [IAccountManager::VISIBILITY_PUBLIC, IAccountManager::SCOPE_PUBLISHED],
+                       // fallback
+                       ['', IAccountManager::SCOPE_LOCAL],
+                       ['unknown', IAccountManager::SCOPE_LOCAL],
+               ];
+       }
+
+       /**
+        * @dataProvider scopesProvider
+        */
+       public function testSetScopeMapping($storedScope, $returnedScope) {
+               $accountProperty = new AccountProperty(
+                       IAccountManager::PROPERTY_WEBSITE,
+                       'https://example.com',
+                       $storedScope,
+                       IAccountManager::VERIFIED
+               );
+               $this->assertEquals($returnedScope, $accountProperty->getScope());
        }
 
        public function testSetVerified() {
                $accountProperty = new AccountProperty(
                        IAccountManager::PROPERTY_WEBSITE,
                        'https://example.com',
-                       IAccountManager::VISIBILITY_PUBLIC,
+                       IAccountManager::SCOPE_PUBLISHED,
                        IAccountManager::VERIFIED
                );
                $actualReturn = $accountProperty->setVerified(IAccountManager::NOT_VERIFIED);
@@ -86,13 +115,13 @@ class AccountPropertyTest extends TestCase {
                $accountProperty = new AccountProperty(
                        IAccountManager::PROPERTY_WEBSITE,
                        'https://example.com',
-                       IAccountManager::VISIBILITY_PUBLIC,
+                       IAccountManager::SCOPE_PUBLISHED,
                        IAccountManager::VERIFIED
                );
                $this->assertEquals([
                        'name' => IAccountManager::PROPERTY_WEBSITE,
                        'value' => 'https://example.com',
-                       'scope' => IAccountManager::VISIBILITY_PUBLIC,
+                       'scope' => IAccountManager::SCOPE_PUBLISHED,
                        'verified' => IAccountManager::VERIFIED
                ], $accountProperty->jsonSerialize());
        }
index 11b13637bd0578847c927bd7e410ed7aa51e8700..8afcc44afd198f99b08d06d7a25d7b9e3f23be35 100644 (file)
@@ -43,21 +43,21 @@ class AccountTest extends TestCase {
 
        public function testSetProperty() {
                $user = $this->createMock(IUser::class);
-               $property = new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
+               $property = new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
                $account = new Account($user);
-               $account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
+               $account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
                $this->assertEquals($property, $account->getProperty(IAccountManager::PROPERTY_WEBSITE));
        }
 
        public function testGetProperties() {
                $user = $this->createMock(IUser::class);
                $properties = [
-                       IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED),
-                       IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED)
+                       IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED),
+                       IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED)
                ];
                $account = new Account($user);
-               $account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
-               $account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED);
+               $account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
+               $account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED);
 
                $this->assertEquals($properties, $account->getProperties());
        }
@@ -65,14 +65,14 @@ class AccountTest extends TestCase {
        public function testGetFilteredProperties() {
                $user = $this->createMock(IUser::class);
                $properties = [
-                       IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED),
-                       IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED),
-                       IAccountManager::PROPERTY_PHONE => new AccountProperty(IAccountManager::PROPERTY_PHONE, '123456', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::VERIFIED),
+                       IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED),
+                       IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED),
+                       IAccountManager::PROPERTY_PHONE => new AccountProperty(IAccountManager::PROPERTY_PHONE, '123456', IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFIED),
                ];
                $account = new Account($user);
-               $account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
-               $account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED);
-               $account->setProperty(IAccountManager::PROPERTY_PHONE, '123456', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::VERIFIED);
+               $account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
+               $account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED);
+               $account->setProperty(IAccountManager::PROPERTY_PHONE, '123456', IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFIED);
 
 
                $this->assertEquals(
@@ -80,7 +80,7 @@ class AccountTest extends TestCase {
                                IAccountManager::PROPERTY_WEBSITE => $properties[IAccountManager::PROPERTY_WEBSITE],
                                IAccountManager::PROPERTY_PHONE => $properties[IAccountManager::PROPERTY_PHONE],
                        ],
-                       $account->getFilteredProperties(IAccountManager::VISIBILITY_PUBLIC)
+                       $account->getFilteredProperties(IAccountManager::SCOPE_PUBLISHED)
                );
                $this->assertEquals(
                        [
@@ -91,19 +91,19 @@ class AccountTest extends TestCase {
                );
                $this->assertEquals(
                        [IAccountManager::PROPERTY_PHONE => $properties[IAccountManager::PROPERTY_PHONE]],
-                       $account->getFilteredProperties(IAccountManager::VISIBILITY_PUBLIC, IAccountManager::VERIFIED)
+                       $account->getFilteredProperties(IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFIED)
                );
        }
 
        public function testJsonSerialize() {
                $user = $this->createMock(IUser::class);
                $properties = [
-                       IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED),
-                       IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED)
+                       IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED),
+                       IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED)
                ];
                $account = new Account($user);
-               $account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
-               $account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED);
+               $account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
+               $account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED);
 
                $this->assertEquals($properties, $account->jsonSerialize());
        }