123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Cms\Ui\Component;
- use Magento\Framework\Api\Filter;
- use Magento\Framework\Api\FilterBuilder;
- use Magento\Framework\Api\Search\SearchCriteriaBuilder;
- use Magento\Framework\App\ObjectManager;
- use Magento\Framework\App\RequestInterface;
- use Magento\Framework\AuthorizationInterface;
- use Magento\Framework\View\Element\UiComponent\DataProvider\Reporting;
- /**
- * DataProvider for cms ui.
- */
- class DataProvider extends \Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
- {
- /**
- * @var AuthorizationInterface
- */
- private $authorization;
- /**
- * @var AddFilterInterface[]
- */
- private $additionalFilterPool;
- /**
- * @param string $name
- * @param string $primaryFieldName
- * @param string $requestFieldName
- * @param Reporting $reporting
- * @param SearchCriteriaBuilder $searchCriteriaBuilder
- * @param RequestInterface $request
- * @param FilterBuilder $filterBuilder
- * @param array $meta
- * @param array $data
- * @param array $additionalFilterPool
- * @SuppressWarnings(PHPMD.ExcessiveParameterList)
- */
- public function __construct(
- $name,
- $primaryFieldName,
- $requestFieldName,
- Reporting $reporting,
- SearchCriteriaBuilder $searchCriteriaBuilder,
- RequestInterface $request,
- FilterBuilder $filterBuilder,
- array $meta = [],
- array $data = [],
- array $additionalFilterPool = []
- ) {
- parent::__construct(
- $name,
- $primaryFieldName,
- $requestFieldName,
- $reporting,
- $searchCriteriaBuilder,
- $request,
- $filterBuilder,
- $meta,
- $data
- );
- $this->meta = array_replace_recursive($meta, $this->prepareMetadata());
- $this->additionalFilterPool = $additionalFilterPool;
- }
- /**
- * Get authorization info.
- *
- * @deprecated 101.0.7
- * @return AuthorizationInterface|mixed
- */
- private function getAuthorizationInstance()
- {
- if ($this->authorization === null) {
- $this->authorization = ObjectManager::getInstance()->get(AuthorizationInterface::class);
- }
- return $this->authorization;
- }
- /**
- * Prepares Meta
- *
- * @return array
- */
- public function prepareMetadata()
- {
- $metadata = [];
- if (!$this->getAuthorizationInstance()->isAllowed('Magento_Cms::save')) {
- $metadata = [
- 'cms_page_columns' => [
- 'arguments' => [
- 'data' => [
- 'config' => [
- 'editorConfig' => [
- 'enabled' => false
- ],
- 'componentType' => \Magento\Ui\Component\Container::NAME
- ]
- ]
- ]
- ]
- ];
- }
- return $metadata;
- }
- /**
- * @inheritdoc
- */
- public function addFilter(Filter $filter)
- {
- if (!empty($this->additionalFilterPool[$filter->getField()])) {
- $this->additionalFilterPool[$filter->getField()]->addFilter($this->searchCriteriaBuilder, $filter);
- } else {
- parent::addFilter($filter);
- }
- }
- }
|