123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Backend\Block\Widget\Grid;
- use Magento\Backend\Block\Template\Context;
- use Magento\Framework\App\ObjectManager;
- use Magento\Framework\AuthorizationInterface;
- use Magento\Framework\DataObject;
- use Magento\Framework\Json\EncoderInterface;
- /**
- * Grid widget massaction default block
- *
- * @api
- * @deprecated 100.2.0 in favour of UI component implementation
- * @since 100.0.2
- */
- class Massaction extends \Magento\Backend\Block\Widget\Grid\Massaction\AbstractMassaction
- {
- /**
- * @var AuthorizationInterface
- */
- private $authorization;
- /**
- * Map bind item id to a particular acl type
- * itemId => acl
- *
- * @var array
- */
- private $restrictions = [
- 'enable' => 'Magento_Backend::toggling_cache_type',
- 'disable' => 'Magento_Backend::toggling_cache_type',
- 'refresh' => 'Magento_Backend::refresh_cache_type',
- ];
- /**
- * Massaction constructor.
- *
- * @param Context $context
- * @param EncoderInterface $jsonEncoder
- * @param array $data
- * @param AuthorizationInterface $authorization
- */
- public function __construct(
- Context $context,
- EncoderInterface $jsonEncoder,
- array $data = [],
- AuthorizationInterface $authorization = null
- ) {
- $this->authorization = $authorization ?: ObjectManager::getInstance()->get(AuthorizationInterface::class);
- parent::__construct($context, $jsonEncoder, $data);
- }
- /**
- * {@inheritdoc}
- *
- * @param string $itemId
- * @param array|DataObject $item
- *
- * @return $this
- * @since 100.2.3
- */
- public function addItem($itemId, $item)
- {
- if (!$this->isRestricted($itemId)) {
- parent::addItem($itemId, $item);
- }
- return $this;
- }
- /**
- * Check if access to action restricted
- *
- * @param string $itemId
- *
- * @return bool
- */
- private function isRestricted(string $itemId): bool
- {
- if (!key_exists($itemId, $this->restrictions)) {
- return false;
- }
- return !$this->authorization->isAllowed($this->restrictions[$itemId]);
- }
- }
|