![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-graph-ql-cache/Controller/Plugin/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\GraphQlCache\Controller\Plugin; use Magento\Framework\App\FrontControllerInterface; use Magento\Framework\App\RequestInterface; use Magento\Framework\App\Response\Http as ResponseHttp; use Magento\Framework\Controller\ResultInterface; use Magento\Framework\Registry; use Magento\GraphQl\Controller\HttpRequestProcessor; use Magento\GraphQlCache\Model\CacheableQuery; use Magento\GraphQlCache\Model\CacheId\CacheIdCalculator; use Magento\PageCache\Model\Config; /** * Plugin for handling controller after controller tags and pre-controller validation. */ class GraphQl { /** * @var CacheableQuery */ private $cacheableQuery; /** * @var Config */ private $config; /** * @var ResponseHttp */ private $response; /** * @var HttpRequestProcessor */ private $requestProcessor; /** * @var Registry */ private $registry; /** * @var CacheIdCalculator */ private $cacheIdCalculator; /** * @param CacheableQuery $cacheableQuery * @param Config $config * @param ResponseHttp $response * @param HttpRequestProcessor $requestProcessor * @param Registry $registry * @param CacheIdCalculator $cacheIdCalculator */ public function __construct( CacheableQuery $cacheableQuery, Config $config, ResponseHttp $response, HttpRequestProcessor $requestProcessor, Registry $registry, CacheIdCalculator $cacheIdCalculator ) { $this->cacheableQuery = $cacheableQuery; $this->config = $config; $this->response = $response; $this->requestProcessor = $requestProcessor; $this->registry = $registry; $this->cacheIdCalculator = $cacheIdCalculator; } /** * Process graphql headers * * @param FrontControllerInterface $subject * @param RequestInterface $request * @return void * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function beforeDispatch( FrontControllerInterface $subject, RequestInterface $request ) { /** @var \Magento\Framework\App\Request\Http $request */ $this->requestProcessor->processHeaders($request); } /** * Plugin for GraphQL after render from dispatch to set tag and cache headers * * @param ResultInterface $subject * @param ResultInterface $result * @param ResponseHttp $response * @return ResultInterface * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterRenderResult(ResultInterface $subject, ResultInterface $result, ResponseHttp $response) { $sendNoCacheHeaders = false; if ($this->config->isEnabled()) { /** @see \Magento\Framework\App\Http::launch */ /** @see \Magento\PageCache\Model\Controller\Result\BuiltinPlugin::afterRenderResult */ $this->registry->register('use_page_cache_plugin', true, true); $cacheId = $this->cacheIdCalculator->getCacheId(); if ($cacheId) { $this->response->setHeader(CacheIdCalculator::CACHE_ID_HEADER, $cacheId, true); } if ($this->cacheableQuery->shouldPopulateCacheHeadersWithTags()) { $this->response->setPublicHeaders($this->config->getTtl()); $this->response->setHeader('X-Magento-Tags', implode(',', $this->cacheableQuery->getCacheTags()), true); } else { $sendNoCacheHeaders = true; } } else { $sendNoCacheHeaders = true; } if ($sendNoCacheHeaders) { $this->response->setNoCacheHeaders(); } return $result; } }