vendor/dvdw/auto-email/src/Content/Product/Subscriber/ProductSubscriber.php line 27

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Dvdw\AutoEmail\Content\Product\Subscriber;
  3. use Dvdw\AutoEmail\Content\Product\Message\ProductInsertedMessage;
  4. use Shopware\Core\Content\Product\ProductEvents;
  5. use Shopware\Core\Defaults;
  6. use Shopware\Core\Framework\DataAbstractionLayer\EntityWriteResult;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\Messenger\MessageBusInterface;
  10. class ProductSubscriber implements EventSubscriberInterface
  11. {
  12.     private MessageBusInterface $bus;
  13.     public function __construct(MessageBusInterface $bus)
  14.     {
  15.         $this->bus $bus;
  16.     }
  17.     
  18.     public static function getSubscribedEvents(): iterable
  19.     {
  20.         return [ProductEvents::PRODUCT_WRITTEN_EVENT => 'onProductWritten'];
  21.     }
  22.     public function onProductWritten(EntityWrittenEvent $event): void
  23.     {
  24.         $context $event->getContext();
  25.         if ($context->getVersionId() !== Defaults::LIVE_VERSION) {
  26.             return;
  27.         }
  28.         foreach ($event->getWriteResults() as $writeResult) {
  29.             if ($writeResult->getOperation() !== EntityWriteResult::OPERATION_INSERT) {
  30.                 continue;
  31.             }
  32.             $id $writeResult->getPrimaryKey();
  33.             if (is_array($id)) {
  34.                 $id reset($id);
  35.             }
  36.             $this->bus->dispatch(new ProductInsertedMessage($id$context));
  37.         }
  38.     }
  39. }