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 / SystemSettings.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
SystemSettings.php
111 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\Settings\Plugin;
10
11 use Piwik\Db;
12 use Piwik\Piwik;
13 use Piwik\Settings\Settings;
14 use Piwik\Settings\Storage;
15
16 /**
17 * Base class of all system settings providers. Plugins that define their own configuration settings
18 * can extend this class to easily make their system settings available to Piwik users.
19 *
20 * Descendants of this class should implement the {@link init()} method and call the
21 * {@link makeSetting()} method to create a system setting for this plugin.
22 *
23 * For an example, see {@link Piwik\Plugins\ExampleSettingsPlugin\SystemSettings}.
24 *
25 * $systemSettings = new Piwik\Plugins\ExampleSettingsPlugin\SystemSettings(); // get instance via dependency injection
26 * $systemSettings->yourSetting->getValue();
27 *
28 * @api
29 */
30 abstract class SystemSettings extends Settings
31 {
32 /**
33 * Constructor.
34 */
35 public function __construct()
36 {
37 parent::__construct();
38
39 $this->init();
40 }
41
42 /**
43 * Creates a new system setting.
44 *
45 * Settings will be displayed in the UI depending on the order of `makeSetting` calls. This means you can define
46 * the order of the displayed settings by calling makeSetting first for more important settings.
47 *
48 * @param string $name The name of the setting that shall be created
49 * @param mixed $defaultValue The default value for this setting. Note the value will not be converted to the
50 * specified type.
51 * @param string $type The PHP internal type the value of this setting should have.
52 * Use one of FieldConfig::TYPE_* constancts
53 * @param \Closure $fieldConfigCallback A callback method to configure the field that shall be displayed in the
54 * UI to define the value for this setting
55 * @return SystemSetting Returns an instance of the created measurable setting.
56 */
57 protected function makeSetting($name, $defaultValue, $type, $fieldConfigCallback)
58 {
59 $setting = new SystemSetting($name, $defaultValue, $type, $this->pluginName);
60 $setting->setConfigureCallback($fieldConfigCallback);
61 $this->addSetting($setting);
62 return $setting;
63 }
64
65 /**
66 * This is only meant for some core features used by some core plugins that are shipped with Piwik
67 * @internal
68 * @ignore
69 * @param string $configSectionName
70 * @param $name
71 * @param $defaultValue
72 * @param $type
73 * @param $fieldConfigCallback
74 * @return SystemSetting
75 * @throws \Exception
76 */
77 protected function makeSettingManagedInConfigOnly($configSectionName, $name, $defaultValue, $type, $fieldConfigCallback)
78 {
79 $setting = new SystemConfigSetting($name, $defaultValue, $type, $this->pluginName, $configSectionName);
80 $setting->setConfigureCallback($fieldConfigCallback);
81 $this->addSetting($setting);
82 return $setting;
83 }
84
85 /**
86 * Saves (persists) the current setting values in the database.
87 *
88 * Will trigger an event to notify plugins that a value has been changed.
89 */
90 public function save()
91 {
92 parent::save();
93
94 /**
95 * Triggered after system settings have been updated.
96 *
97 * **Example**
98 *
99 * Piwik::addAction('SystemSettings.updated', function (SystemSettings $settings) {
100 * if ($settings->getPluginName() === 'PluginName') {
101 * $value = $settings->someSetting->getValue();
102 * // Do something with the new setting value
103 * }
104 * });
105 *
106 * @param Settings $settings The plugin settings object.
107 */
108 Piwik::postEvent('SystemSettings.updated', array($this));
109 }
110 }
111