From b8f41ef0bac4e82cb3b02cd318efaddbaaeb1a78 Mon Sep 17 00:00:00 2001 From: Andreas Gohr <andi@splitbrain.org> Date: Sat, 10 Nov 2012 18:13:09 +0100 Subject: [PATCH] config manager: let PHP parse the config file Until now, the config manager did read and parse the various PHP config files itself. This fails for more complex setups like arrays. I'm not really sure why this was done. This patch replaces the parsing with a simple include() call. Everything still seems to work. --- lib/plugins/config/settings/config.class.php | 25 +++----------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php index ebf638526..722c8df7b 100644 --- a/lib/plugins/config/settings/config.class.php +++ b/lib/plugins/config/settings/config.class.php @@ -139,32 +139,13 @@ if (!class_exists('configuration')) { function _read_config($file) { if (!$file) return array(); + if (!file_exists($file)) return array(); $config = array(); if ($this->_format == 'php') { - - if(@file_exists($file)){ - $contents = @php_strip_whitespace($file); - }else{ - $contents = ''; - } - $pattern = '/\$'.$this->_name.'\[[\'"]([^=]+)[\'"]\] ?= ?(.*?);(?=[^;]*(?:\$'.$this->_name.'|$))/s'; - $matches=array(); - preg_match_all($pattern,$contents,$matches,PREG_SET_ORDER); - - for ($i=0; $i<count($matches); $i++) { - - // correct issues with the incoming data - // FIXME ... for now merge multi-dimensional array indices using ____ - $key = preg_replace('/.\]\[./',CM_KEYMARKER,$matches[$i][1]); - - // remove quotes from quoted strings & unescape escaped data - $value = preg_replace('/^(\'|")(.*)(?<!\\\\)\1$/s','$2',$matches[$i][2]); - $value = strtr($value, array('\\\\'=>'\\','\\\''=>'\'','\\"'=>'"')); - - $config[$key] = $value; - } + include($file); + $config = ${$this->_name}; } return $config; -- GitLab