source = $source; } /** * @param Collection|MemberRelationInterface[] $memberships */ private function itterateOverMemberships(Collection $memberships): void { foreach ($memberships as $membership) { if (!$this->memberships->contains($membership->getSource())) { $this->memberships->add($membership->getSource()); $this->itterateOverMemberships($membership->getMemberships()); } } } /** * {@inheritdoc} * * @see \Infinito\Domain\SourceManagement\SourceMembershipInformationInterface::getAllMemberships() */ public function getAllMemberships(): Collection { $this->memberships = new ArrayCollection(); $this->itterateOverMemberships($this->source->getMemberRelation()->getMemberships()); return $this->memberships; } }