From 2c3b5d1dc2be51ac578aa91c6494ad497344db4e Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Wed, 16 Feb 2011 19:27:52 +1100 Subject: [PATCH] Fixed "Show configuration" page for an arrayed config --- mod.php | 71 ++++++++++++++++++++++++++++------------------------------------- 1 file changed, 30 insertions(+), 41 deletions(-) diff --git a/mod.php b/mod.php index ff7db7fb..e465adec 100644 --- a/mod.php +++ b/mod.php @@ -186,52 +186,41 @@ } elseif(preg_match('/^\/config$/', $query)) { if($mod['type'] < $config['mod']['show_config']) error($config['error']['noaccess']); - // Show instance-config.php - - //$data = highlight_file('inc/instance-config.php', true); - //if(MOD_NEVER_REAL_PASSWORD) { - // // Rough and dirty removal of password - // $data = str_replace(MY_PASSWORD, '*******', $data); - //} - - $constants = get_defined_constants(true); - $constants = $constants['user']; + // Show instance-config.php $data = ''; - foreach($constants as $name => $value) { - if(MOD_NEVER_REAL_PASSWORD && $name == 'DB_PASSWORD') - $value = 'hidden'; - else { - // For some reason PHP is only giving me the first defined value (the default), so use constant() - $value = constant($name); - if(gettype($value) == 'boolean') { - $value = $value ? 'On' : 'Off'; - } elseif(gettype($value) == 'string') { - if(empty($value)) - $value = 'empty'; - else - $value = '' . utf8tohtml(substr($value, 0, 110) . (strlen($value) > 110 ? '…' : '')) . ''; - } elseif(gettype($value) == 'integer') { - // Show permissions in a cleaner way - if(preg_match('/^MOD_/', $name) && $name != 'MOD_JANITOR' && $name != 'MOD_MOD' && $name != 'MOD_ADMIN') { - if($value == MOD_JANITOR) - $value = 'Janitor'; - elseif($value == MOD_MOD) - $value = 'Mod'; - elseif($value == MOD_ADMIN) - $value = 'Admin'; + + function do_array_part($array, $prefix = '') { + global $data, $config; + + foreach($array as $name => $value) { + if(is_array($value)) { + do_array_part($value, $prefix . $name . ' → '); + } else { + if($config['mod']['never_reveal_password'] && $prefix == 'db → ' && $name == 'password') { + $value = 'hidden'; + } elseif(gettype($value) == 'boolean') { + $value = $value ? 'On' : 'Off'; + } elseif(gettype($value) == 'string') { + if(empty($value)) + $value = 'empty'; + else + $value = '' . utf8tohtml(substr($value, 0, 110) . (strlen($value) > 110 ? '…' : '')) . ''; + } elseif(gettype($value) == 'integer') { + $value = '' . $value . ''; + } + + $data .= + '' . + $prefix . (gettype($name) == 'integer' ? '[]' : $name) . + '' . + $value . + ''; } - $value = '' . $value . ''; } } - - $data .= - '' . - $name . - '' . - $value . - ''; - } + + do_array_part($config); $body = '
Configuration' . $data . '
';