PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 4.0.2
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v4.0.2
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
ContainerDoesNotExistException.php 5 years ago ContainerFactory.php 5 years ago IniConfigDefinitionSource.php 5 years ago StaticContainer.php 5 years ago
IniConfigDefinitionSource.php
112 lines
1 <?php
2 /**
3 * Matomo - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 */
8
9 namespace Piwik\Container;
10
11 use DI\Definition\Exception\InvalidDefinition;
12 use DI\Definition\Source\DefinitionSource;
13 use DI\Definition\ValueDefinition;
14 use Piwik\Application\Kernel\GlobalSettingsProvider;
15
16 /**
17 * Expose the INI config into PHP-DI.
18 *
19 * The INI config can be used by prefixing `ini.` before the setting we want to get:
20 *
21 * $maintenanceMode = $container->get('ini.General.maintenance_mode');
22 */
23 class IniConfigDefinitionSource implements DefinitionSource
24 {
25 /**
26 * @var GlobalSettingsProvider
27 */
28 private $config;
29
30 /**
31 * @var string
32 */
33 private $prefix;
34
35 /**
36 * @param GlobalSettingsProvider $config
37 * @param string $prefix Prefix for the container entries.
38 */
39 public function __construct(GlobalSettingsProvider $config, $prefix = 'ini.')
40 {
41 $this->config = $config;
42 $this->prefix = $prefix;
43 }
44
45 /**
46 * {@inheritdoc}
47 */
48 public function getDefinition($name)
49 {
50 if (strpos($name, $this->prefix) !== 0) {
51 return null;
52 }
53
54 list($sectionName, $configKey) = $this->parseEntryName($name);
55
56 $section = $this->getSection($sectionName);
57
58 if ($configKey === null) {
59 $value = new ValueDefinition($section);
60 $value->setName($name);
61 return $value;
62 }
63
64 if (! array_key_exists($configKey, $section)) {
65 return null;
66 }
67
68 $value = new ValueDefinition($section[$configKey]);
69 $value->setName($name);
70 return $value;
71 }
72
73 public function getDefinitions(): array
74 {
75 $result = [];
76 foreach ($this->config as $section) {
77 $value = new ValueDefinition($this->getSection($section));
78 $value->setName($section);
79
80 $result[$section] = $value;
81 }
82 return $result;
83 }
84
85 private function parseEntryName($name)
86 {
87 $parts = explode('.', $name, 3);
88
89 array_shift($parts);
90
91 if (! isset($parts[1])) {
92 $parts[1] = null;
93 }
94
95 return $parts;
96 }
97
98 private function getSection($sectionName)
99 {
100 $section = $this->config->getSection($sectionName);
101
102 if (!is_array($section)) {
103 throw new InvalidDefinition(sprintf(
104 'IniFileChain did not return an array for the config section %s',
105 $section
106 ));
107 }
108
109 return $section;
110 }
111 }
112