*/ class ExampleAddingCircleMember implements IEventListener { use TNCLogger; /** @var ConfigService */ private $configService; public function __construct(ConfigService $configService) { $this->configService = $configService; $this->setup('app', Application::APP_ID); } public function handle(Event $event): void { if (!$event instanceof AddingCircleMemberEvent) { return; } if ($this->configService->getAppValue(ConfigService::EVENT_EXAMPLES) !== '1') { return; } $prefix = '[Example Event] (ExampleAddingCircleMember) '; $circle = $event->getCircle(); $member = $event->getMember(); $eventType = ($event->getType() === CircleGenericEvent::INVITED) ? 'invited' : 'joined'; $info = 'A new member have been added (' . $eventType . ') to a Circle. '; $info .= 'userId: ' . $member->getUserId() . '; userType: ' . Member::$TYPE[$member->getUserType()] . '; singleId: ' . $member->getSingleId() . '; memberId: ' . $member->getId() . '; isLocal: ' . json_encode($member->isLocal()) . '; level: ' . Member::$DEF_LEVEL[$member->getLevel()] . '; '; $memberships = array_map( function (Membership $membership) { return $membership->getCircleId(); }, $circle->getMemberships() ); $listMemberships = (count($memberships) > 0) ? implode(', ', $memberships) : 'none'; $info .= 'circleName: ' . $circle->getDisplayName() . '; circleId: ' . $circle->getSingleId() . '; Circle memberships: ' . $listMemberships . '.'; if ($member->getUserType() === Member::TYPE_CIRCLE) { $basedOn = $member->getBasedOn(); $members = array_map( function (Member $member) { return $member->getUserId() . ' (' . Member::$TYPE[$member->getUserType()] . ')'; }, $basedOn->getInheritedMembers() ); $info .= ' Member is a Circle (singleId: ' . $basedOn->getSingleId() . ') that contains those inherited members: ' . implode(', ', $members); } $this->log(3, $prefix . $info); } }