custom/plugins/CbaxModulPreviewImageSlider/src/Subscriber/FrontendSubscriber.php line 52

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Cbax\ModulPreviewImageSlider\Subscriber;
  3. use Shopware\Core\Content\Product\Events\ProductListingCriteriaEvent;
  4. use Shopware\Core\Content\Product\Events\ProductSearchCriteriaEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Shopware\Core\System\SystemConfig\SystemConfigService;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Sorting\FieldSorting;
  8. class FrontendSubscriber implements EventSubscriberInterface
  9. {
  10.     const MODUL_NAME 'CbaxModulPreviewImageSlider';
  11.     /**
  12.      * @var SystemConfigService
  13.      */
  14.     private $systemConfigService;
  15.     public function __construct(SystemConfigService $systemConfigService)
  16.     {
  17.         $this->systemConfigService $systemConfigService;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             ProductListingCriteriaEvent::class => 'handleListingRequest',
  23.             ProductSearchCriteriaEvent::class => 'handleSearchRequest'
  24.         ];
  25.     }
  26.     public function handleListingRequest(ProductListingCriteriaEvent $event)
  27.     {
  28.         $salesChannelId $event->getSalesChannelContext()->getSalesChannelId();
  29.         $config $this->systemConfigService->get(self::MODUL_NAME$salesChannelId)['config'];
  30.         if (empty($config['cbaxPreviewImageSliderActive'])) return;
  31.         $maxPictureNumber = !empty($config['cbaxPreviewImageSliderMaxImages']) ? (int)$config['cbaxPreviewImageSliderMaxImages'] : 0;
  32.         $criteria $event->getCriteria();
  33.         $criteria->addAssociation('media');
  34.         $criteria->getAssociation('media')->addSorting(new FieldSorting('position'FieldSorting::ASCENDING));
  35.         if ($maxPictureNumber 0)
  36.         {
  37.             $criteria->getAssociation('media')->setLimit($maxPictureNumber);
  38.         }
  39.     }
  40.     public function handleSearchRequest(ProductSearchCriteriaEvent $event)
  41.     {
  42.         $salesChannelId $event->getSalesChannelContext()->getSalesChannelId();
  43.         $config $this->systemConfigService->get(self::MODUL_NAME$salesChannelId)['config'];
  44.         if (empty($config['cbaxPreviewImageSliderActive'])) return;
  45.         $maxPictureNumber = !empty($config['cbaxPreviewImageSliderMaxImages']) ? (int)$config['cbaxPreviewImageSliderMaxImages'] : 0;
  46.         $criteria $event->getCriteria();
  47.         $criteria->addAssociation('media');
  48.         $criteria->getAssociation('media')->addSorting(new FieldSorting('position'FieldSorting::ASCENDING));
  49.         if ($maxPictureNumber 0)
  50.         {
  51.             $criteria->getAssociation('media')->setLimit($maxPictureNumber);
  52.         }
  53.     }
  54. }