diff --git a/lib/private/Accounts/AccountManager.php b/lib/private/Accounts/AccountManager.php index 3416db56ba562..cbd51e71c4a53 100644 --- a/lib/private/Accounts/AccountManager.php +++ b/lib/private/Accounts/AccountManager.php @@ -473,15 +473,16 @@ protected function sendEmailVerificationEmail(IUser $user, string $email): bool * Make sure that all expected data are set */ protected function addMissingDefaultValues(array $userData, array $defaultUserData): array { - foreach ($defaultUserData as $i => $value) { - // If property doesn't exists, initialize it - if (!array_key_exists($i, $userData)) { - $userData[$i] = []; + foreach ($defaultUserData as $defaultDataItem) { + // If property does not exist, initialize it + $userDataIndex = array_search($defaultDataItem['name'], array_column($userData, 'name')); + if ($userDataIndex === false) { + $userData[] = $defaultDataItem; + continue; } // Merge and extend default missing values - $defaultValueIndex = array_search($value['name'], array_column($defaultUserData, 'name')); - $userData[$i] = array_merge($defaultUserData[$defaultValueIndex], $userData[$i]); + $userData[$userDataIndex] = array_merge($defaultDataItem, $userData[$userDataIndex]); } return $userData; diff --git a/tests/lib/Accounts/AccountManagerTest.php b/tests/lib/Accounts/AccountManagerTest.php index df1d62b313271..8bb60a1a51679 100644 --- a/tests/lib/Accounts/AccountManagerTest.php +++ b/tests/lib/Accounts/AccountManagerTest.php @@ -516,8 +516,6 @@ public function testAddMissingDefaults() { 'value' => 'bob', 'verified' => IAccountManager::NOT_VERIFIED, ], - [], - [], [ 'name' => IAccountManager::PROPERTY_EMAIL, 'value' => 'bob@bob.bob', @@ -533,23 +531,23 @@ public function testAddMissingDefaults() { ], [ - 'name' => IAccountManager::PROPERTY_ADDRESS, - 'value' => '', - 'scope' => IAccountManager::SCOPE_LOCAL, + 'name' => IAccountManager::PROPERTY_EMAIL, + 'value' => 'bob@bob.bob', + 'scope' => IAccountManager::SCOPE_FEDERATED, 'verified' => IAccountManager::NOT_VERIFIED, ], [ - 'name' => IAccountManager::PROPERTY_WEBSITE, + 'name' => IAccountManager::PROPERTY_ADDRESS, 'value' => '', 'scope' => IAccountManager::SCOPE_LOCAL, 'verified' => IAccountManager::NOT_VERIFIED, ], [ - 'name' => IAccountManager::PROPERTY_EMAIL, - 'value' => 'bob@bob.bob', - 'scope' => IAccountManager::SCOPE_FEDERATED, + 'name' => IAccountManager::PROPERTY_WEBSITE, + 'value' => '', + 'scope' => IAccountManager::SCOPE_LOCAL, 'verified' => IAccountManager::NOT_VERIFIED, ],