|
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 |
Size | 3.72 kb |
Permission | rwxrwxrwx |
Owner | root : root |
Create time | 21-Aug-2025 12:26 |
Last modified | 15-Oct-2024 20:30 |
Last accessed | 23-Aug-2025 09:02 |
Actions | edit | rename | delete | download (gzip) |
View | text | 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);
}
}
/**
* 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);
}
}