123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Config\Controller\Adminhtml\System;
- use Magento\Framework\Exception\LocalizedException;
- /**
- * System Configuration Abstract Controller
- * @api
- * @since 100.0.2
- */
- abstract class AbstractConfig extends \Magento\Backend\App\AbstractAction
- {
- /**
- * Authorization level of a basic admin session
- *
- * @see _isAllowed()
- */
- const ADMIN_RESOURCE = 'Magento_Config::config';
- /**
- * @var \Magento\Config\Model\Config\Structure
- */
- protected $_configStructure;
- /**
- * @deprecated 101.0.0
- */
- protected $_sectionChecker;
- /**
- * @param \Magento\Backend\App\Action\Context $context
- * @param \Magento\Config\Model\Config\Structure $configStructure
- * @param mixed $sectionChecker - deprecated
- */
- public function __construct(
- \Magento\Backend\App\Action\Context $context,
- \Magento\Config\Model\Config\Structure $configStructure,
- $sectionChecker
- ) {
- parent::__construct($context);
- $this->_configStructure = $configStructure;
- $this->_sectionChecker = $sectionChecker;
- }
- /**
- * Check if current section is found and is allowed
- *
- * @param \Magento\Framework\App\RequestInterface $request
- * @return \Magento\Framework\App\ResponseInterface
- */
- public function dispatch(\Magento\Framework\App\RequestInterface $request)
- {
- if (!$request->getParam('section')) {
- try {
- $request->setParam('section', $this->_configStructure->getFirstSection()->getId());
- } catch (LocalizedException $e) {
- /** If visible section not found need to show only config index page without sections if it allow. */
- $this->messageManager->addWarningMessage($e->getMessage());
- }
- }
- return parent::dispatch($request);
- }
- /**
- * Check is allow modify system configuration
- *
- * @return bool
- */
- protected function _isAllowed()
- {
- $sectionId = $this->_request->getParam('section');
- return parent::_isAllowed()
- || $this->_configStructure->getElement($sectionId)->isAllowed();
- }
- /**
- * Save state of configuration field sets
- *
- * @param array $configState
- * @return bool
- */
- protected function _saveState($configState = [])
- {
- if (is_array($configState)) {
- $configState = $this->sanitizeConfigState($configState);
- $adminUser = $this->_auth->getUser();
- $extra = $adminUser->getExtra();
- if (!is_array($extra)) {
- $extra = [];
- }
- if (!isset($extra['configState'])) {
- $extra['configState'] = [];
- }
- foreach ($configState as $fieldset => $state) {
- $extra['configState'][$fieldset] = $state;
- }
- $adminUser->saveExtra($extra);
- }
- return true;
- }
- /**
- * Sanitize config state data
- *
- * @param array $configState
- * @return array
- * @SuppressWarnings(PHPMD.UnusedLocalVariable)
- * @since 100.1.0
- */
- protected function sanitizeConfigState($configState)
- {
- $sectionList = $this->_configStructure->getSectionList();
- $sanitizedConfigState = $configState;
- foreach ($configState as $sectionId => $value) {
- if (array_key_exists($sectionId, $sectionList)) {
- $sanitizedConfigState[$sectionId] = (bool)$sanitizedConfigState[$sectionId] ? '1' : '0';
- } else {
- unset($sanitizedConfigState[$sectionId]);
- }
- }
- return $sanitizedConfigState;
- }
- }
|