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 / a / home / dev2.destoffenstraat.com / app / code / Mirasvit / SearchReport / Plugin /
Filename/home/a/home/dev2.destoffenstraat.com/app/code/Mirasvit/SearchReport/Plugin/ResponsePlugin.php
Size3.72 kb
Permissionrwxrwxrwx
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified15-Oct-2024 20:30
Last accessed23-Aug-2025 09:02
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-ultimate
* @version 2.3.2
* @copyright Copyright (C) 2024 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\Cookie\CookieMetadataFactory;
use Magento\Framework\Stdlib\CookieManagerInterface;
use Mirasvit\SearchReport\Service\LogService;
use Mirasvit\Search\Service\BotDetectorService;

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

private $request;

private $logService;

private $cookieManager;

private $cookieMetadataFactory;

private $registry;

private $botDetectorService;

public function __construct(
RequestInterface $request,
LogService $logService,
CookieManagerInterface $cookieManager,
CookieMetadataFactory $cookieMetadataFactory,
Registry $registry,
BotDetectorService $botDetectorService
) {
$this->request = $request;
$this->logService = $logService;
$this->cookieManager = $cookieManager;
$this->cookieMetadataFactory = $cookieMetadataFactory;
$this->registry = $registry;
$this->botDetectorService = $botDetectorService;
}

public function beforeSendResponse(ResponseInterface $response): void
{
$query = $this->request->getParam('q');

if ($query) {
if (!$this->botDetectorService->isBotQuery($query)) {
$misspell = $this->request->getParam('o');
$misspell = is_array($misspell) ? implode(' ', $misspell) : (string)$misspell;
$fallback = $this->request->getParam('f');
$fallback = is_array($fallback) ? implode(' ', $fallback) : (string)$fallback;

$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) {
try {
$this->setLogCookie($log->getId());
} catch (\Exception $e) {
}
}
}
} elseif (in_array($this->request->getModuleName(), ['catalog', 'catalogsearch'])
|| in_array($this->request->getFullActionName(), ['cms_index_index', 'cms_page_view'])) {
$logId = (int)$this->cookieManager->getCookie(self::COOKIE_NAME);
$this->logService->logClick($logId);

try {
$this->setLogCookie(0);
} catch (\Exception $e) {
}
}
}

private function setLogCookie(int $logId): void
{
$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);
}
}