Your IP : 216.73.217.100


Current Path : /home/rtorresani/www/vendor/iubenda/module-cookiesolution/Observer/
Upload File :
Current File : //home/rtorresani/www/vendor/iubenda/module-cookiesolution/Observer/ReviewNotification.php

<?php

namespace Iubenda\CookieSolution\Observer;

use Magento\Backend\Model\UrlInterface;
use Magento\Framework\App\Action\Context;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Message\ManagerInterface as MessageManagerInterface;
use \Magento\Framework\App\Request\Http;
use \Magento\Framework\App\ObjectManager;
use Iubenda\CookieSolution\Helper\Data as HelperData;

class ReviewNotification implements ObserverInterface
{

    /**
     * @var MessageManagerInterface
     */
    private $messageManager;

    /**
     * HTTP request
     *
     * @var Http
     */
    private $request;

    /**
     * Helper data
     *
     * @var HelperData|object
     */
    private $helperData;

    /**
     * Class constructor.
     *
     * @param object $helperData
     * @param object $directory_list
     *
     * @return void
     */
    public function __construct(HelperData $helperData, Context $context, Http $request)
    {
        $this->messageManager = $context->getMessageManager();
        $this->helperData     = $helperData;
        $this->request        = $request;
    }

    /**
     * Update HTML using iubenda class.
     *
     * @param object $observer
     *
     * @return void
     */
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $this->helperData->setActivationDate();

        $fullActionName = $observer->getEvent()->getData('full_action_name');
        // Validate we are in system config page
        if ('adminhtml_system_config_edit' != $fullActionName) {
            return;
        }

        // Escape from non Iubenda config pages.
        if ('iubenda' !== $this->request->getUserParam('section')) {
            return;
        }

        // Check if eligible to show the review notification
        if (! $this->helperData->canShowReviewNotification()) {
            return;
        }

        if (! $this->messageManager->getMessages(false)->getCount()) {
            $data = $this->prepareData();
            $this->messageManager->addComplexNoticeMessage('reviewMessage', $data);
        }
    }

    /**
     * Prepare data action URLs
     * @return array
     */
    private function prepareData(): array
    {
        $generator = ObjectManager::getInstance()->get(UrlInterface::class);

        return [
            'yes' => $generator->getUrl('iubenda/review/index'),
            'no'  => $generator->getUrl('iubenda/review/dismiss'),
        ];
    }
}