*/ class GroupManagementEventListener extends Action implements IEventListener { public function handle(Event $event): void { if ($event instanceof UserAddedEvent) { $this->userAdded($event); } elseif ($event instanceof UserRemovedEvent) { $this->userRemoved($event); } elseif ($event instanceof GroupCreatedEvent) { $this->groupCreated($event); } elseif ($event instanceof GroupDeletedEvent) { $this->groupDeleted($event); } } private function userAdded(UserAddedEvent $event): void { $this->log('User "%s" added to group "%s"', [ 'group' => $event->getGroup()->getGID(), 'user' => $event->getUser()->getUID() ], [ 'user', 'group' ] ); } private function userRemoved(UserRemovedEvent $event): void { $this->log('User "%s" removed from group "%s"', [ 'group' => $event->getGroup()->getGID(), 'user' => $event->getUser()->getUID() ], [ 'user', 'group' ] ); } private function groupCreated(GroupCreatedEvent $event): void { $this->log('Group created: "%s"', [ 'group' => $event->getGroup()->getGID() ], [ 'group' ] ); } private function groupDeleted(GroupDeletedEvent $event): void { $this->log('Group deleted: "%s"', [ 'group' => $event->getGroup()->getGID() ], [ 'group' ] ); } }