*/ class DisplayNameListener implements IEventListener { public function __construct( private ParticipantService $participantService, private PollService $pollService, private BanService $banService, ) { } #[\Override] public function handle(Event $event): void { if ($event instanceof UserChangedEvent && $event->getFeature() === 'displayName') { $this->updateCachedName(Attendee::ACTOR_USERS, $event->getUser()->getUID(), (string)$event->getValue()); } if ($event instanceof GroupChangedEvent && $event->getFeature() === 'displayName') { $this->updateCachedName(Attendee::ACTOR_GROUPS, $event->getGroup()->getGID(), (string)$event->getValue()); } } protected function updateCachedName(string $actorType, string $actorId, string $newName): void { $this->participantService->updateDisplayNameForActor( $actorType, $actorId, $newName ); $this->pollService->updateDisplayNameForActor( $actorType, $actorId, $newName ); $this->banService->updateDisplayNameForActor( $actorType, $actorId, $newName ); } }