Skip to content
This repository has been archived by the owner on Dec 19, 2019. It is now read-only.

Commit

Permalink
Merge pull request #4913 from magento-trigger/MC-18527-merge-release
Browse files Browse the repository at this point in the history
[TRIGGER] MC-18527: Merge release branch into 2.3-develop
  • Loading branch information
fascinosum authored Oct 23, 2019
2 parents ba8602a + 71f2c90 commit 0583fc3
Show file tree
Hide file tree
Showing 495 changed files with 9,799 additions and 2,340 deletions.
412 changes: 412 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\AdminAnalytics\Controller\Adminhtml\Config;

use Magento\Backend\App\Action;
use Magento\Framework\App\Action\HttpPostActionInterface;
use Magento\Framework\Controller\ResultFactory;
use Magento\AdminAnalytics\Model\ResourceModel\Viewer\Logger as NotificationLogger;
use Magento\Framework\App\ProductMetadataInterface;
use Magento\Framework\Controller\ResultInterface;
use Magento\Config\Model\Config\Factory;

/**
* Controller to record Admin analytics usage log
*/
class DisableAdminUsage extends Action implements HttpPostActionInterface
{
/**
* @var Factory
*/
private $configFactory;

/**
* @var ProductMetadataInterface
*/
private $productMetadata;

/**
* @var NotificationLogger
*/
private $notificationLogger;

/**
* DisableAdminUsage constructor.
*
* @param Action\Context $context
* @param ProductMetadataInterface $productMetadata
* @param NotificationLogger $notificationLogger
* @param Factory $configFactory
*/
public function __construct(
Action\Context $context,
ProductMetadataInterface $productMetadata,
NotificationLogger $notificationLogger,
Factory $configFactory
) {
parent::__construct($context);
$this->configFactory = $configFactory;
$this->productMetadata = $productMetadata;
$this->notificationLogger = $notificationLogger;
}

/**
* Change the value of config/admin/usage/enabled
*/
private function disableAdminUsage()
{
$configModel = $this->configFactory->create();
$configModel->setDataByPath('admin/usage/enabled', 0);
$configModel->save();
}

/**
* Log information about the last admin usage selection
*
* @return ResultInterface
*/
private function markUserNotified(): ResultInterface
{
$responseContent = [
'success' => $this->notificationLogger->log(
$this->productMetadata->getVersion()
),
'error_message' => ''
];

$resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
return $resultJson->setData($responseContent);
}

/**
* Log information about the last shown advertisement
*
* @return ResultInterface
*/
public function execute()
{
$this->disableAdminUsage();
$this->markUserNotified();
}

/**
* @inheritDoc
*/
protected function _isAllowed()
{
return $this->_authorization->isAllowed(static::ADMIN_RESOURCE);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\AdminAnalytics\Controller\Adminhtml\Config;

use Magento\Backend\App\Action;
use Magento\Framework\App\Action\HttpPostActionInterface;
use Magento\Framework\Controller\ResultFactory;
use Magento\AdminAnalytics\Model\ResourceModel\Viewer\Logger as NotificationLogger;
use Magento\Framework\App\ProductMetadataInterface;
use Magento\Framework\Controller\ResultInterface;
use Magento\Config\Model\Config\Factory;

/**
* Controller to record that the current admin user has responded to Admin Analytics notice
*/
class EnableAdminUsage extends Action implements HttpPostActionInterface
{
/**
* @var Factory
*/
private $configFactory;

/**
* @var ProductMetadataInterface
*/
private $productMetadata;

/**
* @var NotificationLogger
*/
private $notificationLogger;

/**
* @param Action\Context $context
* @param ProductMetadataInterface $productMetadata
* @param NotificationLogger $notificationLogger
* @param Factory $configFactory
*/
public function __construct(
Action\Context $context,
ProductMetadataInterface $productMetadata,
NotificationLogger $notificationLogger,
Factory $configFactory
) {
parent::__construct($context);
$this->configFactory = $configFactory;
$this->productMetadata = $productMetadata;
$this->notificationLogger = $notificationLogger;
}

/**
* Change the value of config/admin/usage/enabled
*/
private function enableAdminUsage()
{
$configModel = $this->configFactory->create();
$configModel->setDataByPath('admin/usage/enabled', 1);
$configModel->save();
}

/**
* Log information about the last user response
*
* @return ResultInterface
*/
private function markUserNotified(): ResultInterface
{
$responseContent = [
'success' => $this->notificationLogger->log(
$this->productMetadata->getVersion()
),
'error_message' => ''
];

$resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
return $resultJson->setData($responseContent);
}

/**
* Log information about the last shown advertisement
*
* @return \Magento\Framework\Controller\ResultInterface
*/
public function execute()
{
$this->enableAdminUsage();
$this->markUserNotified();
}

/**
* @inheritDoc
*/
protected function _isAllowed()
{
return $this->_authorization->isAllowed(static::ADMIN_RESOURCE);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\AdminAnalytics\Model\Condition;

use Magento\AdminAnalytics\Model\ResourceModel\Viewer\Logger;
use Magento\Framework\View\Layout\Condition\VisibilityConditionInterface;
use Magento\Framework\App\CacheInterface;

/**
* Dynamic validator for UI admin analytics notification, control UI component visibility.
*/
class CanViewNotification implements VisibilityConditionInterface
{
/**
* Unique condition name.
*
* @var string
*/
private static $conditionName = 'can_view_admin_usage_notification';

/**
* Prefix for cache
*
* @var string
*/
private static $cachePrefix = 'admin-usage-notification-popup';

/**
* @var Logger
*/
private $viewerLogger;

/**
* @var CacheInterface
*/
private $cacheStorage;

/**
* @param Logger $viewerLogger
* @param CacheInterface $cacheStorage
*/
public function __construct(
Logger $viewerLogger,
CacheInterface $cacheStorage
) {
$this->viewerLogger = $viewerLogger;
$this->cacheStorage = $cacheStorage;
}

/**
* Validate if notification popup can be shown and set the notification flag
*
* @param array $arguments Attributes from element node.
* @inheritdoc
*/
public function isVisible(array $arguments): bool
{
$cacheKey = self::$cachePrefix;
$value = $this->cacheStorage->load($cacheKey);
if ($value !== 'log-exists') {
$logExists = $this->viewerLogger->checkLogExists();
if ($logExists) {
$this->cacheStorage->save('log-exists', $cacheKey);
}
return !$logExists;
}
return false;
}

/**
* Get condition name
*
* @return string
*/
public function getName(): string
{
return self::$conditionName;
}
}
Loading

0 comments on commit 0583fc3

Please sign in to comment.