*/ class RemoteWipeActivityListener implements IEventListener { /** @var IActvityManager */ private $activityManager; /** @var LoggerInterface */ private $logger; public function __construct(IActvityManager $activityManager, LoggerInterface $logger) { $this->activityManager = $activityManager; $this->logger = $logger; } public function handle(Event $event): void { if ($event instanceof RemoteWipeStarted) { $this->publishActivity('remote_wipe_start', $event->getToken()); } elseif ($event instanceof RemoteWipeFinished) { $this->publishActivity('remote_wipe_finish', $event->getToken()); } } private function publishActivity(string $event, IToken $token): void { $activity = $this->activityManager->generateEvent(); $activity->setApp('core') ->setType('security') ->setAuthor($token->getUID()) ->setAffectedUser($token->getUID()) ->setSubject($event, [ 'name' => $token->getName(), ]); try { $this->activityManager->publish($activity); } catch (BadMethodCallException $e) { $this->logger->warning('could not publish activity', [ 'app' => 'core', 'exception' => $e, ]); } } }