activityManager = $activityManager; $this->userSession = $userSession; } public function handle(Event $event): void { if ($event instanceof MeetingStartedEvent) { $subject = Provider::MEETING_STARTED; } elseif ($event instanceof MeetingEndedEvent) { $subject = Provider::MEETING_ENDED; } elseif ($event instanceof RecordingReadyEvent) { $subject = Provider::RECORDING_READY; } else { return; } $room = $event->getRoom(); $activityEvent = $this->activityManager->generateEvent(); if (!$this->userSession->isLoggedIn()) { $activityEvent->setAuthor($room->getUserId()); } $subjectData = [ 'id' => $room->getId(), 'name' => $room->getName(), ]; if ($event instanceof MeetingEndedEvent) { $subjectData['recordingMarks'] = $event->hasRecordingMarks(); } $activityEvent->setApp(Application::ID); $activityEvent->setType(Setting::Identifier); $activityEvent->setAffectedUser($room->getUserId()); $activityEvent->setSubject($subject, $subjectData); $this->activityManager->publish($activityEvent); } }