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