b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / Mirasvit / SearchReport / Plugin /
Filename/home/Mirasvit/SearchReport/Plugin/ResponsePlugin.php
Size3.92 kb
Permissionrw-r--r--
Ownerroot : root
Create time01-Jul-2024 20:52
Last modified06-Apr-2021 18:06
Last accessed21-Aug-2025 21:07
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Mirasvit
*
* This source file is subject to the Mirasvit Software License, which is available at https://mirasvit.com/license/.
* Do not edit or add to this file if you wish to upgrade the to newer versions in the future.
* If you wish to customize this module for your needs.
* Please refer to http://www.magentocommerce.com for more information.
*
* @category Mirasvit
* @package mirasvit/module-search-report
* @version 1.0.8
* @copyright Copyright (C) 2020 Mirasvit (https://mirasvit.com/)
*/



namespace Mirasvit\SearchReport\Plugin;

use Magento\Framework\App\RequestInterface;
use Magento\Framework\App\ResponseInterface;
use Magento\Framework\Registry;
use Magento\Framework\Stdlib\CookieManagerInterface;
use Mirasvit\SearchReport\Api\Service\LogServiceInterface;
use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;

class ResponsePlugin
{
const COOKIE_NAME = 'searchReport-log';

/**
* @var \Magento\Framework\App\Request\Http
*/
private $request;

/**
* @var LogServiceInterface
*/
private $logService;

/**
* @var CookieManagerInterface
*/
private $cookieManager;

/**
* @var CookieMetadataFactory
*/
private $cookieMetadataFactory;

/**
* @var Registry
*/
private $registry;

/**
* ResponsePlugin constructor.
* @param RequestInterface $request
* @param LogServiceInterface $logService
* @param CookieManagerInterface $cookieManager
* @param CookieMetadataFactory $cookieMetadataFactory
* @param Registry $registry
*/
public function __construct(
RequestInterface $request,
LogServiceInterface $logService,
CookieManagerInterface $cookieManager,
CookieMetadataFactory $cookieMetadataFactory,
Registry $registry
) {
$this->request = $request;
$this->logService = $logService;
$this->cookieManager = $cookieManager;
$this->cookieMetadataFactory = $cookieMetadataFactory;
$this->registry = $registry;
}

/**
* {@inheritdoc}
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function beforeSendResponse(ResponseInterface $response)
{
/** @var \Magento\Framework\App\Response\Http $response */

if ($this->request->getParam('q')) {
$query = $this->request->getParam('q');
$misspell = $this->request->getParam('o');
$fallback = $this->request->getParam('f');
$results = $this->registry->registry(SearchPlugin::REGISTRY_KEY);
$source = $this->request->getFullActionName();

if ($results === null) {
return;
}

$log = $this->logService->logQuery($query, $results, $source, $misspell, $fallback);

if ($log) {
$this->setLogCookie($log->getId());
}
} elseif (in_array($this->request->getModuleName(), ['catalog', 'catalogsearch'])
|| in_array($this->request->getFullActionName(), ['cms_index_index','cms_page_view'])) {
$logId = $this->cookieManager->getCookie(self::COOKIE_NAME);
$this->logService->logClick($logId);

$this->setLogCookie(0);
}
}

/**
* @param int $logId
* @throws \Magento\Framework\Exception\InputException
* @throws \Magento\Framework\Stdlib\Cookie\CookieSizeLimitReachedException
* @throws \Magento\Framework\Stdlib\Cookie\FailureToSendException
*/
private function setLogCookie($logId)
{
$metadata = $this->cookieMetadataFactory->createPublicCookieMetadata([
'path' => '/',
]);

/*
* If enabled - allows subdomains
*/
// $metadata->setDomain($_SERVER['HTTP_HOST']);
$metadata->setSecure(isset($_SERVER['HTTPS']));
$metadata->setHttpOnly(true);

$this->cookieManager->setPublicCookie(self::COOKIE_NAME, $logId, $metadata);
}
}