From 9d84dcec671a71a08c4a996768b4d591099e58b8 Mon Sep 17 00:00:00 2001 From: Craig Williams Date: Thu, 10 Feb 2022 10:30:31 +0000 Subject: [PATCH] Fixed users being duplicated if they already existed in a target group during a merge --- src/Database/Models/Organisation.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Database/Models/Organisation.php b/src/Database/Models/Organisation.php index 9737969..a607e7f 100644 --- a/src/Database/Models/Organisation.php +++ b/src/Database/Models/Organisation.php @@ -199,14 +199,18 @@ class Organisation extends Model implements OrganisationInterface }; // Move all the users from this organisation to the target - $this->members()->each(function ($user) use ($target, $activityLogger, $currentUser, $logEntry) { - $this->members()->detach($user); // NOTE: Should this record be retained? Or is the activity log enough of an audit? - $target->members()->attach($user, ['flag_admin' => false]); - $logEntry($activityLogger, $currentUser, $user, $target); - }); $this->administrators()->each(function ($user) use ($target, $activityLogger, $currentUser, $logEntry) { $this->administrators()->detach($user); // NOTE: Should this record be retained? Or is the activity log enough of an audit? - $target->administrators()->attach($user, ['flag_admin' => true]); + if (!$target->administrators()->find($user->id) && !$target->members()->find($user->id)) { + $target->administrators()->attach($user, ['flag_admin' => true]); + } + $logEntry($activityLogger, $currentUser, $user, $target); + }); + $this->members()->each(function ($user) use ($target, $activityLogger, $currentUser, $logEntry) { + $this->members()->detach($user); // NOTE: Should this record be retained? Or is the activity log enough of an audit? + if (!$target->administrators()->find($user->id) && !$target->members()->find($user->id)) { + $target->members()->attach($user, ['flag_admin' => false]); + } $logEntry($activityLogger, $currentUser, $user, $target); }); $this->save();