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 / Settings / Plugin / UserSettings.php
matomo / app / core / Settings / Plugin Last commit date
SystemConfigSetting.php 1 month ago SystemSetting.php 1 month ago SystemSettings.php 1 month ago UserSetting.php 1 month ago UserSettings.php 1 month ago
UserSettings.php
82 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\Settings\Plugin;
10
11 use Piwik\Piwik;
12 use Piwik\Settings\Settings;
13 /**
14 * Base class of all plugin settings providers. Plugins that define their own configuration settings
15 * can extend this class to easily make their settings available to Piwik users.
16 *
17 * Descendants of this class should implement the {@link init()} method and call the
18 * {@link addSetting()} method for each of the plugin's settings.
19 *
20 * For an example, see {@link Piwik\Plugins\ExampleSettingsPlugin\UserSettings}.
21 *
22 * $userSettings = new Piwik\Plugins\ExampleSettingsPlugin\UserSettings(); // get instance via dependency injection
23 * $userSettings->yourSetting->getValue();
24 *
25 * @api
26 */
27 abstract class UserSettings extends Settings
28 {
29 public function __construct()
30 {
31 parent::__construct();
32 $this->init();
33 }
34 /**
35 * Creates a new user setting.
36 *
37 * Settings will be displayed in the UI depending on the order of `makeSetting` calls. This means you can define
38 * the order of the displayed settings by calling makeSetting first for more important settings.
39 *
40 * @param string $name The name of the setting that shall be created
41 * @param mixed $defaultValue The default value for this setting. Note the value will not be converted to the
42 * specified type.
43 * @param string $type The PHP internal type the value of this setting should have.
44 * Use one of FieldConfig::TYPE_* constants
45 * @param \Closure $configureCallback A callback method to configure the field that shall be displayed in the
46 * UI to define the value for this setting
47 * @return UserSetting Returns an instance of the created measurable setting.
48 */
49 protected function makeSetting($name, $defaultValue, $type, $configureCallback)
50 {
51 $userLogin = Piwik::getCurrentUserLogin();
52 $setting = new \Piwik\Settings\Plugin\UserSetting($name, $defaultValue, $type, $this->pluginName, $userLogin);
53 $setting->setConfigureCallback($configureCallback);
54 $this->addSetting($setting);
55 return $setting;
56 }
57 /**
58 * Saves (persists) the current setting values in the database.
59 *
60 * Will trigger an event to notify plugins that a value has been changed.
61 */
62 public function save()
63 {
64 parent::save();
65 /**
66 * Triggered after user settings have been updated.
67 *
68 * **Example**
69 *
70 * Piwik::addAction('UserSettings.updated', function (UserSettings $settings) {
71 * if ($settings->getPluginName() === 'PluginName') {
72 * $value = $settings->someSetting->getValue();
73 * // Do something with the new setting value
74 * }
75 * });
76 *
77 * @param Settings $settings The plugin settings object.
78 */
79 Piwik::postEvent('UserSettings.updated', array($this));
80 }
81 }
82