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 / Measurable / MeasurableSetting.php
matomo / app / core / Settings / Measurable Last commit date
MeasurableProperty.php 6 years ago MeasurableSetting.php 6 years ago MeasurableSettings.php 6 years ago
MeasurableSetting.php
73 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\Measurable;
11
12 use Piwik\Container\StaticContainer;
13 use Piwik\Piwik;
14 use Piwik\Settings\Storage;
15
16 /**
17 * Describes a Measurable setting for a measurable type such as a website, a mobile app, ...
18 *
19 * See {@link \Piwik\Settings\Setting}.
20 */
21 class MeasurableSetting extends \Piwik\Settings\Setting
22 {
23 /**
24 * @var int
25 */
26 private $idSite = 0;
27
28 /**
29 * Constructor.
30 *
31 * @param string $name The persisted name of the setting.
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 setting belongs to
35 * @param int $idSite The idSite this setting belongs to.
36 */
37 public function __construct($name, $defaultValue, $type, $pluginName, $idSite)
38 {
39 parent::__construct($name, $defaultValue, $type, $pluginName);
40
41 $this->idSite = $idSite;
42
43 $storageFactory = StaticContainer::get('Piwik\Settings\Storage\Factory');
44 $this->storage = $storageFactory->getMeasurableSettingsStorage($idSite, $this->pluginName);
45 }
46
47 /**
48 * Returns `true` if this setting can be displayed for the current user, `false` if otherwise.
49 *
50 * @return bool
51 */
52 public function isWritableByCurrentUser()
53 {
54 if (isset($this->hasWritePermission)) {
55 return $this->hasWritePermission;
56 }
57
58 // performance improvement, do not detect this in __construct otherwise likely rather "big" query to DB.
59 if ($this->hasSiteBeenCreated()) {
60 $this->hasWritePermission = Piwik::isUserHasAdminAccess($this->idSite);
61 } else {
62 $this->hasWritePermission = Piwik::hasUserSuperUserAccess();
63 }
64
65 return $this->hasWritePermission;
66 }
67
68 private function hasSiteBeenCreated()
69 {
70 return !empty($this->idSite);
71 }
72 }
73