![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-variable/Model/Source/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Variable\Model\Source; use Magento\Config\Model\Config\Structure\SearchInterface; use Magento\Variable\Model\Config\Structure\AvailableVariables; /** * Store Contact Information source model. */ class Variables implements \Magento\Framework\Option\ArrayInterface { /** * Variable types */ const DEFAULT_VARIABLE_TYPE = "default"; const CUSTOM_VARIABLE_TYPE = "custom"; /** * Assoc array of configuration variables. * * @var array */ private $configVariables = []; /** * @var AvailableVariables */ private $configPaths = []; /** * @var SearchInterface */ private $configStructure; /** * Constructor. * * @param SearchInterface $configStructure * @param array $configPaths */ public function __construct( SearchInterface $configStructure, AvailableVariables $configPaths ) { $this->configStructure = $configStructure; $this->configPaths = $configPaths; } /** * Retrieve option array of store contact variables. * * @param bool $withGroup * @return array */ public function toOptionArray($withGroup = false) { $optionArray = []; if ($withGroup) { foreach ($this->getConfigVariables() as $configVariableGroup) { $group = [ 'label' => $configVariableGroup['label'] ]; $groupElements = []; foreach ($configVariableGroup['elements'] as $element) { $groupElements[] = [ 'value' => '{{config path="' . $element['value'] . '"}}', 'label' => $element['label'], ]; } $group['value'] = $groupElements; $optionArray[] = $group; } } else { foreach ($this->getConfigVariables() as $configVariableGroup) { foreach ($configVariableGroup['elements'] as $element) { $optionArray[] = [ 'value' => '{{config path="' . $element['value'] . '"}}', 'label' => $element['label'], ]; } } } return $optionArray; } /** * Return available config variables. * * @return array * @codeCoverageIgnore */ public function getData() { return $this->getFlatConfigVars(); } /** * Return flat list of available config variables. * * @return array */ public function getAvailableVars() { return array_keys($this->configPaths->getFlatConfigPaths()); } /** * Get flattened config variables. * * @return array */ private function getFlatConfigVars() { $result = []; foreach ($this->getConfigVariables() as $configVariableGroup) { foreach ($configVariableGroup['elements'] as $element) { $element['group_label'] = $configVariableGroup['label']; $result[] = $element; } } return $result; } /** * Merge config with user defined data * * @return array */ private function getConfigVariables() { if (empty($this->configVariables)) { foreach ($this->configPaths->getConfigPaths() as $groupPath => $groupElements) { $groupPathElements = explode('/', $groupPath); $path = []; $labels = []; foreach ($groupPathElements as $groupPathElement) { $path[] = $groupPathElement; $labels[] = __( $this->configStructure->getElementByConfigPath(implode('/', $path))->getLabel() ); } $this->configVariables[$groupPath]['label'] = implode(' / ', $labels); foreach (array_keys($groupElements) as $elementPath) { $this->configVariables[$groupPath]['elements'][] = [ 'value' => $elementPath, 'label' => __($this->configStructure->getElementByConfigPath($elementPath)->getLabel()), ]; } } } return $this->configVariables; } }