custom/plugins/UandiEfbDownloadCenter/src/MediaListing/MediaListingLoader.php line 39

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Uandi\UandiEfbDownloadCenter\MediaListing;
  3. use Shopware\Core\Content\Media\MediaDefinition;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsAnyFilter;
  7. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  8. class MediaListingLoader
  9. {
  10.     protected EntityRepositoryInterface $repository;
  11.     public function __construct(
  12.         EntityRepositoryInterface $repository
  13.     ) {
  14.         $this->repository $repository;
  15.     }
  16.     public function load(array $mediaFolderIdsCriteria $criteriaSalesChannelContext $context): MediaListingResult
  17.     {
  18.         if (empty($mediaFolderIds)) {
  19.             return MediaListingResult::createEmpty($criteria$context->getContext());
  20.         }
  21.         $criteria->addFilter(new EqualsAnyFilter('mediaFolderId'$mediaFolderIds));
  22.         $ids $this->repository->searchIds($criteria$context->getContext());
  23.         if (empty($ids->getIds())) {
  24.             return MediaListingResult::createEmpty($criteria$context->getContext());
  25.         }
  26.         $aggregations $this->repository->aggregate($criteria$context->getContext());
  27.         $read $criteria->cloneForRead($ids->getIds());
  28.         $entities $this->repository->search($read$context->getContext());
  29.         $result = new MediaListingResult(MediaDefinition::ENTITY_NAME$ids->getTotal(), $entities->getEntities(), $aggregations$criteria$context->getContext());
  30.         $result->addState(...$ids->getStates());
  31.         $result->addState(...$entities->getStates());
  32.         return $result;
  33.     }
  34. }