75 lines
2.2 KiB
PHP
75 lines
2.2 KiB
PHP
<?php
|
|
/**
|
|
* @package Plumrocket_CookieConsent
|
|
* @copyright Copyright (c) 2022 Plumrocket Inc. (https://plumrocket.com)
|
|
* @license https://plumrocket.com/license End-user License Agreement
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Plumrocket\CookieConsent\Observer;
|
|
|
|
use Magento\Framework\Event\Observer;
|
|
use Magento\Framework\Event\ObserverInterface;
|
|
use Magento\Framework\Exception\AlreadyExistsException;
|
|
use Magento\Framework\Exception\NoSuchEntityException;
|
|
use Plumrocket\CookieConsent\Model\Consent\Logger;
|
|
use Plumrocket\CookieConsent\Model\User\SetCookieConsentId;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
/**
|
|
* @since 1.4.1
|
|
*/
|
|
class LogConsent implements ObserverInterface
|
|
{
|
|
/**
|
|
* @var \Psr\Log\LoggerInterface
|
|
*/
|
|
private $logger;
|
|
|
|
/**
|
|
* @var \Plumrocket\CookieConsent\Model\Consent\Logger
|
|
*/
|
|
private $consentLogger;
|
|
|
|
/**
|
|
* @var \Plumrocket\CookieConsent\Model\User\SetCookieConsentId
|
|
*/
|
|
private $setCookieConsentId;
|
|
|
|
/**
|
|
* @param \Psr\Log\LoggerInterface $logger
|
|
* @param \Plumrocket\CookieConsent\Model\Consent\Logger $consentLogger
|
|
* @param \Plumrocket\CookieConsent\Model\User\SetCookieConsentId $setCookieConsentId
|
|
*/
|
|
public function __construct(
|
|
LoggerInterface $logger,
|
|
Logger $consentLogger,
|
|
SetCookieConsentId $setCookieConsentId
|
|
) {
|
|
$this->logger = $logger;
|
|
$this->consentLogger = $consentLogger;
|
|
$this->setCookieConsentId = $setCookieConsentId;
|
|
}
|
|
|
|
/**
|
|
* Log customer consent.
|
|
*
|
|
* @param \Magento\Framework\Event\Observer $observer
|
|
* @throws \Magento\Framework\Exception\InputException
|
|
* @throws \Magento\Framework\Stdlib\Cookie\CookieSizeLimitReachedException
|
|
* @throws \Magento\Framework\Stdlib\Cookie\FailureToSendException
|
|
*/
|
|
public function execute(Observer $observer): void
|
|
{
|
|
try {
|
|
$settings = $observer->getEvent()->getSettings();
|
|
$consentLog = $this->consentLogger->log($settings);
|
|
|
|
$this->setCookieConsentId->execute((int) $consentLog->getId());
|
|
} catch (AlreadyExistsException|NoSuchEntityException $e) {
|
|
$this->logger->error($e->getMessage());
|
|
}
|
|
}
|
|
}
|