custom/plugins/MoorlFoundation/src/Core/Subscriber/MoorlFoundationSubscriber.php line 37

  1. <?php declare(strict_types=1);
  2. namespace MoorlFoundation\Core\Subscriber;
  3. use MoorlFoundation\Core\Service\TranslationService;
  4. use Shopware\Core\Checkout\Order\Event\OrderStateMachineStateChangeEvent;
  5. use Shopware\Core\Checkout\Order\OrderDefinition;
  6. use Shopware\Core\Content\Media\Event\MediaFileExtensionWhitelistEvent;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenContainerEvent;
  8. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
  9. use Shopware\Core\System\StateMachine\Aggregation\StateMachineTransition\StateMachineTransitionActions;
  10. use Shopware\Core\System\StateMachine\StateMachineRegistry;
  11. use Shopware\Core\System\StateMachine\Transition;
  12. use Shopware\Core\System\SystemConfig\SystemConfigService;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. class MoorlFoundationSubscriber implements EventSubscriberInterface
  15. {
  16.     public function __construct(
  17.         private readonly SystemConfigService $systemConfigService,
  18.         private readonly TranslationService $translationService,
  19.         private readonly StateMachineRegistry $stateMachineRegistry
  20.     )
  21.     {
  22.     }
  23.     public static function getSubscribedEvents(): array
  24.     {
  25.         return [
  26.             MediaFileExtensionWhitelistEvent::class => 'onMediaFileExtensionWhitelist',
  27.             EntityWrittenContainerEvent::class => 'onEntityWrittenContainerEvent',
  28.             'state_enter.order_transaction.state.cancelled' => 'stateChanged',
  29.             'state_enter.order_transaction.state.failed' => 'stateChanged',
  30.         ];
  31.     }
  32.     public function onMediaFileExtensionWhitelist(MediaFileExtensionWhitelistEvent $event)
  33.     {
  34.         $whitelist $event->getWhitelist();
  35.         $whitelistConfig $this->systemConfigService->get('MoorlFoundation.config.fileExtensions');
  36.         if ($whitelistConfig) {
  37.             $whitelistConfig explode(","$whitelistConfig);
  38.             $whitelistConfig array_map('trim'$whitelistConfig);
  39.             if (is_array($whitelistConfig)) {
  40.                 $whitelist array_merge($whitelist$whitelistConfig);
  41.             }
  42.         }
  43.         $event->setWhitelist($whitelist);
  44.     }
  45.     public function onEntityWrittenContainerEvent(EntityWrittenContainerEvent $event): void
  46.     {
  47.         foreach ($event->getEvents() as $entityWrittenEvent) {
  48.             if ($entityWrittenEvent instanceof EntityWrittenEvent) {
  49.                 $this->translationService->translate($entityWrittenEvent->getEntityName(), $entityWrittenEvent->getWriteResults(), $entityWrittenEvent->getContext());
  50.             }
  51.         }
  52.     }
  53.     public function stateChanged(OrderStateMachineStateChangeEvent $event): void
  54.     {
  55.         if (!$this->systemConfigService->get('MoorlFoundation.config.orderAutoCancel')) {
  56.             return;
  57.         }
  58.         $order $event->getOrder();
  59.         $this->stateMachineRegistry->transition(new Transition(
  60.             OrderDefinition::ENTITY_NAME,
  61.             $order->getId(),
  62.             StateMachineTransitionActions::ACTION_CANCEL,
  63.             'stateId'
  64.         ), $event->getContext());
  65.     }
  66. }