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 / Settings / Plugin / SystemSetting.php
matomo / app / core / Settings / Plugin Last commit date
SystemConfigSetting.php 6 years ago SystemSetting.php 6 years ago SystemSettings.php 6 years ago UserSetting.php 6 years ago UserSettings.php 6 years ago
SystemSetting.php
99 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
10 namespace Piwik\Settings\Plugin;
11
12 use Piwik\Config;
13 use Piwik\Container\StaticContainer;
14 use Piwik\Piwik;
15 use Piwik\Settings\Setting;
16 use Piwik\Settings\Storage;
17
18 /**
19 * Describes a system wide setting. Only the Super User can change this type of setting by default and
20 * the value of this setting will affect all users.
21 *
22 * See {@link \Piwik\Settings\Setting}.
23 *
24 * @api
25 */
26 class SystemSetting extends Setting
27 {
28 /**
29 * Constructor.
30 *
31 * @param string $name The setting's persisted name.
32 * @param mixed $defaultValue Default value for this setting if no value was specified.
33 * @param string $type Eg an array, int, ... see TYPE_* constants
34 * @param string $pluginName The name of the plugin the system setting belongs to.
35 */
36 public function __construct($name, $defaultValue, $type, $pluginName)
37 {
38 parent::__construct($name, $defaultValue, $type, $pluginName);
39
40 $factory = StaticContainer::get('Piwik\Settings\Storage\Factory');
41 $this->storage = $factory->getPluginStorage($this->pluginName, $userLogin = '');
42 }
43
44 /**
45 * Returns `true` if this setting is writable for the current user, `false` if otherwise. In case it returns
46 * writable for the current user it will be visible in the Plugin settings UI.
47 *
48 * @return bool
49 */
50 public function isWritableByCurrentUser()
51 {
52 if ($this->hasConfigValue()) {
53 return false;
54 }
55
56 if (isset($this->hasWritePermission)) {
57 return $this->hasWritePermission;
58 }
59
60 // performance improvement, do not detect this in __construct otherwise likely rather "big" query to DB.
61 $this->hasWritePermission = Piwik::hasUserSuperUserAccess();
62
63 return $this->hasWritePermission;
64 }
65
66 /**
67 * @inheritdoc
68 */
69 public function getValue()
70 {
71 $defaultValue = parent::getValue(); // we access value first to make sure permissions are checked
72
73 $configValue = $this->getValueFromConfig();
74
75 if (isset($configValue)) {
76 $defaultValue = $configValue;
77 settype($defaultValue, $this->type);
78 }
79
80 return $defaultValue;
81 }
82
83 private function hasConfigValue()
84 {
85 $value = $this->getValueFromConfig();
86 return isset($value);
87 }
88
89 private function getValueFromConfig()
90 {
91 $config = Config::getInstance()->{$this->pluginName};
92
93 if (!empty($config) && array_key_exists($this->name, $config)) {
94 return $config[$this->name];
95 }
96 }
97
98 }
99