mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 17:27:36 +00:00
107 lines
2.8 KiB
PHP
107 lines
2.8 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\ReleaseNotification\Model\Condition;
|
|
|
|
use Magento\ReleaseNotification\Model\ResourceModel\Viewer\Logger;
|
|
use Magento\Backend\Model\Auth\Session;
|
|
use Magento\Framework\App\ProductMetadataInterface;
|
|
use Magento\Framework\View\Layout\Condition\VisibilityConditionInterface;
|
|
use Magento\Framework\App\CacheInterface;
|
|
|
|
/**
|
|
* Dynamic validator for UI release notification, manage UI component visibility.
|
|
* Return true if the logged in user has not seen the notification.
|
|
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
|
|
*
|
|
* @deprecated Starting from Magento OS 2.4.7 Magento_ReleaseNotification module is deprecated
|
|
* in favor of another in-product messaging mechanism
|
|
* @see Current in-product messaging mechanism
|
|
*/
|
|
class CanViewNotification implements VisibilityConditionInterface
|
|
{
|
|
/**
|
|
* Unique condition name.
|
|
*
|
|
* @var string
|
|
*/
|
|
private static $conditionName = 'can_view_notification';
|
|
|
|
/**
|
|
* Prefix for cache
|
|
*
|
|
* @var string
|
|
*/
|
|
private static $cachePrefix = 'release-notification-popup-';
|
|
|
|
/**
|
|
* @var Logger
|
|
*/
|
|
private $viewerLogger;
|
|
|
|
/**
|
|
* @var Session
|
|
*/
|
|
private $session;
|
|
|
|
/**
|
|
* @var ProductMetadataInterface
|
|
*/
|
|
private $productMetadata;
|
|
|
|
/**
|
|
* @var CacheInterface
|
|
*/
|
|
private $cacheStorage;
|
|
|
|
/**
|
|
* CanViewNotification constructor.
|
|
*
|
|
* @param Logger $viewerLogger
|
|
* @param Session $session
|
|
* @param ProductMetadataInterface $productMetadata
|
|
* @param CacheInterface $cacheStorage
|
|
*/
|
|
public function __construct(
|
|
Logger $viewerLogger,
|
|
Session $session,
|
|
ProductMetadataInterface $productMetadata,
|
|
CacheInterface $cacheStorage
|
|
) {
|
|
$this->viewerLogger = $viewerLogger;
|
|
$this->session = $session;
|
|
$this->productMetadata = $productMetadata;
|
|
$this->cacheStorage = $cacheStorage;
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function isVisible(array $arguments)
|
|
{
|
|
$userId = $this->session->getUser()->getId();
|
|
$cacheKey = self::$cachePrefix . $userId;
|
|
$value = $this->cacheStorage->load($cacheKey);
|
|
|
|
if ($value === false) {
|
|
$lastViewVersion = $this->viewerLogger->get($userId)->getLastViewVersion();
|
|
$value = ($lastViewVersion) ?
|
|
version_compare($lastViewVersion, $this->productMetadata->getVersion(), '<') : true;
|
|
$this->cacheStorage->save(false, $cacheKey);
|
|
}
|
|
return (bool)$value;
|
|
}
|
|
|
|
/**
|
|
* Get condition name
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getName()
|
|
{
|
|
return self::$conditionName;
|
|
}
|
|
}
|