diff --git a/lib/Service/MembershipService.php b/lib/Service/MembershipService.php index a9c04ab81..6c0dfd2b0 100644 --- a/lib/Service/MembershipService.php +++ b/lib/Service/MembershipService.php @@ -43,7 +43,6 @@ use OCA\Circles\Model\FederatedUser; use OCA\Circles\Model\Member; use OCA\Circles\Model\Membership; -use OCA\Circles\Model\Probes\CircleProbe; /** * Class MembershipService @@ -124,28 +123,6 @@ public function onUpdate(string $singleId): void { } - /** - * - */ - public function manageAll(): void { - $probe = new CircleProbe(); - $probe->includeSystemCircles(); - $circles = $this->circleRequest->getCircles(null, $probe); - - $this->outputService->startMigrationProgress(sizeof($circles)); - - foreach ($circles as $circle) { - $this->outputService->output( - 'Caching memberships for \'' . $circle->getDisplayName() . '\'', - true - ); - $this->manageMemberships($circle->getSingleId()); - } - - $this->outputService->finishMigrationProgress(); - } - - /** * @param string $singleId * diff --git a/lib/Service/MigrationService.php b/lib/Service/MigrationService.php index 92e5bf889..df757ee5c 100644 --- a/lib/Service/MigrationService.php +++ b/lib/Service/MigrationService.php @@ -62,6 +62,7 @@ use OCA\Circles\Model\Circle; use OCA\Circles\Model\FederatedUser; use OCA\Circles\Model\Member; +use OCA\Circles\Model\Probes\CircleProbe; use OCA\Circles\Model\ShareToken; use OCA\DAV\CardDAV\ContactsManager; use OCP\Contacts\IManager; @@ -205,7 +206,7 @@ public function migration(bool $force = false): void { /** - * + * @throws RequestBuilderException */ private function migrationTo22(): void { if ($this->configService->getAppValueBool(ConfigService::MIGRATION_22)) { @@ -217,7 +218,7 @@ private function migrationTo22(): void { $this->migrationTo22_Circles(); $this->migrationTo22_Members(); $this->membershipService->resetMemberships('', true); - $this->membershipService->manageAll(); + $this->migrationTo22_Members_Memberships(); $this->migrationTo22_Tokens(); @@ -225,6 +226,38 @@ private function migrationTo22(): void { } + /** + * @throws RequestBuilderException + */ + public function migrationTo22_Members_Memberships(): void { + $probe = new CircleProbe(); + $probe->includeSystemCircles(); + $circles = $this->circleRequest->getCircles(null, $probe); + + $this->outputService->startMigrationProgress(sizeof($circles)); + + $done = []; + foreach ($circles as $circle) { + $this->outputService->output( + 'Caching memberships for Members of \'' . $circle->getDisplayName() . '\'', + true + ); + + $members = $circle->getMembers(); + foreach ($members as $member) { + if (in_array($member->getSingleId(), $done)) { + continue; + } + + $this->membershipService->manageMemberships($member->getSingleId()); + $done[] = $member->getSingleId(); + } + } + + $this->outputService->finishMigrationProgress(); + } + + /** * */