diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2013-10-24 03:18:37 +0400 |
---|---|---|
committer | Thomas Steur <thomas.steur@gmail.com> | 2013-10-24 03:18:37 +0400 |
commit | 48e9a1b3f0c0f8bd825deb4ce8da87a5d7897025 (patch) | |
tree | 0e8b71664cd22e1d6e2a436fb4bd4b79913bef80 /core/Settings | |
parent | 1297f8109d8a86bc96ac285a7556c8b7bc4917ad (diff) |
refs #4126 allow only to change the settings for activated plugins
Diffstat (limited to 'core/Settings')
-rw-r--r-- | core/Settings/Manager.php | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/core/Settings/Manager.php b/core/Settings/Manager.php index ca362b2a1c..4645656e4f 100644 --- a/core/Settings/Manager.php +++ b/core/Settings/Manager.php @@ -11,6 +11,8 @@ namespace Piwik\Settings; +use Piwik\Plugin\Manager as PluginManager; + /** * Settings manager. * @@ -22,9 +24,9 @@ class Manager private static $settings = array(); /** - * Returns all available plugin settings. A plugin has to specify a file named `settings.php` containing a class - * named `Settings` that extends `Piwik\Plugin\Settings` in order to be considered as a plugin setting. Otherwise - * the settings for a plugin won't be available. + * Returns all available plugin settings, even settings for inactive plugins. A plugin has to specify a file named + * `settings.php` containing a class named `Settings` that extends `Piwik\Plugin\Settings` in order to be + * considered as a plugin setting. Otherwise the settings for a plugin won't be available. * * @return \Piwik\Plugin\Settings[] An array containing array([pluginName] => [setting instance]). */ @@ -34,7 +36,7 @@ class Manager $settings = array(); - $pluginNames = \Piwik\Plugin\Manager::getInstance()->getLoadedPluginsName(); + $pluginNames = PluginManager::getInstance()->getLoadedPluginsName(); foreach ($pluginNames as $pluginName) { $settings[$pluginName] = self::getPluginSettingsClass($pluginName); } @@ -45,6 +47,11 @@ class Manager return static::$settings; } + private static function isActivatedPlugin($pluginName) + { + return PluginManager::getInstance()->isPluginActivated($pluginName); + } + /** * Removes all settings made for a specific plugin. Useful while uninstalling a plugin. * @@ -60,7 +67,8 @@ class Manager } /** - * Gets all plugins settings that have at least one settings a user is allowed to change. + * Gets all plugins settings that have at least one settings a user is allowed to change. Only the settings for + * activated plugins are returned. * * @return \Piwik\Plugin\Settings[] An array containing array([pluginName] => [setting instance]). */ @@ -70,6 +78,10 @@ class Manager $settingsForUser = array(); foreach ($settings as $pluginName => $setting) { + if (!static::isActivatedPlugin($pluginName)) { + continue; + } + $forUser = $setting->getSettingsForCurrentUser(); if (!empty($forUser)) { $settingsForUser[$pluginName] = $setting; @@ -80,7 +92,7 @@ class Manager } /** - * Detects whether there are plugin settings available that the current user can change. + * Detects whether there are settings for activated plugins available that the current user can change. * * @return bool */ |