vendor/crehler/advanced-sort/src/Subscriber/ProductAvailableUpdated.php line 42

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright 2023 Crehler Sp. z o.o.
  4.  *
  5.  * https://crehler.com/
  6.  * support@crehler.com
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace Crehler\AdvancedSort\Subscriber;
  12. use Crehler\AdvancedSort\Services\ProductAvailableUpdater;
  13. use Shopware\Core\Content\Product\Events\ProductIndexerEvent;
  14. use Shopware\Core\Content\Product\Events\ProductNoLongerAvailableEvent;
  15. use Shopware\Core\Framework\Context;
  16. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  17. class ProductAvailableUpdated implements EventSubscriberInterface
  18. {
  19.     private ProductAvailableUpdater $availableUpdater;
  20.     public function __construct(ProductAvailableUpdater $availableUpdater)
  21.     {
  22.         $this->availableUpdater $availableUpdater;
  23.     }
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             ProductNoLongerAvailableEvent::class => 'productNoLongerAvailable',
  28.             ProductIndexerEvent::class => 'onProductIndexerEvent',
  29.         ];
  30.     }
  31.     public function onProductIndexerEvent(ProductIndexerEvent $event)
  32.     {
  33.         $this->updateAvailable($event->getIds(), $event->getContext());
  34.     }
  35.     public function productNoLongerAvailable(ProductNoLongerAvailableEvent $event)
  36.     {
  37.         $this->updateAvailable($event->getIds(), $event->getContext());
  38.     }
  39.     private function updateAvailable(array $idsContext $context)
  40.     {
  41.         $this->availableUpdater->update($ids$context);
  42.     }
  43. }