mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
132 lines
3.8 KiB
PHP
132 lines
3.8 KiB
PHP
<?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
|
|
* phpcs:disable Magento2.Classes.AbstractApi
|
|
* @api
|
|
* @since 100.0.2
|
|
*
|
|
* @SuppressWarnings(PHPMD.AllPurposeAction)
|
|
*/
|
|
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;
|
|
}
|
|
}
|