-
Notifications
You must be signed in to change notification settings - Fork 0
/
settings-manager.php
128 lines (105 loc) · 3.96 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?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);
}
function config($var, $force_reload = false){
static $config;
$default_config = array(
'dbServer' => '',
'dbUsername' => '',
'dbPassword' => '',
'dbDatabase' => '',
'adminConfig' => array(
'adminUsername' => '',
'adminPassword' => '',
'notifyAdminNewMembers' => false,
'defaultSignUp' => 1,
'anonymousGroup' => 'anonymous',
'anonymousMember' => 'guest',
'groupsPerPage' => 10,
'membersPerPage' => 10,
'recordsPerPage' => 10,
'custom1' => 'Full Name',
'custom2' => 'Address',
'custom3' => 'City',
'custom4' => 'State',
'MySQLDateFormat' => '%m/%d/%Y',
'PHPDateFormat' => 'n/j/Y',
'PHPDateTimeFormat' => 'm/d/Y, h:i a',
'senderName' => 'Membership management',
'senderEmail' => '',
'approvalSubject' => 'Your membership is now approved',
'approvalMessage' => "Dear member,\n\nYour membership is now approved by the admin. You can log in to your account here:\nhttp://{$_SERVER['HTTP_HOST']}" . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "\n\nRegards,\nAdmin",
'hide_twitter_feed' => false
)
);
if(!isset($config) || $force_reload){
@include(dirname(__FILE__) . '/config.php');
$config['dbServer'] = $dbServer;
$config['dbDatabase'] = $dbDatabase;
$config['dbPassword'] = $dbPassword;
$config['dbUsername'] = $dbUsername;
$config['adminConfig'] = $adminConfig;
}
return (isset($config[$var]) && $config[$var] ? $config[$var] : $default_config[$var]);
}