Download core/Container/IniConfigDefinitionSource.php from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 2.58 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/core/Container/IniConfigDefinitionSource.php
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/core/Container/IniConfigDefinitionSource.php
-
curl -L -o IniConfigDefinitionSource.php https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/core/Container/IniConfigDefinitionSource.php
2.58 kB
| /** | |
| * Matomo - free/libre analytics platform | |
| * | |
| * @link https://matomo.org | |
| * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| */ | |
| namespace Piwik\Container; | |
| use DI\Definition\Exception\InvalidDefinition; | |
| use DI\Definition\Source\DefinitionSource; | |
| use DI\Definition\ValueDefinition; | |
| use Piwik\Application\Kernel\GlobalSettingsProvider; | |
| /** | |
| * Expose the INI config into PHP-DI. | |
| * | |
| * The INI config can be used by prefixing `ini.` before the setting we want to get: | |
| * | |
| * $maintenanceMode = $container->get('ini.General.maintenance_mode'); | |
| */ | |
| class IniConfigDefinitionSource implements DefinitionSource | |
| { | |
| /** | |
| * @var GlobalSettingsProvider | |
| */ | |
| private $config; | |
| /** | |
| * @var string | |
| */ | |
| private $prefix; | |
| /** | |
| * @param string $prefix Prefix for the container entries. | |
| */ | |
| public function __construct(GlobalSettingsProvider $config, $prefix = 'ini.') | |
| { | |
| $this->config = $config; | |
| $this->prefix = $prefix; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getDefinition($name) | |
| { | |
| if (strpos($name, $this->prefix) !== 0) { | |
| return null; | |
| } | |
| list($sectionName, $configKey) = $this->parseEntryName($name); | |
| $section = $this->getSection($sectionName); | |
| if ($configKey === null) { | |
| $value = new ValueDefinition($section); | |
| $value->setName($name); | |
| return $value; | |
| } | |
| if (! array_key_exists($configKey, $section)) { | |
| return null; | |
| } | |
| $value = new ValueDefinition($section[$configKey]); | |
| $value->setName($name); | |
| return $value; | |
| } | |
| public function getDefinitions(): array | |
| { | |
| $result = []; | |
| foreach ($this->config as $section) { | |
| $value = new ValueDefinition($this->getSection($section)); | |
| $value->setName($section); | |
| $result[$section] = $value; | |
| } | |
| return $result; | |
| } | |
| private function parseEntryName($name) | |
| { | |
| $parts = explode('.', $name, 3); | |
| array_shift($parts); | |
| if (! isset($parts[1])) { | |
| $parts[1] = null; | |
| } | |
| return $parts; | |
| } | |
| private function getSection($sectionName) | |
| { | |
| $section = $this->config->getSection($sectionName); | |
| if (!is_array($section)) { | |
| throw new InvalidDefinition(sprintf( | |
| 'IniFileChain did not return an array for the config section %s', | |
| $section | |
| )); | |
| } | |
| return $section; | |
| } | |
| } | |