vendor/store.shopware.com/swagenterprisesearchplatform/src/PreviewSearch/PreviewSearchSubscriber.php line 19

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Swag\EnterpriseSearch\PreviewSearch;
  3. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  4. use Swag\EnterpriseSearch\Search\SearchCriteriaEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpFoundation\Request;
  7. class PreviewSearchSubscriber implements EventSubscriberInterface
  8. {
  9.     public static function getSubscribedEvents(): array
  10.     {
  11.         return [
  12.             SearchCriteriaEvent::class => 'handleRequest',
  13.         ];
  14.     }
  15.     public function handleRequest(SearchCriteriaEvent $event): void
  16.     {
  17.         $request $event->getRequest();
  18.         $criteria $event->getCriteria();
  19.         if (!$request->get('explain'false)) {
  20.             return;
  21.         }
  22.         $this->handlePagination($request$criteria);
  23.     }
  24.     private function handlePagination(Request $requestCriteria $criteria): void
  25.     {
  26.         $limit $this->getLimit($request);
  27.         $page $this->getPage($request);
  28.         $criteria->setOffset(($page 1) * $limit);
  29.         $criteria->setLimit($limit);
  30.         $criteria->setTotalCountMode(Criteria::TOTAL_COUNT_MODE_EXACT);
  31.     }
  32.     private function getLimit(Request $request): int
  33.     {
  34.         $limit $request->query->getInt('limit'24);
  35.         if ($request->isMethod(Request::METHOD_POST)) {
  36.             $limit $request->request->getInt('limit'$limit);
  37.         }
  38.         return $limit <= 24 $limit;
  39.     }
  40.     private function getPage(Request $request): int
  41.     {
  42.         $page $request->query->getInt('page'1);
  43.         if ($request->isMethod(Request::METHOD_POST)) {
  44.             $page $request->request->getInt('page'$page);
  45.         }
  46.         return $page <= $page;
  47.     }
  48. }