squirrelmail-webmail  1.4.22
About: SquirrelMail is a standards-based webmail package with strong MIME support, address books, and folder manipulation (written in PHP4).
  Fossies Dox: squirrelmail-webmail-1.4.22.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

options.php
Go to the documentation of this file.
1 <?php
17 define('PAGE_NAME', 'administrator_options');
18 
25 function parseConfig( $cfg_file ) {
26 
27  global $newcfg;
28 
29  $cfg = file( $cfg_file );
30  $mode = '';
31  $l = count( $cfg );
32  $modifier = FALSE;
33 
34  for ($i=0;$i<$l;$i++) {
35  $line = trim( $cfg[$i] );
36  $s = strlen( $line );
37  for ($j=0;$j<$s;$j++) {
38  switch ( $mode ) {
39  case '=':
40  if ( $line{$j} == '=' ) {
41  // Ok, we've got a right value, lets detect what type
42  $mode = 'D';
43  } else if ( $line{$j} == ';' ) {
44  // hu! end of command
45  $key = $mode = '';
46  }
47  break;
48  case 'K':
49  // Key detect
50  if ( $line{$j} == ' ' ) {
51  $mode = '=';
52  } else {
53  $key .= $line{$j};
54  }
55  break;
56  case ';':
57  // Skip until next ;
58  if ( $line{$j} == ';' ) {
59  $mode = '';
60  }
61  break;
62  case 'S':
63  if ( $line{$j} == '\\' ) {
64  $value .= $line{$j};
65  $modifier = TRUE;
66  } else if ( $line{$j} == $delimiter && $modifier === FALSE ) {
67  // End of string;
68  $newcfg[$key] = $value . $delimiter;
69  $key = $value = '';
70  $mode = ';';
71  } else {
72  $value .= $line{$j};
73  $modifier = FALSE;
74  }
75  break;
76  case 'N':
77  if ( $line{$j} == ';' ) {
78  $newcfg{$key} = $value;
79  $key = $mode = '';
80  } else {
81  $value .= $line{$j};
82  }
83  break;
84  case 'C':
85  // Comments
86  if ( $s > $j + 1 &&
87  $line{$j}.$line{$j+1} == '*/' ) {
88  $mode = '';
89  $j++;
90  }
91  break;
92  case 'D':
93  // Delimiter detect
94  switch ( $line{$j} ) {
95  case '"':
96  case "'":
97  // Double quote string
98  $delimiter = $value = $line{$j};
99  $mode = 'S';
100  break;
101  case ' ':
102  // Nothing yet
103  break;
104  default:
105  if ( strtoupper( substr( $line, $j, 4 ) ) == 'TRUE' ) {
106  // Boolean TRUE
107  $newcfg{$key} = 'TRUE';
108  $key = '';
109  $mode = ';';
110  } else if ( strtoupper( substr( $line, $j, 5 ) ) == 'FALSE' ) {
111  $newcfg{$key} = 'FALSE';
112  $key = '';
113  $mode = ';';
114  } else {
115  // Number or function call
116  $mode = 'N';
117  $value = $line{$j};
118  }
119  }
120  break;
121  default:
122  if ( $line{$j} == '$' ) {
123  // We must detect $key name
124  $mode = 'K';
125  $key = '$';
126  } else if ( $s < $j + 2 ) {
127  } else if ( strtoupper( substr( $line, $j, 7 ) ) == 'GLOBAL ' ) {
128  // Skip untill next ;
129  $mode = ';';
130  $j += 6;
131  } else if ( $line{$j}.$line{$j+1} == '/*' ) {
132  $mode = 'C';
133  $j++;
134  } else if ( $line{$j} == '#' || $line{$j}.$line{$j+1} == '//' ) {
135  // Delete till the end of the line
136  $j = $s;
137  }
138  }
139  }
140  }
141 }
142 
156 function change_to_rel_path($old_path) {
157  $new_path = str_replace("SM_PATH . '", "../", $old_path);
158  $new_path = str_replace("../config/","", $new_path);
159  $new_path = str_replace("'","", $new_path);
160  return $new_path;
161 }
162 
177 function change_to_sm_path($old_path) {
178  if ( $old_path === '' || $old_path == "''" ) {
179  return "''";
180  } elseif ( preg_match("/^(\/|http)/", $old_path) ||
181  substr($old_path,1,2) == ':/' ) {
182  return "'" . $old_path . "'";
183  } elseif ( preg_match("/^(\$|SM_PATH)/", $old_path) ) {
184  return $old_path;
185  }
186 
187  $new_path = '';
188  $rel_path = explode("../", $old_path);
189  if ( count($rel_path) > 2 ) {
190  // Since we're relative to the config dir,
191  // more than 1 ../ puts us OUTSIDE the SM tree.
192  // get full path to config.php, then pop the filename
193  $abs_path = explode('/', realpath (SM_PATH . 'config/config.php'));
194  array_pop ($abs_path);
195  foreach ( $rel_path as $subdir ) {
196  if ( $subdir === '' ) {
197  array_pop ($abs_path);
198  } else {
199  array_push($abs_path, $subdir);
200  }
201  }
202  foreach ($abs_path as $subdir) {
203  $new_path .= $subdir . '/';
204  }
205  $new_path = "'$new_path'";
206  } elseif ( count($rel_path) > 1 ) {
207  // we're within the SM tree, prepend SM_PATH
208  $new_path = str_replace('../',"SM_PATH . '", $old_path . "'");
209  } else {
210  // Last, if it's a relative path without a .. prefix,
211  // we're somewhere within the config dir, so prepend
212  // SM_PATH . 'config/
213  $new_path = "SM_PATH . 'config/" . $old_path . "'";
214  }
215  return $new_path;
216 }
217 
218 
219 /* ---------------------- main -------------------------- */
220 
222 define('SM_PATH','../../');
223 
224 /* SquirrelMail required files. */
225 require_once(SM_PATH . 'include/validate.php');
226 require_once(SM_PATH . 'plugins/administrator/defines.php');
227 require_once(SM_PATH . 'plugins/administrator/auth.php');
228 
229 global $data_dir, $username;
230 
231 if ( !adm_check_user() ) {
232  header('Location: ' . SM_PATH . 'src/options.php') ;
233  exit;
234 }
235 
236 displayPageHeader($color, 'None');
237 
238 $newcfg = array( );
239 
240 foreach ( $defcfg as $key => $def ) {
241  $newcfg[$key] = '';
242 }
243 
244 $cfgfile = SM_PATH . 'config/config.php';
245 parseConfig( SM_PATH . 'config/config_default.php' );
247 
248 $colapse = array( 'Titles' => 'off',
249  'Group1' => getPref($data_dir, $username, 'adm_Group1', 'off' ),
250  'Group2' => getPref($data_dir, $username, 'adm_Group2', 'on' ),
251  'Group3' => getPref($data_dir, $username, 'adm_Group3', 'on' ),
252  'Group4' => getPref($data_dir, $username, 'adm_Group4', 'on' ),
253  'Group5' => getPref($data_dir, $username, 'adm_Group5', 'on' ),
254  'Group6' => getPref($data_dir, $username, 'adm_Group6', 'on' ),
255  'Group7' => getPref($data_dir, $username, 'adm_Group7', 'on' ),
256  'Group8' => getPref($data_dir, $username, 'adm_Group8', 'on' ),
257  'Group9' => getPref($data_dir, $username, 'adm_Group9', 'on' ),
258  'Group10' => getPref($data_dir, $username, 'adm_Group10', 'on' ) );
259 
260 /* look in $_GET array for 'switch' */
261 if ( sqgetGlobalVar('switch', $switch, SQ_GET) ) {
262  if ( $colapse[$switch] == 'on' ) {
263  $colapse[$switch] = 'off';
264  } else {
265  $colapse[$switch] = 'on';
266  }
267  setPref($data_dir, $username, "adm_$switch", $colapse[$switch] );
268 }
269 
270 echo '<form action="options.php" method="post" name="options">' .
271  '<center><table width="95%" bgcolor="'.$color[5].'"><tr><td>'.
272  '<table width="100%" cellspacing="0" bgcolor="'.$color[4].'">'.
273  '<tr bgcolor="'.$color[5].'"><th colspan="2">'.
274  _("Configuration Administrator").'</th></tr>'.
275  '<tr bgcolor="'.$color[5].'"><td colspan="2" align="center"><small>'.
276  _("Note: it is recommended that you configure your system using conf.pl, and not this plugin. conf.pl contains additional information regarding the purpose of variables and appropriate values, as well as additional verification steps.").
277  '<br />'.
278  _("Run or consult conf.pl should you run into difficulty with your configuration.").
279  '</small></td></tr>';
280 
281 
282 $act_grp = 'Titles'; /* Active group */
283 
284 foreach ( $newcfg as $k => $v ) {
285  $l = strtolower( $v );
286  $type = SMOPT_TYPE_UNDEFINED;
287  $n = substr( $k, 1 );
288  $n = str_replace( '[', '_', $n );
289  $n = str_replace( ']', '_', $n );
290  $e = 'adm_' . $n;
291  $name = $k;
292  $size = 50;
293  if ( isset( $defcfg[$k] ) ) {
294  $name = $defcfg[$k]['name'];
295  $type = $defcfg[$k]['type'];
296  if ( isset( $defcfg[$k]['size'] ) ) {
297  $size = $defcfg[$k]['size'];
298  } else {
299  $size = 40;
300  }
301  } else if ( $l == 'true' ) {
302  $v = 'TRUE';
303  $type = SMOPT_TYPE_BOOLEAN;
304  } else if ( $l == 'false' ) {
305  $v = 'FALSE';
306  $type = SMOPT_TYPE_BOOLEAN;
307  } else if ( $v{0} == "'" ) {
308  $type = SMOPT_TYPE_STRING;
309  } else if ( $v{0} == '"' ) {
310  $type = SMOPT_TYPE_STRING;
311  }
312 
313  if ( substr( $k, 0, 7 ) == '$theme[' ) {
314  $type = SMOPT_TYPE_THEME;
315  } else if ( substr( $k, 0, 9 ) == '$plugins[' ) {
316  $type = SMOPT_TYPE_PLUGINS;
317  } else if ( substr( $k, 0, 13 ) == '$ldap_server[' ) {
318  $type = SMOPT_TYPE_LDAP;
319  }
320 
321  if ( $type == SMOPT_TYPE_TITLE || $colapse[$act_grp] == 'off' ) {
322 
323  switch ( $type ) {
324  case SMOPT_TYPE_LDAP:
325  case SMOPT_TYPE_PLUGINS:
326  case SMOPT_TYPE_THEME:
327  case SMOPT_TYPE_HIDDEN:
328  break;
329  case SMOPT_TYPE_EXTERNAL:
330  echo "<tr><td>$name</td><td><b>" .
331  $defcfg[$k]['value'] .
332  '</b></td></tr>';
333  break;
334  case SMOPT_TYPE_TITLE:
335  if ( $colapse[$k] == 'on' ) {
336  $sw = '(+)';
337  } else {
338  $sw = '(-)';
339  }
340  echo '<tr bgcolor="'.$color[0].'"><th colspan="2">'.
341  "<a href=\"options.php?switch=$k\" style=\"text-decoration:none\">".
342  '<b>'.$sw.'</b></a> '.$name.'</th></tr>';
343  $act_grp = $k;
344  break;
345  case SMOPT_TYPE_COMMENT:
346  $v = substr( $v, 1, strlen( $v ) - 2 );
347  echo "<tr><td>$name</td><td>".
348  "<b>$v</b>";
349  $newcfg[$k] = "'$v'";
350  if ( isset( $defcfg[$k]['comment'] ) ) {
351  echo ' &nbsp; ' . $defcfg[$k]['comment'];
352  }
353  echo "</td></tr>\n";
354  break;
355  case SMOPT_TYPE_INTEGER:
356  /* look for variable $e in POST, fill into $v */
357  if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) {
358  $v = intval( $new_v );
359  $newcfg[$k] = $v;
360  }
361  echo "<tr><td>$name</td><td>".
362  "<input size=\"10\" name=\"adm_$n\" value=\"$v\" />";
363  if ( isset( $defcfg[$k]['comment'] ) ) {
364  echo ' &nbsp; ' . $defcfg[$k]['comment'];
365  }
366  echo "</td></tr>\n";
367  break;
368  case SMOPT_TYPE_NUMLIST:
369  if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) {
370  $v = $new_v;
371  $newcfg[$k] = $v;
372  }
373  echo "<tr><td>$name</td><td>";
374  echo "<select name=\"adm_$n\">";
375  foreach ( $defcfg[$k]['posvals'] as $kp => $vp ) {
376  echo "<option value=\"$kp\"";
377  if ( $kp == $v ) {
378  echo ' selected="selected"';
379  }
380  echo ">$vp</option>";
381  }
382  echo '</select>';
383  if ( isset( $defcfg[$k]['comment'] ) ) {
384  echo ' &nbsp; ' . $defcfg[$k]['comment'];
385  }
386  echo "</td></tr>\n";
387  break;
388  case SMOPT_TYPE_STRLIST:
389  if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) {
390  $v = '"' . $new_v . '"';
391  $newcfg[$k] = $v;
392  }
393  echo "<tr><td>$name</td><td>".
394  "<select name=\"adm_$n\">";
395  foreach ( $defcfg[$k]['posvals'] as $kp => $vp ) {
396  echo "<option value=\"$kp\"";
397  if ( $kp == substr( $v, 1, strlen( $v ) - 2 ) ) {
398  echo ' selected="selected"';
399  }
400  echo ">$vp</option>";
401  }
402  echo '</select>';
403  if ( isset( $defcfg[$k]['comment'] ) ) {
404  echo ' &nbsp; ' . $defcfg[$k]['comment'];
405  }
406  echo "</td></tr>\n";
407  break;
408 
409  case SMOPT_TYPE_TEXTAREA:
410  if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) {
411  $v = '"' . $new_v . '"';
412  $newcfg[$k] = str_replace( "\n", '', $v );
413  }
414  echo "<tr><td valign=\"top\">$name</td><td>".
415  "<textarea cols=\"$size\" rows=\"4\" name=\"adm_$n\">" . substr( $v, 1, strlen( $v ) - 2 ) . "</textarea>";
416  if ( isset( $defcfg[$k]['comment'] ) ) {
417  echo ' &nbsp; ' . $defcfg[$k]['comment'];
418  }
419  echo "</td></tr>\n";
420  break;
421  case SMOPT_TYPE_STRING:
422  if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) {
423  $v = '"' . $new_v . '"';
424  $newcfg[$k] = $v;
425  }
426  if ( $v == '""' && isset( $defcfg[$k]['default'] ) ) {
427  $v = "'" . $defcfg[$k]['default'] . "'";
428  $newcfg[$k] = $v;
429  }
430  echo "<tr><td>$name</td><td>".
431  "<input size=\"$size\" name=\"adm_$n\" value=\"" . substr( $v, 1, strlen( $v ) - 2 ) . '" />';
432  if ( isset( $defcfg[$k]['comment'] ) ) {
433  echo ' &nbsp; ' . $defcfg[$k]['comment'];
434  }
435  echo "</td></tr>\n";
436  break;
437  case SMOPT_TYPE_BOOLEAN:
438  if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) {
439  $v = $new_v;
440  $newcfg[$k] = $v;
441  } else {
442  $v = strtoupper( $v );
443  }
444  if ( $v == 'TRUE' ) {
445  $ct = ' checked="checked"';
446  $cf = '';
447  } else {
448  $ct = '';
449  $cf = ' checked="checked"';
450  }
451  echo "<tr><td>$name</td><td>" .
452  "<input$ct type=\"radio\" name=\"adm_$n\" value=\"TRUE\" />" . _("Yes") .
453  "<input$cf type=\"radio\" name=\"adm_$n\" value=\"FALSE\" />" . _("No");
454  if ( isset( $defcfg[$k]['comment'] ) ) {
455  echo ' &nbsp; ' . $defcfg[$k]['comment'];
456  }
457  echo "</td></tr>\n";
458  break;
459  case SMOPT_TYPE_PATH:
460  if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) {
461  $v = change_to_sm_path($new_v);
462  $newcfg[$k] = $v;
463  }
464  if ( $v == "''" && isset( $defcfg[$k]['default'] ) ) {
465  $v = change_to_sm_path($defcfg[$k]['default']);
466  $newcfg[$k] = $v;
467  }
468  echo "<tr><td>$name</td><td>".
469  "<input size=\"$size\" name=\"adm_$n\" value=\"" . change_to_rel_path($v) . '" />';
470  if ( isset( $defcfg[$k]['comment'] ) ) {
471  echo ' &nbsp; ' . $defcfg[$k]['comment'];
472  }
473  echo "</td></tr>\n";
474  break;
475  default:
476  echo "<tr><td>$name</td><td>" .
477  "<b><i>$v</i></b>";
478  if ( isset( $defcfg[$k]['comment'] ) ) {
479  echo ' &nbsp; ' . $defcfg[$k]['comment'];
480  }
481  echo "</td></tr>\n";
482  }
483  }
484 }
485 
486 /* Special Themes Block */
487 if ( $colapse['Group7'] == 'off' ) {
488  $i = 0;
489  echo '<tr><th>' . _("Theme Name") .
490  '</th><th>' . _("Theme Path") .
491  '</th></tr>';
492  while ( isset( $newcfg["\$theme[$i]['NAME']"] ) ) {
493  $k1 = "\$theme[$i]['NAME']";
494  $e1 = "theme_name_$i";
495  if ( sqgetGlobalVar($e, $v1, SQ_POST) ) {
496  $v1 = '"' . str_replace( '\"', '"', $v1 ) . '"';
497  $v1 = '"' . str_replace( '"', '\"', $v1 ) . '"';
498  $newcfg[$k1] = $v1;
499  } else {
500  $v1 = $newcfg[$k1];
501  }
502  $k2 = "\$theme[$i]['PATH']";
503  $e2 = "theme_path_$i";
504  if ( sqgetGlobalVar($e, $v2, SQ_POST) ) {
505  $v2 = change_to_sm_path($v2);
506  $newcfg[$k2] = $v2;
507  } else {
508  $v2 = $newcfg[$k2];
509  }
510  $name = substr( $v1, 1, strlen( $v1 ) - 2 );
511  $path = change_to_rel_path($v2);
512  echo '<tr>'.
513  "<td align=\"right\">$i. <input name=\"$e1\" value=\"$name\" size=\"30\" /></td>".
514  "<td><input name=\"$e2\" value=\"$path\" size=\"40\" /></td>".
515  "</tr>\n";
516  $i++;
517 
518  }
519 }
520 
521 /* Special Plugins Block */
522 if ( $colapse['Group8'] == 'on' ) {
523  $sw = '(+)';
524 } else {
525  $sw = '(-)';
526 }
527 echo '<tr bgcolor="'.$color[0].'"><th colspan="2">'.
528  '<a href="options.php?switch=Group8" style="text-decoration:none"><b>'.
529  $sw.'</b></a> '._("Plugins").'</th></tr>';
530 
531 if ( $colapse['Group8'] == 'off' ) {
532 
533  $plugpath = SM_PATH . 'plugins/';
534  if ( file_exists($plugpath) ) {
535  $fd = opendir( $plugpath );
536  $op_plugin = array();
537  $p_count = 0;
538  while (false !== ($file = readdir($fd))) {
539  if ($file != '.' && $file != '..' && $file != 'CVS' && is_dir($plugpath . $file) ) {
540  $op_plugin[] = $file;
541  $p_count++;
542  }
543  }
544  closedir($fd);
545  asort( $op_plugin );
546 
547  /* Lets get the plugins that are active */
548  $plugins = array();
549  if ( sqgetGlobalVar('plg', $v, SQ_POST) ) {
550  foreach ( $op_plugin as $plg ) {
551  if ( sqgetGlobalVar("plgs_$plg", $v2, SQ_POST) && $v2 == 'on' ) {
552  $plugins[] = $plg;
553  }
554  }
555  $i = 0;
556  foreach ( $plugins as $plg ) {
557  $k = "\$plugins[$i]";
558  $newcfg[$k] = "'$plg'";
559  $i++;
560  }
561  while ( isset( $newcfg["\$plugins[$i]"] ) ) {
562  $k = "\$plugins[$i]";
563  $newcfg[$k] = '';
564  $i++;
565  }
566  } else {
567  $i = 0;
568  while ( isset( $newcfg["\$plugins[$i]"] ) ) {
569  $k = "\$plugins[$i]";
570  $v = $newcfg[$k];
571  $plugins[] = substr( $v, 1, strlen( $v ) - 2 );
572  $i++;
573  }
574  }
575  echo '<tr><td colspan="2"><input type="hidden" name="plg" value="on" /><center><table>';
576  foreach ( $op_plugin as $plg ) {
577  if ( in_array( $plg, $plugins ) ) {
578  $sw = ' checked="checked"';
579  } else {
580  $sw = '';
581  }
582  echo '<tr><td>';
583  if (file_exists(SM_PATH . "plugins/$plg/README")) {
584  echo "<a href=\"../$plg/README\" target=\"_blank\">$plg</a>";
585  } else {
586  echo $plg;
587  }
588  echo "</td>\n".
589  "<td><input$sw type=\"checkbox\" name=\"plgs_$plg\" /></td>".
590  "</tr>\n";
591  }
592  echo '</table></center></td></tr>';
593  } else {
594  echo '<tr><td colspan="2" align="center">'.
595  sprintf(_("Plugin directory could not be found: %s"), $plugpath).
596  "</td></tr>\n";
597  }
598 }
599 echo '<tr bgcolor="'.$color[5].'"><th colspan="2"><input value="'.
600  _("Change Settings").'" type="submit" /><br />'.
601  '<a href="'.SM_PATH.'src/configtest.php" target="_blank">'.
602  _("Test Configuration")."</a></th></tr>\n".
603  '</table></td></tr></table></center></form>';
604 
605 /*
606  Write the options to the file.
607 */
608 
609 if ( $fp = @fopen( $cfgfile, 'w' ) ) {
610  fwrite( $fp, "<?php\n".
611  "/**\n".
612  " * SquirrelMail Configuration File\n".
613  " * Created using the Administrator Plugin\n".
614  " */\n".
615  "\n".
616  "global \$version;\n" );
617 
618  foreach ( $newcfg as $k => $v ) {
619  if ( $k{0} == '$' && $v <> '' || is_int($v)) {
620  if ( substr( $k, 1, 11 ) == 'ldap_server' ) {
621  $v = substr( $v, 0, strlen( $v ) - 1 ) . "\n)";
622  $v = str_replace( 'array(', "array(\n\t", $v );
623  $v = str_replace( "',", "',\n\t", $v );
624  }
625  fwrite( $fp, "$k = $v;\n" );
626  }
627  }
628  // add local config support
629  fwrite( $fp, "@include SM_PATH . 'config/config_local.php';\n" );
630  // close php
631  fwrite( $fp, '?>' );
632  fclose( $fp );
633 } else {
634  echo '<br /><p align="center"><big>'.
635  _("Config file can't be opened. Please check config.php.").
636  '</big></p>';
637 }
638 ?>
639 </body></html>
adm_check_user
adm_check_user()
Definition: auth.php:21
elseif
if(! sqgetGlobalVar('sound', $sound, SQ_GET)) elseif($sound=='(none)')
Definition: testsound.php:25
sqgetGlobalVar
sqgetGlobalVar($name, &$value, $search=SQ_INORDER)
Definition: global.php:344
getPref
getPref($data_dir, $username, $string, $default='')
Definition: db_prefs.php:316
SMOPT_TYPE_PLUGINS
const SMOPT_TYPE_PLUGINS
Definition: defines.php:30
$defcfg
for($lsv=100; $lsv<=300; $lsv+=10) $defcfg
Definition: defines.php:50
change_to_rel_path
change_to_rel_path($old_path)
Definition: options.php:156
SM_PATH
const SM_PATH
Definition: options.php:222
$newcfg
$newcfg
Definition: options.php:238
SMOPT_TYPE_PATH
const SMOPT_TYPE_PATH
Definition: defines.php:33
displayPageHeader
displayPageHeader($color, $mailbox, $xtra='', $session=false)
Definition: page_header.php:105
SMOPT_TYPE_HIDDEN
const SMOPT_TYPE_HIDDEN
Definition: options.php:26
setPref
setPref($data_dir, $username, $string, $set_to)
Definition: db_prefs.php:352
sprintf
powered by Systran sprintf(_("Number of supported language pairs: %s"), '36').' '
Definition: options.php:107
html
Definition: html.class.php:18
SMOPT_TYPE_COMMENT
const SMOPT_TYPE_COMMENT
Definition: options.php:27
$cfgfile
foreach( $defcfg as $key=> $def) $cfgfile
Definition: options.php:244
SMOPT_TYPE_NUMLIST
const SMOPT_TYPE_NUMLIST
Definition: defines.php:27
SMOPT_TYPE_TEXTAREA
const SMOPT_TYPE_TEXTAREA
Definition: options.php:22
$act_grp
$act_grp
Definition: options.php:282
SMOPT_TYPE_UNDEFINED
const SMOPT_TYPE_UNDEFINED
Definition: defines.php:18
$plugins
global $plugins
Definition: options.php:17
SMOPT_TYPE_INTEGER
const SMOPT_TYPE_INTEGER
Definition: options.php:23
SMOPT_TYPE_STRING
const SMOPT_TYPE_STRING
Definition: options.php:20
parseConfig
parseConfig( $cfg_file)
Definition: options.php:25
SMOPT_TYPE_EXTERNAL
const SMOPT_TYPE_EXTERNAL
Definition: defines.php:32
SQ_GET
const SQ_GET
Definition: global.php:16
$j
for($i=0; $i< $numboxes; $i++) $j
Definition: empty_trash.php:72
SQ_POST
const SQ_POST
Definition: global.php:17
exit
exit
Definition: help.php:128
SMOPT_TYPE_LDAP
const SMOPT_TYPE_LDAP
Definition: defines.php:31
_
_($str)
Definition: gettext.php:160
SMOPT_TYPE_THEME
const SMOPT_TYPE_THEME
Definition: defines.php:29
SMOPT_TYPE_STRLIST
const SMOPT_TYPE_STRLIST
Definition: options.php:21
$colapse
$colapse
Definition: options.php:248
SMOPT_TYPE_BOOLEAN
const SMOPT_TYPE_BOOLEAN
Definition: options.php:25
$color
global $color
Definition: options.php:19
change_to_sm_path
change_to_sm_path($old_path)
Definition: options.php:177
SMOPT_TYPE_TITLE
const SMOPT_TYPE_TITLE
Definition: defines.php:28
$username
global $username
Definition: options.php:225
$data_dir
global $data_dir
Definition: options.php:225