<?php
/**
* @var \Pimcore\Templating\PhpEngine $this
* @var \Pimcore\Templating\PhpEngine $view
* @var \Pimcore\Templating\GlobalVariables $app
*/
namespace Elements\Bundle\GoogleCseBundle\Controller;
use Pimcore\Controller\FrontendController;
use Pimcore\Google\Cse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\Routing\RouterInterface;
use Knp\Component\Pager\PaginatorInterface;
class CseController extends FrontendController
{
public function onKernelController(FilterControllerEvent $event)
{
if ($this->container->hasParameter('elements.engine')) {
$this->setViewAutoRender($event->getRequest(), true, $this->getParameter('elements.engine'));
} else {
$this->setViewAutoRender($event->getRequest(), true, $this->getParameter('elements_google_cse.engine'));
}
}
/**
* @param Request $request
*/
public function searchAction(Request $request, PaginatorInterface $paginator)
{
$this->addResponseHeader('X-Robots-Tag', 'noindex,follow');
$router = $this->get('router');
$searchParam = $request->get('q');
$result = new Cse();
$page = (int)$request->get('page', 1);
$perPage = $this->document->getProperty('cseItemCount') ?? 10;
if (!empty($searchParam)) {
if ($this->document->getProperty('cseSite') != '') {
$searchParam .= ' site:' . $this->document->getProperty('cseSite');
}
$result = \Pimcore\Google\Cse::search($searchParam, (($page - 1) * $perPage), null, [
'cx' => $this->document->getProperty('cx')
], $request->get('facet'));
}
$returnArray = [
"queryString" => htmlspecialchars(strip_tags($searchParam)),
"paginator" => $paginator->paginate($result, $page, $perPage),
"result" => $result,
"router" => $router
];
if ($request->isXmlHttpRequest()) {
$template = $this->renderTemplate('@ElementsGoogleCse/Includes/cseContainer.html.twig', $returnArray);
return $this->json(['html' => $template->getContent(), 'success' => true]);
}
return $this->render('@ElementsGoogleCse/Cse/search.html.twig', $returnArray);
}
}