vendor/store.shopware.com/odsnews/src/Storefront/Pagelet/Header/HeaderPageletLoadedSubscriber.php line 29

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Onedrop\News\Storefront\Pagelet\Header;
  4. use Onedrop\News\Content\OdsSiteNews\OdsSiteNewsEntity;
  5. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  8. use Shopware\Storefront\Pagelet\Header\HeaderPageletLoadedEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class HeaderPageletLoadedSubscriber implements EventSubscriberInterface
  11. {
  12.     private EntityRepositoryInterface $odsNewsRepository;
  13.     public function __construct(EntityRepositoryInterface $odsNewsRepository)
  14.     {
  15.         $this->odsNewsRepository $odsNewsRepository;
  16.     }
  17.     public static function getSubscribedEvents(): array
  18.     {
  19.         return [
  20.             HeaderPageletLoadedEvent::class => 'onHeaderPageletLoaded',
  21.         ];
  22.     }
  23.     public function onHeaderPageletLoaded(HeaderPageletLoadedEvent $event): void
  24.     {
  25.         $odsNewExtension $this->getOdsNewsFromExtension($event);
  26.         if (\is_null($odsNewExtension)) {
  27.             return;
  28.         }
  29.         $odsNewsId $odsNewExtension->getId();
  30.         $criteria = new Criteria();
  31.         $criteria->addAssociation('translations.media');
  32.         $criteria->addFilter(new EqualsFilter('id'$odsNewsId));
  33.         $odsNews $this->odsNewsRepository->search($criteria$event->getContext());
  34.         $translations $odsNews->getElements()[$odsNewsId]->getTranslations();
  35.         $odsNewExtension->setTranslations($translations);
  36.     }
  37.     private function getOdsNewsFromExtension(HeaderPageletLoadedEvent $event): ?OdsSiteNewsEntity
  38.     {
  39.         $navigation $event->getPagelet()->getNavigation();
  40.         if (\is_null($navigation)) {
  41.             return null;
  42.         }
  43.         $activeNavigate $navigation->getActive();
  44.         if (\is_null($activeNavigate)) {
  45.             return null;
  46.         }
  47.         if (!isset($activeNavigate->getExtensions()['ods_news'])) {
  48.             return null;
  49.         }
  50.         /**
  51.          * @var OdsSiteNewsEntity $odsNews
  52.          */
  53.         $odsNews $activeNavigate->getExtensions()['ods_news'];
  54.         return $odsNews;
  55.     }
  56. }