123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Config\Console\Command\ConfigShow;
- use Magento\Config\Model\Config\Backend\Encrypted;
- use Magento\Config\Model\Config\Structure;
- use Magento\Config\Model\Config\Structure\Element\Field;
- use Magento\Config\Model\Config\StructureFactory;
- use Magento\Framework\App\Area;
- use Magento\Framework\App\Config\Value;
- use Magento\Framework\App\Config\ValueFactory;
- use Magento\Framework\Config\ScopeInterface;
- use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;
- /**
- * Class processes values using backend model which declared in system.xml.
- *
- * @api
- * @since 101.0.0
- */
- class ValueProcessor
- {
- /**
- * Placeholder for the output of sensitive data.
- */
- const SAFE_PLACEHOLDER = '******';
- /**
- * System configuration structure factory.
- *
- * @var StructureFactory
- */
- private $configStructureFactory;
- /**
- * Factory of object that implement \Magento\Framework\App\Config\ValueInterface.
- *
- * @var ValueFactory
- */
- private $configValueFactory;
- /**
- * Object for managing configuration scope.
- *
- * @var ScopeInterface
- */
- private $scope;
- /**
- * The json serializer.
- *
- * @var JsonSerializer
- */
- private $jsonSerializer;
- /**
- * @param ScopeInterface $scope The object for managing configuration scope
- * @param StructureFactory $structureFactory The system configuration structure factory.
- * @param ValueFactory $valueFactory The factory of object that
- * implement \Magento\Framework\App\Config\ValueInterface
- * @param JsonSerializer $jsonSerializer The json serializer
- */
- public function __construct(
- ScopeInterface $scope,
- StructureFactory $structureFactory,
- ValueFactory $valueFactory,
- JsonSerializer $jsonSerializer
- ) {
- $this->scope = $scope;
- $this->configStructureFactory = $structureFactory;
- $this->configValueFactory = $valueFactory;
- $this->jsonSerializer = $jsonSerializer;
- }
- /**
- * Processes value to display using backend model.
- *
- * @param string $scope The scope of configuration. E.g. 'default', 'website' or 'store'
- * @param string $scopeCode The scope code of configuration
- * @param string $value The value to process
- * @param string $path The configuration path for getting backend model. E.g. scope_id/group_id/field_id
- * @return string processed value result
- * @since 101.0.0
- */
- public function process($scope, $scopeCode, $value, $path)
- {
- $areaScope = $this->scope->getCurrentScope();
- $this->scope->setCurrentScope(Area::AREA_ADMINHTML);
- /** @var Structure $configStructure */
- $configStructure = $this->configStructureFactory->create();
- $this->scope->setCurrentScope($areaScope);
- /** @var Field $field */
- $field = $configStructure->getElementByConfigPath($path);
- /** @var Value $backendModel */
- $backendModel = $field instanceof Field && $field->hasBackendModel()
- ? $field->getBackendModel()
- : $this->configValueFactory->create();
- if ($backendModel instanceof Encrypted) {
- return $value ? self::SAFE_PLACEHOLDER : null;
- }
- $backendModel->setPath($path);
- $backendModel->setScope($scope);
- $backendModel->setScopeId($scopeCode);
- $backendModel->setValue($value);
- $backendModel->afterLoad();
- $processedValue = $backendModel->getValue();
- /**
- * If $processedValue is array it means that $value is json array (string).
- * It should be converted to string for displaying.
- */
- return is_array($processedValue) ? $this->jsonSerializer->serialize($processedValue) : $processedValue;
- }
- }
|