From 741c52751f7b22a3167d9475b2adb1a79f5eeea6 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Wed, 16 Jan 2013 13:41:42 +0100 Subject: parse arrays from config file --- lib/plugins/config/_test/configuration.test.php | 2 +- lib/plugins/config/settings/config.class.php | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'lib/plugins/config') diff --git a/lib/plugins/config/_test/configuration.test.php b/lib/plugins/config/_test/configuration.test.php index ee03f3849..b808ad505 100644 --- a/lib/plugins/config/_test/configuration.test.php +++ b/lib/plugins/config/_test/configuration.test.php @@ -30,4 +30,4 @@ class plugin_config_configuration_test extends DokuWikiTest { $this->assertEquals(array('foo', 'bar', 'baz'), $conf['arr1']); } -} \ No newline at end of file +} diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php index 5a2aa2980..7f15df6fb 100644 --- a/lib/plugins/config/settings/config.class.php +++ b/lib/plugins/config/settings/config.class.php @@ -157,14 +157,31 @@ if (!class_exists('configuration')) { preg_match_all($pattern,$contents,$matches,PREG_SET_ORDER); for ($i=0; $i'\\','\\\''=>'\'','\\"'=>'"')); + + // handle arrays + if(preg_match('/array ?\((.*)\)/', $value, $match)){ + $arr = explode(',', $match[1]); + + // remove quotes from quoted strings & unescape escaped data + $len = count($arr); + for($j=0; $j<$len; $j++){ + $arr[$j] = preg_replace('/^(\'|")(.*)(?'\\','\\\''=>'\'','\\"'=>'"')); + } + + $value = $arr; + }else{ + // remove quotes from quoted strings & unescape escaped data + $value = preg_replace('/^(\'|")(.*)(?'\\','\\\''=>'\'','\\"'=>'"')); + } $config[$key] = $value; } -- cgit v1.2.3