src/Core/Content/ImportExport/Service/DeleteExpiredFilesService.php line 34

  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Content\ImportExport\Service;
  3. use Shopware\Core\Framework\Context;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\RangeFilter;
  7. use Shopware\Core\Framework\Log\Package;
  8. /**
  9.  * @internal We might break this in v6.2
  10.  */
  11. #[Package('system-settings')]
  12. class DeleteExpiredFilesService
  13. {
  14.     public function __construct(private readonly EntityRepository $fileRepository)
  15.     {
  16.     }
  17.     public function countFiles(Context $context): int
  18.     {
  19.         $criteria $this->buildCriteria();
  20.         $criteria->setLimit(1);
  21.         $criteria->setTotalCountMode(Criteria::TOTAL_COUNT_MODE_EXACT);
  22.         return $this->fileRepository->search($criteria$context)->getTotal();
  23.     }
  24.     public function deleteFiles(Context $context): void
  25.     {
  26.         $criteria $this->buildCriteria();
  27.         $ids $this->fileRepository->searchIds($criteria$context)->getIds();
  28.         $ids array_map(fn ($id) => ['id' => $id], $ids);
  29.         $this->fileRepository->delete($ids$context);
  30.     }
  31.     private function buildCriteria(): Criteria
  32.     {
  33.         $criteria = new Criteria();
  34.         $criteria->addFilter(new RangeFilter(
  35.             'expireDate',
  36.             [
  37.                 RangeFilter::LT => date(\DATE_ATOM),
  38.             ]
  39.         ));
  40.         return $criteria;
  41.     }
  42. }