-
Notifications
You must be signed in to change notification settings - Fork 0
/
settings-manager.php
80 lines (64 loc) · 2.5 KB
/
settings-manager.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
function detect_config($redirect_to_setup = true){
$config_exists = is_readable(dirname(__FILE__) . '/config.php');
if(!$config_exists && $redirect_to_setup){
$url = (request_outside_admin_folder() ? '' : '../') . 'setup.php';
if(!headers_sent()){
@header("Location: $url");
}else{
echo '<META HTTP-EQUIV="Refresh" CONTENT="0;url=' . $url . '">' .
'<script>window.location = "' . $url . '";</script>';
}
exit;
}
return $config_exists;
}
function migrate_config(){
$curr_dir = dirname(__FILE__);
if(!is_readable($curr_dir . '/admin/incConfig.php') || !detect_config(false)){
return false; // nothing to migrate
}
@include($curr_dir . '/admin/incConfig.php');
@include($curr_dir . '/config.php');
$config_array = array(
'dbServer' => $dbServer,
'dbUsername' => $dbUsername,
'dbPassword' => $dbPassword,
'dbDatabase' => $dbDatabase,
'adminConfig' => $adminConfig
);
if(save_config($config_array)){
@rename($curr_dir . '/admin/incConfig.php', $curr_dir . '/admin/incConfig.bak.php');
@unlink($curr_dir . '/admin/incConfig.php');
return true;
}
return false;
}
function save_config($config_array = array()){
$curr_dir = dirname(__FILE__);
if(!count($config_array) || !count($config_array['adminConfig'])) return array('error' => 'Invalid config array');
$new_admin_config = '';
foreach($config_array['adminConfig'] as $admin_var => $admin_val){
$new_admin_config .= "\t\t'" . addslashes($admin_var) . "' => \"" . str_replace(array("\n", "\r", '"'), array('\n', '\r', '\"'), $admin_val) . "\",\n";
}
$new_admin_config = substr($new_admin_config, 0, -2) . "\n";
$new_config = "<?php\n" .
"\t\$dbServer = '" . addslashes($config_array['dbServer']) . "';\n" .
"\t\$dbUsername = '" . addslashes($config_array['dbUsername']) . "';\n" .
"\t\$dbPassword = '" . addslashes($config_array['dbPassword']) . "';\n" .
"\t\$dbDatabase = '" . addslashes($config_array['dbDatabase']) . "';\n" .
"\n\t\$adminConfig = array(\n" .
$new_admin_config .
"\t);";
if(detect_config(false)){
// attempt to back up config
@copy($curr_dir . '/config.php', $curr_dir . '/config.bak.php');
}
if(!$fp = @fopen($curr_dir . '/config.php', 'w')) return array('error' => 'Unable to write to config file', 'config' => $new_config);
fwrite($fp, $new_config);
fclose($fp);
return true;
}
function request_outside_admin_folder(){
return (realpath(dirname(__FILE__)) == realpath(dirname($_SERVER['SCRIPT_FILENAME'])) ? true : false);
}