<?php
/*
* Copyright (C) eBRANA s.r.o. - All Rights Reserved
* Unauthorized copying of this file, via any medium is strictly prohibited
* Proprietary and confidential
*/
namespace EshopBundle\Controller;
use Doctrine\Common\Collections\ArrayCollection;
use EshopBundle\Entity\MlEmail;
use EshopBundle\Entity\Page;
use EshopBundle\Form\Type\NewsletterRegistrationTypeExtended;
use EshopBundle\Form\Type\NewsletterRegistrationType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* Controller pro staticke stranky
*/
class PageController extends DefaultController
{
use Traits\PageTrait;
/**
* Zobrazeni stranky
*
* DS 2022-04-08 V083446 převzato z purusmedy
*
* @param int $id - id stranky
* @param \Symfony\Component\HttpFoundation\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function indexAction($id, Request $request)
{
// nacteni stranky
/** @var Page $page */
$page = $this
->getDoctrine()
->getRepository('EshopBundle:Page')
->find($id);
// stranka nenalezena
if (empty($page)) {
return $this->forward('EshopBundle:Error:show', [
'request' => $request,
'exception' => $this->createNotFoundException('Page not found for id ' . $id)
]);
}
if ($this->cacheService->createPageKey(count($page->getQSearchResult()))->cacheExists()) {
return $this->cacheService->getCacheResponse();
}
/** @var \EshopBundle\DependencyInjection\View\VariablesBag $vars */
$vars = $this->get('view.variables');
$vars->setCanonicalUrl($page->getLink());
// pripojeni formularu
$forms = $this->appendForms($request, 'stranky3', $id, $page->getLink(), $page->getName());
$newsletterForm = null;
if($page->getShowNewsletterForm() && !empty($page->getFiles()->getValues())) {
$mlEmail = new MlEmail();
$newsletterForm = $this->createForm(NewsletterRegistrationTypeExtended::class, $mlEmail, [
'action' => $this->generateUrl('newsletter_extended_register', ['pageId' => $page->getId()]),
'method' => 'POST',
'attr' => ['pageId' => $page->getId()]
]);
}
if ($forms instanceof Response) {
return $forms;
}
// pripojeni map
$maps = $this->appendGoogleMaps('stranky3', $id);
$apiKey = $partnerConfig = $this->get('eshop_config.partner_config')->getGoogleMapApiKey();
$this->populateCrumbtrail();
$this->populateSeoFields();
$google = $this->get('marketing.google');
$google = $google->dlOther();
if($newsletterForm) {
$form = $newsletterForm->createView();
} else {
$form = null;
}
/** @var ArrayCollection $files */
$files = $page->getFiles();
if(null !== $form) {
$files->remove(0);
}
// renderovani stranky
$response = $this->render('page/index.html.twig', array(
'page' => $page,
'maps' => $maps,
'apiKey' => $apiKey,
'formViews' => $forms['formViews'],
'formInstances' => $forms['formInstances'],
'banners' => $this->get('marketing.banners')->loadForSection('page', $id),
'qSearch' => $this->getQSearch($page, $request),
'newsletterForm' => $form,
'files' => $files,
));
$this->cacheService->setCache($response);
return $response;
}
}