PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.2.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.2.0
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Container / IniConfigDefinitionSource.php
matomo / app / core / Container Last commit date
Container.php 1 year ago ContainerDoesNotExistException.php 2 years ago ContainerFactory.php 1 year ago IniConfigDefinitionSource.php 2 years ago StaticContainer.php 2 years ago
IniConfigDefinitionSource.php
91 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 namespace Piwik\Container;
10
11 use Matomo\Dependencies\DI\Definition\Exception\InvalidDefinition;
12 use Matomo\Dependencies\DI\Definition\Source\DefinitionSource;
13 use Matomo\Dependencies\DI\Definition\ValueDefinition;
14 use Piwik\Application\Kernel\GlobalSettingsProvider;
15 /**
16 * Expose the INI config into PHP-DI.
17 *
18 * The INI config can be used by prefixing `ini.` before the setting we want to get:
19 *
20 * $maintenanceMode = $container->get('ini.General.maintenance_mode');
21 */
22 class IniConfigDefinitionSource implements DefinitionSource
23 {
24 /**
25 * @var GlobalSettingsProvider
26 */
27 private $config;
28 /**
29 * @var string
30 */
31 private $prefix;
32 /**
33 * @param GlobalSettingsProvider $config
34 * @param string $prefix Prefix for the container entries.
35 */
36 public function __construct(GlobalSettingsProvider $config, $prefix = 'ini.')
37 {
38 $this->config = $config;
39 $this->prefix = $prefix;
40 }
41 /**
42 * {@inheritdoc}
43 */
44 public function getDefinition($name)
45 {
46 if (strpos($name, $this->prefix) !== 0) {
47 return null;
48 }
49 list($sectionName, $configKey) = $this->parseEntryName($name);
50 $section = $this->getSection($sectionName);
51 if ($configKey === null) {
52 $value = new ValueDefinition($section);
53 $value->setName($name);
54 return $value;
55 }
56 if (!array_key_exists($configKey, $section)) {
57 return null;
58 }
59 $value = new ValueDefinition($section[$configKey]);
60 $value->setName($name);
61 return $value;
62 }
63 public function getDefinitions() : array
64 {
65 $result = [];
66 foreach ($this->config as $section) {
67 $value = new ValueDefinition($this->getSection($section));
68 $value->setName($section);
69 $result[$section] = $value;
70 }
71 return $result;
72 }
73 private function parseEntryName($name)
74 {
75 $parts = explode('.', $name, 3);
76 array_shift($parts);
77 if (!isset($parts[1])) {
78 $parts[1] = null;
79 }
80 return $parts;
81 }
82 private function getSection($sectionName)
83 {
84 $section = $this->config->getSection($sectionName);
85 if (!is_array($section)) {
86 throw new InvalidDefinition(sprintf('IniFileChain did not return an array for the config section %s', $section));
87 }
88 return $section;
89 }
90 }
91