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 / Storage / Storage.php
matomo / app / core / Settings / Storage Last commit date
Backend 1 month ago Factory.php 3 months ago LegacyUserSettingsMigration.php 1 month ago Storage.php 1 year ago UserScopedSettingsAccessManager.php 1 month ago
Storage.php
101 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\Storage;
10
11 use Piwik\Settings\Storage\Backend;
12 /**
13 * A storage stores values for multiple settings. Storing multiple settings here saves having to do
14 * a "get" for each individual setting. A storage is usually stared between all individual setting instances
15 * within a plugin.
16 */
17 class Storage
18 {
19 /**
20 * Array containing all plugin settings values: Array( [setting-key] => [setting-value] ).
21 *
22 * @var array
23 */
24 protected $settingsValues = array();
25 // for lazy loading of setting values
26 private $settingValuesLoaded = \false;
27 /**
28 * @var Backend\BackendInterface
29 */
30 private $backend;
31 /**
32 * Defines whether a value has changed since the settings were loaded or not.
33 * @var bool
34 */
35 private $isDirty = \false;
36 public function __construct(Backend\BackendInterface $backend)
37 {
38 $this->backend = $backend;
39 }
40 /**
41 * Get the currently used backend for this storage.
42 * @return Backend\BackendInterface
43 */
44 public function getBackend()
45 {
46 return $this->backend;
47 }
48 /**
49 * Saves (persists) the current setting values in the database if a value has actually changed.
50 */
51 public function save()
52 {
53 if ($this->isDirty) {
54 $this->backend->save($this->settingsValues);
55 $this->isDirty = \false;
56 Backend\Cache::clearCache();
57 }
58 }
59 /**
60 * Returns the current value for a setting. If no value is stored, the default value
61 * is be returned.
62 *
63 * @param string $key The name / key of a setting
64 * @param mixed $defaultValue Default value that will be used in case no value for this setting exists yet
65 * @param string $type The PHP internal type the value of the setting should have, see FieldConfig::TYPE_*
66 * constants. Only an actual value of the setting will be converted to the given type, the
67 * default value will not be converted.
68 * @return mixed
69 */
70 public function getValue($key, $defaultValue, $type)
71 {
72 $this->loadSettingsIfNotDoneYet();
73 if (array_key_exists($key, $this->settingsValues)) {
74 settype($this->settingsValues[$key], $type);
75 return $this->settingsValues[$key];
76 }
77 return $defaultValue;
78 }
79 /**
80 * Sets (overwrites) the value of a setting in memory. To persist the change across requests, {@link save()} must be
81 * called.
82 *
83 * @param string $key The name / key of a setting
84 * @param mixed $value The value that shall be set for the given setting.
85 */
86 public function setValue($key, $value)
87 {
88 $this->loadSettingsIfNotDoneYet();
89 $this->isDirty = \true;
90 $this->settingsValues[$key] = $value;
91 }
92 private function loadSettingsIfNotDoneYet()
93 {
94 if ($this->settingValuesLoaded) {
95 return;
96 }
97 $this->settingValuesLoaded = \true;
98 $this->settingsValues = $this->backend->load();
99 }
100 }
101