Files

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());
}
}
}