PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
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 6 months ago ContainerDoesNotExistException.php 2 years ago ContainerFactory.php 1 month ago IniConfigDefinitionSource.php 3 months ago StaticContainer.php 1 month ago
IniConfigDefinitionSource.php
90 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 string $prefix Prefix for the container entries.
34 */
35 public function __construct(GlobalSettingsProvider $config, $prefix = 'ini.')
36 {
37 $this->config = $config;
38 $this->prefix = $prefix;
39 }
40 /**
41 * {@inheritdoc}
42 */
43 public function getDefinition($name)
44 {
45 if (strpos($name, $this->prefix) !== 0) {
46 return null;
47 }
48 list($sectionName, $configKey) = $this->parseEntryName($name);
49 $section = $this->getSection($sectionName);
50 if ($configKey === null) {
51 $value = new ValueDefinition($section);
52 $value->setName($name);
53 return $value;
54 }
55 if (!array_key_exists($configKey, $section)) {
56 return null;
57 }
58 $value = new ValueDefinition($section[$configKey]);
59 $value->setName($name);
60 return $value;
61 }
62 public function getDefinitions() : array
63 {
64 $result = [];
65 foreach ($this->config as $section) {
66 $value = new ValueDefinition($this->getSection($section));
67 $value->setName($section);
68 $result[$section] = $value;
69 }
70 return $result;
71 }
72 private function parseEntryName($name)
73 {
74 $parts = explode('.', $name, 3);
75 array_shift($parts);
76 if (!isset($parts[1])) {
77 $parts[1] = null;
78 }
79 return $parts;
80 }
81 private function getSection($sectionName)
82 {
83 $section = $this->config->getSection($sectionName);
84 if (!is_array($section)) {
85 throw new InvalidDefinition(sprintf('IniFileChain did not return an array for the config section %s', $section));
86 }
87 return $section;
88 }
89 }
90