PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 1.3.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v1.3.1
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 6 years ago ContainerFactory.php 6 years ago IniConfigDefinitionSource.php 6 years ago StaticContainer.php 6 years ago
IniConfigDefinitionSource.php
96 lines
1 <?php
2 /**
3 * Piwik - 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\DefinitionException;
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 return new ValueDefinition($name, $section);
60 }
61
62 if (! array_key_exists($configKey, $section)) {
63 return null;
64 }
65
66 return new ValueDefinition($name, $section[$configKey]);
67 }
68
69 private function parseEntryName($name)
70 {
71 $parts = explode('.', $name, 3);
72
73 array_shift($parts);
74
75 if (! isset($parts[1])) {
76 $parts[1] = null;
77 }
78
79 return $parts;
80 }
81
82 private function getSection($sectionName)
83 {
84 $section = $this->config->getSection($sectionName);
85
86 if (!is_array($section)) {
87 throw new DefinitionException(sprintf(
88 'IniFileChain did not return an array for the config section %s',
89 $section
90 ));
91 }
92
93 return $section;
94 }
95 }
96