src/EventSubscriber/AudioMetadataSubscriber.php line 29
<?phpnamespace App\EventSubscriber;use App\Entity\CRM\AudioAsset;use App\Service\AudioProcessor;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Vich\UploaderBundle\Event\Events;use Vich\UploaderBundle\Event\Event;class AudioMetadataSubscriber implements EventSubscriberInterface{private AudioProcessor $audioProcessor;private string $projectDir;public function __construct(AudioProcessor $audioProcessor, string $projectDir){$this->audioProcessor = $audioProcessor;$this->projectDir = $projectDir;}public static function getSubscribedEvents(): array{return [Events::POST_UPLOAD => 'onPostUpload',];}public function onPostUpload(Event $event): void{$object = $event->getObject();if (!$object instanceof AudioAsset) {return;}$filePath = $this->projectDir . '/public/uploads/audio/' . $object->getFileName();if (file_exists($filePath)) {$metadata = $this->audioProcessor->extractMetadata($filePath);if (isset($metadata['duration'])) {$object->setDuration($metadata['duration']);}}}}