<?php
declare(strict_types=1);
namespace CioItpImportExport\Subscriber;
use Shopware\Core\Content\Media\Event\MediaFileExtensionWhitelistEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* CIO-AI-Driven: Allow importing CAD STEP files (*.stp) into Shopware media.
*/
class MediaFileExtensionWhitelistSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
MediaFileExtensionWhitelistEvent::class => 'onMediaFileExtensionWhitelist',
];
}
public function onMediaFileExtensionWhitelist(MediaFileExtensionWhitelistEvent $event): void
{
$whitelist = $event->getWhitelist();
// Ensure `stp` is allowed for media persistence (FileSaver::validateFileExtension).
$whitelist[] = 'stp';
// Normalize + de-duplicate (case-insensitive)
$normalized = [];
foreach ($whitelist as $extension) {
$extension = mb_strtolower((string) $extension);
if ($extension == '') {
continue;
}
$normalized[$extension] = true;
}
$event->setWhitelist(array_keys($normalized));
}
}