vendor/hofff/contao-consent-core/src/Action/BannerAction.php line 50

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Hofff\Contao\Consent\Core\Action;
  4. use Contao\Controller;
  5. use Contao\CoreBundle\Framework\Adapter;
  6. use Hofff\Contao\Consent\Bridge\ConsentToolManager;
  7. use Netzmacht\Contao\Toolkit\View\Template\TemplateRenderer;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. /** @internal */
  13. class BannerAction extends AbstractConsentToolAwareAction
  14. {
  15.     /** @var TemplateRenderer */
  16.     private $templateRenderer;
  17.     /** @var TranslatorInterface */
  18.     private $translator;
  19.     /** @var Adapter<Controller> */
  20.     private $controllerAdapter;
  21.     public function __construct(
  22.         ConsentToolManager $consentToolManager,
  23.         TemplateRenderer $templateRenderer,
  24.         TranslatorInterface $translator,
  25.         Adapter $controllerAdapter
  26.     ) {
  27.         parent::__construct($consentToolManager);
  28.         $this->templateRenderer  $templateRenderer;
  29.         $this->translator        $translator;
  30.         $this->controllerAdapter $controllerAdapter;
  31.     }
  32.     public function __invoke(Request $request): Response
  33.     {
  34.         $consentTool $this->createConsentTool($request);
  35.         $rootTag     $consentTool->rootTag();
  36.         if ($rootTag === null) {
  37.             throw new BadRequestHttpException();
  38.         }
  39.         $buffer $this->templateRenderer->render(
  40.             'fe:' $rootTag->bannerTemplate(),
  41.             [
  42.                 'tag'         => $rootTag,
  43.                 'closeButton' => $this->translator->trans(
  44.                     'hofff_consent.closeButton',
  45.                     [],
  46.                     'contao_hofff_consent'
  47.                 ),
  48.             ]
  49.         );
  50.         $buffer $this->replaceInsertTags($buffer);
  51.         $response = new Response($buffer);
  52.         $response->headers->set('Cache-Control''no-cache, no-store');
  53.         $response->setPrivate();
  54.         return $response;
  55.     }
  56.     private function replaceInsertTags(string $buffer): string
  57.     {
  58.         return $this->controllerAdapter->replaceInsertTags(
  59.             $this->controllerAdapter->replaceInsertTags($bufferfalse)
  60.         );
  61.     }
  62. }