vendor/elements/google-cse-bundle/src/Controller/CseController.php line 17

Open in your IDE?
  1. <?php
  2. /**
  3.  * @var \Pimcore\Templating\PhpEngine $this
  4.  * @var \Pimcore\Templating\PhpEngine $view
  5.  * @var \Pimcore\Templating\GlobalVariables $app
  6.  */
  7. namespace Elements\Bundle\GoogleCseBundle\Controller;
  8. use Pimcore\Controller\FrontendController;
  9. use Pimcore\Google\Cse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
  12. use Symfony\Component\Routing\RouterInterface;
  13. use Knp\Component\Pager\PaginatorInterface;
  14. class CseController extends FrontendController
  15. {
  16.     public function onKernelController(FilterControllerEvent $event)
  17.     {
  18.         if ($this->container->hasParameter('elements.engine')) {
  19.             $this->setViewAutoRender($event->getRequest(), true$this->getParameter('elements.engine'));
  20.         } else {
  21.             $this->setViewAutoRender($event->getRequest(), true$this->getParameter('elements_google_cse.engine'));
  22.         }
  23.     }
  24.     /**
  25.      * @param Request $request
  26.      */
  27.     public function searchAction(Request $requestPaginatorInterface $paginator)
  28.     {
  29.         $this->addResponseHeader('X-Robots-Tag''noindex,follow');
  30.         $router $this->get('router');
  31.         $searchParam $request->get('q');
  32.         $result = new Cse();
  33.         $page = (int)$request->get('page'1);
  34.         $perPage $this->document->getProperty('cseItemCount') ?? 10;
  35.         if (!empty($searchParam)) {
  36.             if ($this->document->getProperty('cseSite') != '') {
  37.                 $searchParam .= ' site:' $this->document->getProperty('cseSite');
  38.             }
  39.             $result \Pimcore\Google\Cse::search($searchParam, (($page 1) * $perPage), null, [
  40.                 'cx' => $this->document->getProperty('cx')
  41.             ], $request->get('facet'));
  42.         }
  43.         $returnArray = [
  44.             "queryString" => htmlspecialchars(strip_tags($searchParam)),
  45.             "paginator" => $paginator->paginate($result$page$perPage),
  46.             "result" => $result,
  47.             "router" => $router
  48.         ];
  49.         if ($request->isXmlHttpRequest()) {
  50.             $template $this->renderTemplate('@ElementsGoogleCse/Includes/cseContainer.html.twig'$returnArray);
  51.             return $this->json(['html' => $template->getContent(), 'success' => true]);
  52.         }
  53.         return $this->render('@ElementsGoogleCse/Cse/search.html.twig'$returnArray);
  54.     }
  55. }