diff --git a/application/loginwebpage.class.inc.php b/application/loginwebpage.class.inc.php index e047cf7619..5f16e598c1 100644 --- a/application/loginwebpage.class.inc.php +++ b/application/loginwebpage.class.inc.php @@ -128,19 +128,25 @@ public static function SynchronizeProfiles(&$oUser, array $aProfiles, $sOrigin) $oProfilesSet = $oUser->Get('profile_list'); //delete old profiles $aExistingProfiles = []; + $aProfilestoRemove = []; while ($oProfile = $oProfilesSet->Fetch()) { array_push($aExistingProfiles, $oProfile->Get('profileid')); $iArrayKey = array_search($oProfile->Get('profileid'), $aProfiles); - if (!$iArrayKey) + if ($iArrayKey === false) { - $oProfilesSet->RemoveItem($oProfile->Get('profileid')); + $aProfilestoRemove[] = $oProfile; } else { unset($aProfiles[$iArrayKey]); } } + + foreach ($aProfilestoRemove as $oProfile) { + $oProfilesSet->RemoveItem($oProfile->GetKey()); + } + //add profiles not already linked with user foreach ($aProfiles as $iProfileId) {