diff options
Diffstat (limited to 'core/Settings/Plugin/SystemConfigSetting.php')
-rw-r--r-- | core/Settings/Plugin/SystemConfigSetting.php | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/core/Settings/Plugin/SystemConfigSetting.php b/core/Settings/Plugin/SystemConfigSetting.php new file mode 100644 index 0000000000..3ac52d66d0 --- /dev/null +++ b/core/Settings/Plugin/SystemConfigSetting.php @@ -0,0 +1,62 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ + +namespace Piwik\Settings\Plugin; + +use Piwik\Config; +use Piwik\Container\StaticContainer; +use Piwik\Piwik; +use Piwik\Settings\Setting; +use Piwik\Settings\Storage; + +/** + * Describes a system wide setting. Only the Super User can change this type of setting by d efault and + * the value of this setting will affect all users. + * + * See {@link \Piwik\Settings\Setting}. + * + * @api + */ +class SystemConfigSetting extends Setting +{ + /** + * Constructor. + * + * @param string $name The setting's persisted name. + * @param mixed $defaultValue Default value for this setting if no value was specified. + * @param string $type Eg an array, int, ... see TYPE_* constants + * @param string $pluginName The name of the plugin the system setting belongs to. + */ + public function __construct($name, $defaultValue, $type, $pluginName, $configSectionName) + { + parent::__construct($name, $defaultValue, $type, $pluginName); + + $factory = StaticContainer::get('Piwik\Settings\Storage\Factory'); + $this->storage = $factory->getConfigStorage($configSectionName); + } + + /** + * Returns `true` if this setting is writable for the current user, `false` if otherwise. In case it returns + * writable for the current user it will be visible in the Plugin settings UI. + * + * @return bool + */ + public function isWritableByCurrentUser() + { + if (isset($this->hasWritePermission)) { + return $this->hasWritePermission; + } + + // performance improvement, do not detect this in __construct otherwise likely rather "big" query to DB. + $this->hasWritePermission = Piwik::hasUserSuperUserAccess(); + + return $this->hasWritePermission; + } + +} |