aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorArthurHoaro <arthur@hoa.ro>2016-08-02 11:02:20 +0200
committerArthurHoaro <arthur@hoa.ro>2016-08-02 11:12:01 +0200
commit15170b516429341ae8e1a9ad2111be5ef90bf6aa (patch)
treea6fcbefb1c26c5e6059d0158530f8a6e4599f399
parent559315ba0a89e306bc46d0a540f1536193860580 (diff)
downloadShaarli-15170b516429341ae8e1a9ad2111be5ef90bf6aa.tar.gz
Shaarli-15170b516429341ae8e1a9ad2111be5ef90bf6aa.tar.zst
Shaarli-15170b516429341ae8e1a9ad2111be5ef90bf6aa.zip
Parse plugin parameters description with the PluginManager
Plugin parameter can contain a description in their meta file under the key: parameter.<param_name>="<description>"
-rw-r--r--application/PluginManager.php6
-rw-r--r--application/config/ConfigPlugin.php10
-rw-r--r--tests/PluginManagerTest.php10
-rw-r--r--tests/config/ConfigPluginTest.php12
-rw-r--r--tests/plugins/test/test.meta4
5 files changed, 29 insertions, 13 deletions
diff --git a/application/PluginManager.php b/application/PluginManager.php
index dca7e63e..07bc1da9 100644
--- a/application/PluginManager.php
+++ b/application/PluginManager.php
@@ -185,7 +185,11 @@ class PluginManager
185 continue; 185 continue;
186 } 186 }
187 187
188 $metaData[$plugin]['parameters'][$param] = ''; 188 $metaData[$plugin]['parameters'][$param]['value'] = '';
189 // Optional parameter description in parameter.PARAM_NAME=
190 if (isset($metaData[$plugin]['parameter.'. $param])) {
191 $metaData[$plugin]['parameters'][$param]['desc'] = $metaData[$plugin]['parameter.'. $param];
192 }
189 } 193 }
190 } 194 }
191 195
diff --git a/application/config/ConfigPlugin.php b/application/config/ConfigPlugin.php
index 047d2b03..cb0b6fce 100644
--- a/application/config/ConfigPlugin.php
+++ b/application/config/ConfigPlugin.php
@@ -80,9 +80,13 @@ function validate_plugin_order($formData)
80} 80}
81 81
82/** 82/**
83 * Affect plugin parameters values into plugins array. 83 * Affect plugin parameters values from the ConfigManager into plugins array.
84 * 84 *
85 * @param mixed $plugins Plugins array ($plugins[<plugin_name>]['parameters']['param_name'] = <value>. 85 * @param mixed $plugins Plugins array:
86 * $plugins[<plugin_name>]['parameters'][<param_name>] = [
87 * 'value' => <value>,
88 * 'desc' => <description>
89 * ]
86 * @param mixed $conf Plugins configuration. 90 * @param mixed $conf Plugins configuration.
87 * 91 *
88 * @return mixed Updated $plugins array. 92 * @return mixed Updated $plugins array.
@@ -97,7 +101,7 @@ function load_plugin_parameter_values($plugins, $conf)
97 101
98 foreach ($plugin['parameters'] as $key => $param) { 102 foreach ($plugin['parameters'] as $key => $param) {
99 if (!empty($conf[$key])) { 103 if (!empty($conf[$key])) {
100 $out[$name]['parameters'][$key] = $conf[$key]; 104 $out[$name]['parameters'][$key]['value'] = $conf[$key];
101 } 105 }
102 } 106 }
103 } 107 }
diff --git a/tests/PluginManagerTest.php b/tests/PluginManagerTest.php
index 61efce68..f4826e2e 100644
--- a/tests/PluginManagerTest.php
+++ b/tests/PluginManagerTest.php
@@ -79,8 +79,14 @@ class PluginManagerTest extends PHPUnit_Framework_TestCase
79 $this->pluginManager->load(array(self::$pluginName)); 79 $this->pluginManager->load(array(self::$pluginName));
80 80
81 $expectedParameters = array( 81 $expectedParameters = array(
82 'pop' => '', 82 'pop' => array(
83 'hip' => '', 83 'value' => '',
84 'desc' => 'pop description',
85 ),
86 'hip' => array(
87 'value' => '',
88 'desc' => '',
89 ),
84 ); 90 );
85 $meta = $this->pluginManager->getPluginsMeta(); 91 $meta = $this->pluginManager->getPluginsMeta();
86 $this->assertEquals('test plugin', $meta[self::$pluginName]['description']); 92 $this->assertEquals('test plugin', $meta[self::$pluginName]['description']);
diff --git a/tests/config/ConfigPluginTest.php b/tests/config/ConfigPluginTest.php
index 716631b0..3b37cd79 100644
--- a/tests/config/ConfigPluginTest.php
+++ b/tests/config/ConfigPluginTest.php
@@ -101,9 +101,9 @@ class ConfigPluginTest extends PHPUnit_Framework_TestCase
101 $plugins = array( 101 $plugins = array(
102 'plugin_name' => array( 102 'plugin_name' => array(
103 'parameters' => array( 103 'parameters' => array(
104 'param1' => true, 104 'param1' => array('value' => true),
105 'param2' => false, 105 'param2' => array('value' => false),
106 'param3' => '', 106 'param3' => array('value' => ''),
107 ) 107 )
108 ) 108 )
109 ); 109 );
@@ -114,8 +114,8 @@ class ConfigPluginTest extends PHPUnit_Framework_TestCase
114 ); 114 );
115 115
116 $result = load_plugin_parameter_values($plugins, $parameters); 116 $result = load_plugin_parameter_values($plugins, $parameters);
117 $this->assertEquals('value1', $result['plugin_name']['parameters']['param1']); 117 $this->assertEquals('value1', $result['plugin_name']['parameters']['param1']['value']);
118 $this->assertEquals('value2', $result['plugin_name']['parameters']['param2']); 118 $this->assertEquals('value2', $result['plugin_name']['parameters']['param2']['value']);
119 $this->assertEquals('', $result['plugin_name']['parameters']['param3']); 119 $this->assertEquals('', $result['plugin_name']['parameters']['param3']['value']);
120 } 120 }
121} 121}
diff --git a/tests/plugins/test/test.meta b/tests/plugins/test/test.meta
index ab999ed4..26f243f0 100644
--- a/tests/plugins/test/test.meta
+++ b/tests/plugins/test/test.meta
@@ -1,2 +1,4 @@
1description="test plugin" 1description="test plugin"
2parameters="pop;hip" \ No newline at end of file 2parameters="pop;hip"
3parameter.pop="pop description"
4parameter.hip= \ No newline at end of file