diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2016-03-10 00:55:45 +0300 |
---|---|---|
committer | Thomas Steur <thomas.steur@gmail.com> | 2016-04-11 05:11:33 +0300 |
commit | b52ae4e7e488e0474d67c54578e1d6c1aa066bff (patch) | |
tree | f94b02f774cbc24faaa18f29ee1e19fef8b338af /plugins/Diagnostics | |
parent | 6ba622a68a26792af8cc22131f488f7ff5189d2c (diff) |
refs #7983 let plugins add or remove fields to websites and better settings api
Diffstat (limited to 'plugins/Diagnostics')
-rw-r--r-- | plugins/Diagnostics/ConfigReader.php | 56 | ||||
-rw-r--r-- | plugins/Diagnostics/Controller.php | 6 | ||||
-rw-r--r-- | plugins/Diagnostics/Test/Integration/ConfigReaderTest.php | 30 |
3 files changed, 53 insertions, 39 deletions
diff --git a/plugins/Diagnostics/ConfigReader.php b/plugins/Diagnostics/ConfigReader.php index 7d0c90938d..d1f57be422 100644 --- a/plugins/Diagnostics/ConfigReader.php +++ b/plugins/Diagnostics/ConfigReader.php @@ -136,12 +136,12 @@ class ConfigReader * for already existing configured config values that overwrite a plugin system setting. * * @param array $configValues - * @param \Piwik\Plugin\Settings[] $pluginSettings + * @param \Piwik\Settings\Plugin\SystemSettings[] $systemSettings * @return array */ - public function addConfigValuesFromPluginSettings($configValues, $pluginSettings) + public function addConfigValuesFromSystemSettings($configValues, $systemSettings) { - foreach ($pluginSettings as $pluginSetting) { + foreach ($systemSettings as $pluginSetting) { $pluginName = $pluginSetting->getPluginName(); if (empty($pluginName)) { @@ -150,36 +150,34 @@ class ConfigReader $configs[$pluginName] = array(); - foreach ($pluginSetting->getSettings() as $setting) { - if ($setting instanceof PiwikSettings\SystemSetting && $setting->isReadableByCurrentUser()) { - $name = $setting->getName(); + foreach ($pluginSetting->getSettingsWritableByCurrentUser() as $setting) { + $name = $setting->getName(); + $config = $setting->configureField(); - $description = ''; - if (!empty($setting->description)) { - $description .= $setting->description . ' '; - } + $description = ''; + if (!empty($config->description)) { + $description .= $config->description . ' '; + } - if (!empty($setting->inlineHelp)) { - $description .= $setting->inlineHelp; - } + if (!empty($config->inlineHelp)) { + $description .= $config->inlineHelp; + } + + if (isset($configValues[$pluginName][$name])) { + $configValues[$pluginName][$name]['defaultValue'] = $setting->getDefaultValue(); + $configValues[$pluginName][$name]['description'] = trim($description); - if (isset($configValues[$pluginName][$name])) { - $configValues[$pluginName][$name]['defaultValue'] = $setting->defaultValue; - $configValues[$pluginName][$name]['description'] = trim($description); - - if ($setting->uiControlType === PluginSettings::CONTROL_PASSWORD) { - $value = $configValues[$pluginName][$name]['value']; - $configValues[$pluginName][$name]['value'] = $this->getMaskedPassword(); - } - } else { - $defaultValue = $setting->getValue(); - $configValues[$pluginName][$name] = array( - 'value' => null, - 'description' => trim($description), - 'isCustomValue' => false, - 'defaultValue' => $defaultValue - ); + if ($config->uiControl === PiwikSettings\FieldConfig::UI_CONTROL_PASSWORD) { + $configValues[$pluginName][$name]['value'] = $this->getMaskedPassword(); } + } else { + $defaultValue = $setting->getValue(); + $configValues[$pluginName][$name] = array( + 'value' => null, + 'description' => trim($description), + 'isCustomValue' => false, + 'defaultValue' => $defaultValue + ); } } diff --git a/plugins/Diagnostics/Controller.php b/plugins/Diagnostics/Controller.php index 7d2341a195..a350ff47a3 100644 --- a/plugins/Diagnostics/Controller.php +++ b/plugins/Diagnostics/Controller.php @@ -10,6 +10,7 @@ namespace Piwik\Plugins\Diagnostics; use Piwik\Config; use Piwik\Piwik; +use Piwik\Plugin\SettingsProvider; use Piwik\View; use Piwik\Settings; @@ -30,10 +31,11 @@ class Controller extends \Piwik\Plugin\ControllerAdmin { Piwik::checkUserHasSuperUserAccess(); - $allSettings = Settings\Manager::getAllPluginSettings(); + $settings = new SettingsProvider(\Piwik\Plugin\Manager::getInstance()); + $allSettings = $settings->getAllSystemSettings(); $configValues = $this->configReader->getConfigValuesFromFiles(); - $configValues = $this->configReader->addConfigValuesFromPluginSettings($configValues, $allSettings); + $configValues = $this->configReader->addConfigValuesFromSystemSettings($configValues, $allSettings); $configValues = $this->sortConfigValues($configValues); return $this->renderTemplate('configfile', array( diff --git a/plugins/Diagnostics/Test/Integration/ConfigReaderTest.php b/plugins/Diagnostics/Test/Integration/ConfigReaderTest.php index bb05cb61e7..6634c4a38a 100644 --- a/plugins/Diagnostics/Test/Integration/ConfigReaderTest.php +++ b/plugins/Diagnostics/Test/Integration/ConfigReaderTest.php @@ -10,9 +10,12 @@ namespace Piwik\Plugins\Diagnostics\Test\Integration\Commands; use Piwik\Application\Kernel\GlobalSettingsProvider; use Piwik\Ini\IniReader; +use Piwik\Piwik; use Piwik\Plugins\Diagnostics\ConfigReader; -use Piwik\Plugins\ExampleSettingsPlugin\Settings; +use Piwik\Plugins\ExampleSettingsPlugin\SystemSettings; +use Piwik\Settings\FieldConfig; use Piwik\Tests\Fixtures\OneVisitorTwoVisits; +use Piwik\Tests\Framework\Mock\FakeAccess; use Piwik\Tests\Framework\TestCase\IntegrationTestCase; /** @@ -29,8 +32,12 @@ class ConfigReaderTest extends IntegrationTestCase public function setUp() { + parent::setUp(); + $settings = new GlobalSettingsProvider($this->configPath('global.ini.php'), $this->configPath('config.ini.php'), $this->configPath('common.config.ini.php')); $this->configReader = new ConfigReader($settings, new IniReader()); + + FakeAccess::clearAccess($superUser = true); } public function test_getConfigValuesFromFiles() @@ -160,9 +167,9 @@ with multiple lines', public function test_addConfigValuesFromPluginSettings() { - $settings = new Settings(); + $settings = new SystemSettings(); - $configValues = $this->configReader->addConfigValuesFromPluginSettings(array(), array($settings)); + $configValues = $this->configReader->addConfigValuesFromSystemSettings(array(), array($settings)); $expected = array ( 'ExampleSettingsPlugin' => @@ -208,7 +215,7 @@ Another line', public function test_addConfigValuesFromPluginSettings_shouldAddDescriptionAndDefaultValueForExistingConfigValues() { - $settings = new Settings(); + $settings = new SystemSettings(); $existing = array( 'ExampleSettingsPlugin' => @@ -223,7 +230,7 @@ Another line', ) ); - $configValues = $this->configReader->addConfigValuesFromPluginSettings($existing, array($settings)); + $configValues = $this->configReader->addConfigValuesFromSystemSettings($existing, array($settings)); $this->assertSame('Choose the metric that should be displayed in the browser tab', $configValues['ExampleSettingsPlugin']['metric']['description']); $this->assertSame('nb_visits', $configValues['ExampleSettingsPlugin']['metric']['defaultValue']); @@ -231,8 +238,8 @@ Another line', public function test_addConfigValuesFromPluginSettings_shouldMaskValueIfTypeIsPassword() { - $settings = new Settings(); - $settings->metric->uiControlType = Settings::CONTROL_PASSWORD; + $settings = new SystemSettings(); + $settings->metric->configureField()->uiControl = FieldConfig::UI_CONTROL_PASSWORD; $existing = array( 'ExampleSettingsPlugin' => @@ -247,11 +254,18 @@ Another line', ) ); - $configValues = $this->configReader->addConfigValuesFromPluginSettings($existing, array($settings)); + $configValues = $this->configReader->addConfigValuesFromSystemSettings($existing, array($settings)); $this->assertSame('******', $configValues['ExampleSettingsPlugin']['metric']['value']); } + public function provideContainerConfig() + { + return array( + 'Piwik\Access' => new FakeAccess(), + ); + } + private function configPath($file) { return PIWIK_INCLUDE_PATH . '/tests/resources/Config/' . $file; |