Administrator Plugin
[squirrelmail.git] / plugins / administrator / options.php
1 <?php
2
3 /**
4 * Administrator Plugin
5 *
6 * Copyright (c) 1999-2002 The SquirrelMail Project Team
7 * Licensed under the GNU GPL. For full terms see the file COPYING.
8 *
9 * Philippe Mingo
10 *
11 * $Id$
12 */
13
14 chdir('..');
15 require_once('../src/validate.php');
16 require_once('../functions/page_header.php');
17 require_once('../functions/imap.php');
18 require_once('../src/load_prefs.php');
19 require_once('../plugins/administrator/defines.php');
20
21 displayPageHeader($color, 'None');
22
23 $cfgfile = '../config/config.php';
24 $cfg_defaultfile = '../config/config_default.php';
25 $cfg = file( $cfg_defaultfile );
26 $newcfg = $defcfg = array( );
27 $cm = FALSE;
28 foreach ( $cfg as $l ) {
29 $l = preg_replace( '/\/\*.*\*\//', '', $l );
30 $l = preg_replace( '/#.*$/', '', $l );
31 $l = preg_replace( '/\/\/.*$/', '', $l );
32 $v = $s = trim( $l );
33 if ( $cm ) {
34 if( substr( $v, -2 ) == '*/' ) {
35 $v = '';
36 $cm = FALSE;
37 } else if( $i = strpos( $v, '*/' ) ) {
38 $v = substr( $v, $i );
39 $cm = FALSE;
40 } else {
41 $v = '';
42 }
43 } else {
44 if( $v{0}.$v{1} == '/*' ) {
45 $v = '';
46 $cm = TRUE;
47 } else if ( $i = strpos( $v, '/*' ) ) {
48 $v = substr( $v, 0, $i );
49 $cm = TRUE;
50 }
51 }
52
53 if ( $i = strpos( $v, '=' ) ) {
54 $key = trim( substr( $v, 0, $i - 1 ) );
55 $val = str_replace( ';', '', trim( substr( $v, $i + 1 ) ) );
56 $newcfg[$key] = $val;
57 $defcfg[$key] = $val;
58 }
59
60 }
61
62 $cfg = file( $cfgfile );
63 asort( $cfg );
64
65 $cm = FALSE;
66 foreach ( $cfg as $l ) {
67 $l = preg_replace( '/\/\*.*\*\//', '', $l );
68 $l = preg_replace( '/#.*$/', '', $l );
69 $l = preg_replace( '/\/\/.*$/', '', $l );
70 $v = $s = trim( $l );
71 if ( $cm ) {
72 if( substr( $v, -2 ) == '*/' ) {
73 $v = '';
74 $cm = FALSE;
75 } else if( $i = strpos( $v, '*/' ) ) {
76 $v = substr( $v, $i );
77 $cm = FALSE;
78 } else {
79 $v = '';
80 }
81 } else {
82 if( $v{0}.$v{1} == '/*' ) {
83 $v = '';
84 $cm = TRUE;
85 } else if ( $i = strpos( $v, '/*' ) ) {
86 $v = substr( $v, 0, $i );
87 $cm = TRUE;
88 }
89 }
90
91 if ( $i = strpos( $v, '=' ) ) {
92 $key = trim( substr( $v, 0, $i - 1 ) );
93 $val = str_replace( ';', '', trim( substr( $v, $i + 1 ) ) );
94 $newcfg[$key] = $val;
95 }
96
97 }
98
99 echo "<form action=$PHP_SELF method=post>" .
100 '<table width=100%>' ,
101 "<tr bgcolor=\"$color[5]\"><th colspan=2>" . _("Configuration Administrator") . "</th></tr>";
102 foreach ( $newcfg as $k => $v ) {
103 $l = strtolower( $v );
104 $type = SMOPT_TYPE_UNDEFINED;
105 $n = substr( $k, 1 );
106 $n = str_replace( '[', '_', $n );
107 $n = str_replace( ']', '_', $n );
108 $e = 'adm_' . $n;
109 $name = $k;
110 $size = 50;
111 if ( isset( $namcfg[$k] ) ) {
112 $name = $namcfg[$k]['name'];
113 $type = $namcfg[$k]['type'];
114 $size = $namcfg[$k]['size'];
115 } else if ( $l == 'true' ) {
116 $v = 'TRUE';
117 $type = SMOPT_TYPE_BOOLEAN;
118 } else if ( $l == 'false' ) {
119 $v = 'FALSE';
120 $type = SMOPT_TYPE_BOOLEAN;
121 } else if ( $v{0} == "'" ) {
122 $type = SMOPT_TYPE_STRING;
123 } else if ( $v{0} == '"' ) {
124 $type = SMOPT_TYPE_STRING;
125 }
126
127 echo "<tr><td>$name</td><td>";
128
129 switch ( $type ) {
130 case SMOPT_TYPE_INTEGER:
131 if ( isset( $HTTP_POST_VARS[$e] ) ) {
132 $v = intval( $HTTP_POST_VARS[$e] );
133 $newcfg[$k] = $v;
134 }
135 echo "<input size=10 name=\"adm_$n\" value=\"$v\">";
136 break;
137 case SMOPT_TYPE_STRLIST:
138 if ( isset( $HTTP_POST_VARS[$e] ) ) {
139 $v = '"' . $HTTP_POST_VARS[$e] . '"';
140 $newcfg[$k] = $v;
141 }
142 echo "<select name=\"adm_$n\">";
143 foreach ( $namcfg[$k]['posvals'] as $kp => $vp ) {
144 echo "<option value=\"$kp\"";
145 if ( $kp == substr( $v, 1, strlen( $v ) - 2 ) ) {
146 echo ' selected';
147 }
148 echo ">$vp</option>";
149 }
150 echo '</select>';
151 break;
152
153 case SMOPT_TYPE_STRING:
154 if ( isset( $HTTP_POST_VARS[$e] ) ) {
155 $v = '"' . $HTTP_POST_VARS[$e] . '"';
156 $newcfg[$k] = $v;
157 }
158 echo "<input size=\"$size\" name=\"adm_$n\" value=\"" . substr( $v, 1, strlen( $v ) - 2 ) . "\">";
159 break;
160 case SMOPT_TYPE_BOOLEAN:
161 if ( isset( $HTTP_POST_VARS[$e] ) ) {
162 $v = $HTTP_POST_VARS[$e];
163 $newcfg[$k] = $v;
164 }
165 if ( $v == 'TRUE' ) {
166 $ct = ' checked';
167 $cf = '';
168 } else {
169 $ct = '';
170 $cf = ' checked';
171 }
172 echo "<INPUT$ct type=radio NAME=\"adm_$n\" value=\"TRUE\">" . _("Yes") .
173 "<INPUT$cf type=radio NAME=\"adm_$n\" value=\"FALSE\">" . _("No");
174 break;
175 default:
176 echo "<b><i>$v</i></b>";
177 }
178 echo "</td></tr>\n";
179 }
180 echo "<tr bgcolor=\"$color[5]\"><th colspan=2><input value=\"" .
181 _("Change Settings") . "\" type=submit></th></tr>" ,
182 '</table></form>';
183
184 /*
185 Write the options to the file.
186 */
187 $fp = fopen( $cfgfile, 'w' );
188 fwrite( $fp, "<?PHP\n".
189 "/**\n".
190 " * SquirrelMail Configuration File\n".
191 " * Created using the Administrator Plugin\n".
192 " */\n\n" );
193
194 fwrite( $fp, 'GLOBAL ' );
195 $not_first = FALSE;
196 foreach ( $newcfg as $k => $v ) {
197 if( $i = strpos( $k, '[' ) ) {
198 if( strpos( $k, '[0]' ) ) {
199 if( $not_first ) {
200 fwrite( $fp, ', ' );
201 }
202 fwrite( $fp, substr( $k, 0, $i) );
203 $not_first = TRUE;
204 }
205 } else {
206 if( $not_first ) {
207 fwrite( $fp, ', ' );
208 }
209 fwrite( $fp, $k );
210 $not_first = TRUE;
211 }
212 }
213 fwrite( $fp, ";\n" );
214 foreach ( $newcfg as $k => $v ) {
215 fwrite( $fp, "$k = $v;\n" );
216 }
217 fwrite( $fp, '?>' );
218 fclose( $fp );
219 ?>