custom/static-plugins/CioItpImportExport/src/Subscriber/MediaFileExtensionWhitelistSubscriber.php line 22

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace CioItpImportExport\Subscriber;
  4. use Shopware\Core\Content\Media\Event\MediaFileExtensionWhitelistEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. /**
  7.  * CIO-AI-Driven: Allow importing CAD STEP files (*.stp) into Shopware media.
  8.  */
  9. class MediaFileExtensionWhitelistSubscriber implements EventSubscriberInterface
  10. {
  11.     public static function getSubscribedEvents(): array
  12.     {
  13.         return [
  14.             MediaFileExtensionWhitelistEvent::class => 'onMediaFileExtensionWhitelist',
  15.         ];
  16.     }
  17.     public function onMediaFileExtensionWhitelist(MediaFileExtensionWhitelistEvent $event): void
  18.     {
  19.         $whitelist = $event->getWhitelist();
  20.         // Ensure `stp` is allowed for media persistence (FileSaver::validateFileExtension).
  21.         $whitelist[] = 'stp';
  22.         // Normalize + de-duplicate (case-insensitive)
  23.         $normalized = [];
  24.         foreach ($whitelist as $extension) {
  25.             $extension = mb_strtolower((string) $extension);
  26.             if ($extension == '') {
  27.                 continue;
  28.             }
  29.             $normalized[$extension] = true;
  30.         }
  31.         $event->setWhitelist(array_keys($normalized));
  32.     }
  33. }