Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Steur <thomas.steur@gmail.com>2013-10-24 03:18:37 +0400
committerThomas Steur <thomas.steur@gmail.com>2013-10-24 03:18:37 +0400
commit48e9a1b3f0c0f8bd825deb4ce8da87a5d7897025 (patch)
tree0e8b71664cd22e1d6e2a436fb4bd4b79913bef80 /core/Settings
parent1297f8109d8a86bc96ac285a7556c8b7bc4917ad (diff)
refs #4126 allow only to change the settings for activated plugins
Diffstat (limited to 'core/Settings')
-rw-r--r--core/Settings/Manager.php24
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
*/