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>2016-03-10 00:55:45 +0300
committerThomas Steur <thomas.steur@gmail.com>2016-04-11 05:11:33 +0300
commitb52ae4e7e488e0474d67c54578e1d6c1aa066bff (patch)
treef94b02f774cbc24faaa18f29ee1e19fef8b338af /plugins/Diagnostics
parent6ba622a68a26792af8cc22131f488f7ff5189d2c (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.php56
-rw-r--r--plugins/Diagnostics/Controller.php6
-rw-r--r--plugins/Diagnostics/Test/Integration/ConfigReaderTest.php30
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;