mirror of
https://github.com/vichan-devel/vichan.git
synced 2024-11-24 07:30:10 +01:00
beta web config editor
This commit is contained in:
parent
bb1546ad66
commit
77cb944b08
106
mod.php
106
mod.php
@ -1801,8 +1801,110 @@
|
|||||||
'body'=>$body,
|
'body'=>$body,
|
||||||
'mod'=>true
|
'mod'=>true
|
||||||
));
|
));
|
||||||
|
} elseif(preg_match('/^\/config\/edit$/', $query)) {
|
||||||
|
if(!hasPermission($config['mod']['edit_config']))
|
||||||
|
error($config['error']['noaccess']);
|
||||||
|
|
||||||
|
// TODO: display "unset variables"
|
||||||
|
// $config_file = file_get_contents('inc/config.php');
|
||||||
|
// preg_match_all('/\$config\[\'(\w+)\']/', $config_file, $matches);
|
||||||
|
// $config_variables = array_unique($matches[1]);
|
||||||
|
|
||||||
|
$body = '<fieldset><legend>' . _('Configuration') . '</legend><form action="" method="post"><table style="width:100%">';
|
||||||
|
|
||||||
|
$var_force_string = Array('blotter');
|
||||||
|
$var_system = Array('version');
|
||||||
|
|
||||||
|
if(isset($_POST['save_changes'])) {
|
||||||
|
$config_append = '';
|
||||||
|
|
||||||
|
foreach($config as $name => $original_value) {
|
||||||
|
if(in_array($name, $var_system))
|
||||||
|
continue;
|
||||||
|
$type = gettype($original_value);
|
||||||
|
if($type == 'array' || $type == 'NULL')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if($type == 'boolean' && in_array($name, $var_force_string))
|
||||||
|
$type = 'string';
|
||||||
|
|
||||||
|
if(!isset($_POST[$name]) && $type != 'boolean')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if($type == 'boolean')
|
||||||
|
$value = isset($_POST[$name]);
|
||||||
|
else
|
||||||
|
$value = $_POST[$name];
|
||||||
|
|
||||||
|
if($value != $original_value) {
|
||||||
|
// value has been changed
|
||||||
|
$config_append .= "\$config['" . addslashes($name) . "'] = ";
|
||||||
|
if($type == 'boolean')
|
||||||
|
$config_append .= $value ? 'true' : 'false';
|
||||||
|
elseif($type == 'integer')
|
||||||
|
$config_append .= (int)$value;
|
||||||
|
elseif($type == 'string')
|
||||||
|
$config_append .= '\'' . addslashes($value) . '\'';
|
||||||
|
$config_append .= ";\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($config_append)) {
|
||||||
|
$config_append = "\n// Changes made by web editor by \"" . $mod['username'] . "\" @ " . date('r') . ":\n" . $config_append . "\n";
|
||||||
|
if(@file_put_contents('inc/instance-config.php', $config_append, FILE_APPEND)) {
|
||||||
|
header('Location: ?/config' . $b['uri'], true, $config['redirect_http']);
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
$page = Array();
|
||||||
|
$page['title'] = 'Cannot write to file!';
|
||||||
|
$page['config'] = $config;
|
||||||
|
$page['body'] = '
|
||||||
|
<p>Tinyboard could not write to <strong>inc/instance-config.php</strong> with the ammended configuration, probably due to a permissions error.</p>
|
||||||
|
<p>You may proceed with these changes manually by copying and pasting the following code to the bottom of <strong>inc/instance-config.php</strong>:</p>
|
||||||
|
<textarea style="width:700px;height:370px;margin:auto;display:block;background:white;color:black" readonly>' . htmlentities($config_append) . '</textarea>
|
||||||
|
';
|
||||||
|
echo Element('page.html', $page);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($config as $name => $value) {
|
||||||
|
$body .= '<tr>';
|
||||||
|
|
||||||
|
$body .= '<th style="text-align:left" class="minimal">' . utf8tohtml($name) . '</th>';
|
||||||
|
$type = gettype($value);
|
||||||
|
if($type == 'array') {
|
||||||
|
$body .= '<td><a href="?/config/edit/' . utf8tohtml($name) . '">[edit]' . '</a></td>';
|
||||||
|
} else {
|
||||||
|
if($type == 'string' || $type == 'integer') {
|
||||||
|
$body .= '<td><input style="width:100%" type="text" name="' .utf8tohtml($name) . '" value="'. str_replace('"', '"', utf8tohtml($value)) . '"' .
|
||||||
|
(in_array($name, $var_system) ? ' readonly="readonly"' : '') . '></td>';
|
||||||
|
} elseif($type == 'boolean') {
|
||||||
|
if(in_array($name, $var_force_string))
|
||||||
|
$body .= '<td><input style="width:100%" type="text" name="' . utf8tohtml($name) . '" value=""></td>';
|
||||||
|
else
|
||||||
|
$body .= '<td><input type="checkbox" name="' . utf8tohtml($name) . '" ' . ($value ? 'checked' : '') . '></td>';
|
||||||
|
} else {
|
||||||
|
$body .= '<td>' . utf8tohtml($value) . '</td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$body .= '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$body .= '</table><div style="text-align:center"><input name="save_changes" type="submit" value="Save canges"></div></form></fieldset>';
|
||||||
|
|
||||||
|
echo Element('page.html', Array(
|
||||||
|
'config'=>$config,
|
||||||
|
'title'=>_('Configuration'),
|
||||||
|
'body'=>$body,
|
||||||
|
'mod'=>true
|
||||||
|
)
|
||||||
|
);
|
||||||
} elseif(preg_match('/^\/config$/', $query)) {
|
} elseif(preg_match('/^\/config$/', $query)) {
|
||||||
if(!hasPermission($config['mod']['show_config'])) error($config['error']['noaccess']);
|
if(!hasPermission($config['mod']['show_config']))
|
||||||
|
error($config['error']['noaccess']);
|
||||||
|
|
||||||
// Show instance-config.php
|
// Show instance-config.php
|
||||||
|
|
||||||
@ -1830,7 +1932,7 @@
|
|||||||
|
|
||||||
$data .=
|
$data .=
|
||||||
'<tr><th style="text-align:left;">' .
|
'<tr><th style="text-align:left;">' .
|
||||||
$prefix . (gettype($name) == 'integer' ? '[]' : $name) .
|
$prefix . (gettype($name) == 'integer' ? '[]' : utf8tohtml($name)) .
|
||||||
'</th><td>' .
|
'</th><td>' .
|
||||||
$value .
|
$value .
|
||||||
'</td></tr>';
|
'</td></tr>';
|
||||||
|
Loading…
Reference in New Issue
Block a user