*/ class PlaceMetadataProvider implements IEventListener { public const METADATA_KEY = 'photos-place'; public function __construct( private readonly MediaPlaceManager $mediaPlaceManager, ) { } public function handle(Event $event): void { if ($event instanceof MetadataLiveEvent) { $node = $event->getNode(); if (!$node instanceof File) { return; } if (!in_array($node->getMimeType(), Application::IMAGE_MIMES)) { return; } $event->requestBackgroundJob(); } if ($event instanceof MetadataBackgroundEvent) { $metadata = $event->getMetadata(); $place = $this->mediaPlaceManager->getPlaceForMetadata($metadata); if ($place !== null) { $metadata->setString(self::METADATA_KEY, $place, true); } } } }