X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=plugins%2Fadministrator%2Foptions.php;h=f9f06adda65a06addea32f87db61eb2681e39316;hp=07dd40d7eb53ed9e0091bb91b8954d0d40a03817;hb=18aa168e2c8ac7534c6b4233675b8ec711edb5c4;hpb=a551489caf45a2a7d3c5405f21fabbd8c75e5f85 diff --git a/plugins/administrator/options.php b/plugins/administrator/options.php index 07dd40d7..f9f06add 100644 --- a/plugins/administrator/options.php +++ b/plugins/administrator/options.php @@ -72,7 +72,8 @@ function parseConfig( $cfg_file ) { break; case 'C': // Comments - if ( $line{$j}.$line{$j+1} == '*/' ) { + if ( $s > $j + 1 && + $line{$j}.$line{$j+1} == '*/' ) { $mode = ''; $j++; } @@ -107,7 +108,12 @@ function parseConfig( $cfg_file ) { } break; default: - if ( strtoupper( substr( $line, $j, 7 ) ) == 'GLOBAL ' ) { + if ( $line{$j} == '$' ) { + // We must detect $key name + $mode = 'K'; + $key = '$'; + } else if ( $s < $j + 2 ) { + } else if ( strtoupper( substr( $line, $j, 7 ) ) == 'GLOBAL ' ) { // Skip untill next ; $mode = ';'; $j += 6; @@ -117,10 +123,6 @@ function parseConfig( $cfg_file ) { } else if ( $line{$j} == '#' || $line{$j}.$line{$j+1} == '//' ) { // Delete till the end of the line $j = $s; - } else if ( $line{$j} == '$' ) { - // We must detect $key name - $mode = 'K'; - $key = '$'; } } } @@ -136,16 +138,11 @@ require_once('../functions/page_header.php'); require_once('../functions/imap.php'); require_once('../src/load_prefs.php'); require_once('../plugins/administrator/defines.php'); +require_once('../plugins/administrator/auth.php'); -$auth = FALSE; -if ( $adm_id = fileowner('../config/config.php') ) { - $adm = posix_getpwuid( $adm_id ); - if ( $username == $adm['name'] ) { - $auth = TRUE; - } -} +GLOBAL $data_dir, $username; -if ( !auth ) { +if ( !adm_check_user() ) { header("Location: ../../src/options.php") ; exit; } @@ -162,10 +159,34 @@ $cfgfile = '../config/config.php'; parseConfig( '../config/config_default.php' ); parseConfig( $cfgfile ); -echo "
" . +$colapse = array( 'Titles' => 'off', + 'Group1' => getPref($data_dir, $username, 'adm_Group1', 'off' ), + 'Group2' => getPref($data_dir, $username, 'adm_Group2', 'on' ), + 'Group3' => getPref($data_dir, $username, 'adm_Group3', 'on' ), + 'Group4' => getPref($data_dir, $username, 'adm_Group4', 'on' ), + 'Group5' => getPref($data_dir, $username, 'adm_Group5', 'on' ), + 'Group6' => getPref($data_dir, $username, 'adm_Group6', 'on' ), + 'Group7' => getPref($data_dir, $username, 'adm_Group7', 'on' ), + 'Group8' => getPref($data_dir, $username, 'adm_Group8', 'on' ) ); + +if ( isset( $switch ) ) { + + if ( $colapse[$switch] == 'on' ) { + $colapse[$switch] = 'off'; + } else { + $colapse[$switch] = 'on'; + } + setPref($data_dir, $username, "adm_$switch", $colapse[$switch] ); + +} + +echo "" . "
". "" , ""; + +$act_grp = 'Titles'; /* Active group */ + foreach ( $newcfg as $k => $v ) { $l = strtolower( $v ); $type = SMOPT_TYPE_UNDEFINED; @@ -178,7 +199,11 @@ foreach ( $newcfg as $k => $v ) { if ( isset( $defcfg[$k] ) ) { $name = $defcfg[$k]['name']; $type = $defcfg[$k]['type']; - $size = $defcfg[$k]['size']; + if ( isset( $defcfg[$k]['size'] ) ) { + $size = $defcfg[$k]['size']; + } else { + $size = 40; + } } else if ( $l == 'true' ) { $v = 'TRUE'; $type = SMOPT_TYPE_BOOLEAN; @@ -199,208 +224,258 @@ foreach ( $newcfg as $k => $v ) { $type = SMOPT_TYPE_LDAP; } - switch ( $type ) { - case SMOPT_TYPE_LDAP: - case SMOPT_TYPE_PLUGINS: - case SMOPT_TYPE_THEME: - case SMOPT_TYPE_HIDDEN: - break; - case SMOPT_TYPE_TITLE: - echo ""; - break; - case SMOPT_TYPE_COMMENT: - $v = substr( $v, 1, strlen( $v ) - 2 ); - echo "\n"; - break; - case SMOPT_TYPE_INTEGER: - if ( isset( $HTTP_POST_VARS[$e] ) ) { - $v = intval( $HTTP_POST_VARS[$e] ); - $newcfg[$k] = $v; - } - echo "\n"; - break; - case SMOPT_TYPE_NUMLIST: - if ( isset( $HTTP_POST_VARS[$e] ) ) { - $v = $HTTP_POST_VARS[$e]; - $newcfg[$k] = $v; - } - echo ""; + break; + case SMOPT_TYPE_TITLE: + if ( $colapse[$k] == 'on' ) { + $sw = '(+)'; + } else { + $sw = '(-)'; } - echo ">$vp"; - } - echo ''; - if ( isset( $defcfg[$k]['comment'] ) ) { - echo '   ' . $defcfg[$k]['comment']; - } - echo "\n"; - break; - case SMOPT_TYPE_STRLIST: - if ( isset( $HTTP_POST_VARS[$e] ) ) { - $v = '"' . $HTTP_POST_VARS[$e] . '"'; - $newcfg[$k] = $v; - } - echo ""; + $act_grp = $k; + break; + case SMOPT_TYPE_COMMENT: + $v = substr( $v, 1, strlen( $v ) - 2 ); + echo "\n"; - break; + echo "\n"; + break; + case SMOPT_TYPE_INTEGER: + if ( isset( $HTTP_POST_VARS[$e] ) ) { + $v = intval( $HTTP_POST_VARS[$e] ); + $newcfg[$k] = $v; + } + echo "\n"; + break; + case SMOPT_TYPE_NUMLIST: + if ( isset( $HTTP_POST_VARS[$e] ) ) { + $v = $HTTP_POST_VARS[$e]; + $newcfg[$k] = $v; + } + echo "\n"; + break; + case SMOPT_TYPE_STRLIST: + if ( isset( $HTTP_POST_VARS[$e] ) ) { + $v = '"' . $HTTP_POST_VARS[$e] . '"'; + $newcfg[$k] = $v; + } + echo "\n"; + break; - case SMOPT_TYPE_TEXTAREA: - if ( isset( $HTTP_POST_VARS[$e] ) ) { - $v = '"' . $HTTP_POST_VARS[$e] . '"'; - $newcfg[$k] = str_replace( "\n", '', $v ); - } - echo "\n"; - break; - case SMOPT_TYPE_STRING: - if ( isset( $HTTP_POST_VARS[$e] ) ) { - $v = '"' . $HTTP_POST_VARS[$e] . '"'; - $newcfg[$k] = $v; - } - echo "\n"; + break; + case SMOPT_TYPE_STRING: + if ( isset( $HTTP_POST_VARS[$e] ) ) { + $v = '"' . $HTTP_POST_VARS[$e] . '"'; + $newcfg[$k] = $v; + } + if ( $v == '""' && isset( $defcfg[$k]['default'] ) ) { + $v = "'" . $defcfg[$k]['default'] . "'"; + $newcfg[$k] = $v; + } + echo "\n"; + break; + case SMOPT_TYPE_BOOLEAN: + if ( isset( $HTTP_POST_VARS[$e] ) ) { + $v = $HTTP_POST_VARS[$e]; + $newcfg[$k] = $v; + } else { + $v = strtoupper( $v ); + } + if ( $v == 'TRUE' ) { + $ct = ' checked'; + $cf = ''; + } else { + $ct = ''; + $cf = ' checked'; + } + echo "\n"; + break; + default: + echo "\n"; } - echo "\n"; - break; - case SMOPT_TYPE_BOOLEAN: - if ( isset( $HTTP_POST_VARS[$e] ) ) { - $v = $HTTP_POST_VARS[$e]; - $newcfg[$k] = $v; + } + +} + +/* Special Themes Block */ +if ( $colapse['Group7'] == 'off' ) { + $i = 0; + echo ''; + while ( isset( $newcfg["\$theme[$i]['NAME']"] ) ) { + $k1 = "\$theme[$i]['NAME']"; + $e1 = "theme_name_$i"; + if ( isset( $HTTP_POST_VARS[$e1] ) ) { + $v1 = '"' . $HTTP_POST_VARS[$e1] . '"'; + $newcfg[$k1] = $v1; } else { - $v = strtoupper( $v ); + $v1 = $newcfg[$k1]; } - if ( $v == 'TRUE' ) { - $ct = ' checked'; - $cf = ''; + $k2 = "\$theme[$i]['PATH']"; + $e2 = "theme_path_$i"; + if ( isset( $HTTP_POST_VARS[$e2] ) ) { + $v2 = '"' . $HTTP_POST_VARS[$e2] . '"'; + $newcfg[$k2] = $v2; } else { - $ct = ''; - $cf = ' checked'; - } - echo "\n"; - break; - default: - echo "\n"; - } + $name = substr( $v1, 1, strlen( $v1 ) - 2 ); + $path = substr( $v2, 1, strlen( $v2 ) - 2 ); + echo ''. + "". + "". + "\n"; + $i++; -} - -$i = 0; -echo ''; -while ( isset( $newcfg["\$theme[$i]['NAME']"] ) ) { - $k1 = "\$theme[$i]['NAME']"; - $e1 = "theme_name_$i"; - if ( isset( $HTTP_POST_VARS[$e1] ) ) { - $v1 = '"' . $HTTP_POST_VARS[$e1] . '"'; - $newcfg[$k1] = $v1; - } else { - $v1 = $newcfg[$k1]; } - $k2 = "\$theme[$i]['PATH']"; - $e2 = "theme_path_$i"; - if ( isset( $HTTP_POST_VARS[$e2] ) ) { - $v2 = '"' . $HTTP_POST_VARS[$e2] . '"'; - $newcfg[$k2] = $v2; - } else { - $v2 = $newcfg[$k2]; - } - $name = substr( $v1, 1, strlen( $v1 ) - 2 ); - $path = substr( $v2, 1, strlen( $v2 ) - 2 ); - echo ''. - "". - "". - "\n"; - $i++; +} +/* Special Plugins Block */ +if ( $colapse['Group8'] == 'on' ) { + $sw = '(+)'; +} else { + $sw = '(-)'; } +echo "'; -echo "'; +if( $colapse['Group8'] == 'off' ) { -$fd = opendir( '../plugins/' ); -$op_plugin = array(); -while (false!==($file = readdir($fd))) { - if ($file != '.' && $file != '..' && $file != 'CVS' ) { - if ( filetype( $file ) == 'dir' ) { - $op_plugin[] = $file; + $fd = opendir( '../plugins/' ); + $op_plugin = array(); + $p_count = 0; + while (false!==($file = readdir($fd))) { + if ($file != '.' && $file != '..' && $file != 'CVS' ) { + if ( filetype( $file ) == 'dir' ) { + $op_plugin[] = $file; + $p_count++; + } } } -} -closedir($fd); -asort( $op_plugin ); - -$i = 0; -while ( isset( $newcfg["\$plugins[$i]"] ) ) { - $k = "\$plugins[$i]"; - $e = "plugin_$i"; - if ( isset( $HTTP_POST_VARS[$e] ) ) { - $v = '"' . $HTTP_POST_VARS[$e] . '"'; - $newcfg[$k] = $v; + closedir($fd); + asort( $op_plugin ); + + /* Lets get the plugins that are active */ + $plugins = array(); + if ( isset( $HTTP_POST_VARS['plg'] ) ) { + foreach ( $op_plugin as $plg ) { + if ( isset( $HTTP_POST_VARS["plgs_$plg"] ) && + $HTTP_POST_VARS["plgs_$plg"] == 'on' ) { + $plugins[] = $plg; + } + } + $i = 0; + foreach ( $plugins as $plg ) { + $k = "\$plugins[$i]"; + $newcfg[$k] = "'$plg'"; + $i++; + } + while ( isset( $newcfg["\$plugins[$i]"] ) ) { + $k = "\$plugins[$i]"; + $newcfg[$k] = ''; + $i++; + } } else { - $v = $newcfg[$k]; + $i = 0; + while ( isset( $newcfg["\$plugins[$i]"] ) ) { + $k = "\$plugins[$i]"; + $v = $newcfg[$k]; + $plugins[] = substr( $v, 1, strlen( $v ) - 2 ); + $i++; + } } - $name = substr( $v, 1, strlen( $v ) - 2 ); - echo ''. - "". - "" , '
" . _("Configuration Administrator") . "
$name
$name". - "$v"; - $newcfg[$k] = "'$v'"; - if ( isset( $defcfg[$k]['comment'] ) ) { - echo '   ' . $defcfg[$k]['comment']; - } - echo "
$name". - ""; - if ( isset( $defcfg[$k]['comment'] ) ) { - echo '   ' . $defcfg[$k]['comment']; - } - echo "
$name"; - echo "$name" . + $defcfg[$k]['value'] . + "
$name". - "" . + "$sw " . + "$name
$name". + "$v"; + $newcfg[$k] = "'$v'"; + if ( isset( $defcfg[$k]['comment'] ) ) { + echo '   ' . $defcfg[$k]['comment']; } - echo ">$vp"; - } - echo ''; - if ( isset( $defcfg[$k]['comment'] ) ) { - echo '   ' . $defcfg[$k]['comment']; - } - echo "
$name". + ""; + if ( isset( $defcfg[$k]['comment'] ) ) { + echo '   ' . $defcfg[$k]['comment']; + } + echo "
$name"; + echo "'; + if ( isset( $defcfg[$k]['comment'] ) ) { + echo '   ' . $defcfg[$k]['comment']; + } + echo "
$name". + "'; + if ( isset( $defcfg[$k]['comment'] ) ) { + echo '   ' . $defcfg[$k]['comment']; + } + echo "
$name". - ""; - if ( isset( $defcfg[$k]['comment'] ) ) { - echo '   ' . $defcfg[$k]['comment']; - } - echo "
$name". - ""; - if ( isset( $defcfg[$k]['comment'] ) ) { - echo '   ' . $defcfg[$k]['comment']; + case SMOPT_TYPE_TEXTAREA: + if ( isset( $HTTP_POST_VARS[$e] ) ) { + $v = '"' . $HTTP_POST_VARS[$e] . '"'; + $newcfg[$k] = str_replace( "\n", '', $v ); + } + echo "
$name". + ""; + if ( isset( $defcfg[$k]['comment'] ) ) { + echo '   ' . $defcfg[$k]['comment']; + } + echo "
$name". + ""; + if ( isset( $defcfg[$k]['comment'] ) ) { + echo '   ' . $defcfg[$k]['comment']; + } + echo "
$name" . + "" . _("Yes") . + "" . _("No"); + if ( isset( $defcfg[$k]['comment'] ) ) { + echo '   ' . $defcfg[$k]['comment']; + } + echo "
$name" . + "$v"; + if ( isset( $defcfg[$k]['comment'] ) ) { + echo '   ' . $defcfg[$k]['comment']; + } + echo "
' . _("Theme Name") . + '' . _("Theme Path") . + '
$name" . - "" . _("Yes") . - "" . _("No"); - if ( isset( $defcfg[$k]['comment'] ) ) { - echo '   ' . $defcfg[$k]['comment']; + $v2 = $newcfg[$k2]; } - echo "
$name" . - "$v"; - if ( isset( $defcfg[$k]['comment'] ) ) { - echo '   ' . $defcfg[$k]['comment']; - } - echo "
$i.
' . _("Theme Name") . - '' . _("Theme Path") . - '
$i.
" . + "$sw " . + _("Plugins") . '
" . _("Plugins") . '
$i.
' . + "". + "\n"; } - echo "". - ''; - $i++; + echo '
"; + foreach ( $op_plugin as $plg ) { + if ( in_array( $plg, $plugins ) ) { + $sw = ' checked'; } else { - $cs = ''; + $sw = ''; } - echo "$op"; + echo '
$plg
'; } - echo "
'; @@ -414,7 +489,7 @@ fwrite( $fp, " $v ) { fwrite( $fp, ";\n" ); */ foreach ( $newcfg as $k => $v ) { - if ( $k{0} == '$' ) { + if ( $k{0} == '$' && $v <> '' ) { if ( substr( $k, 1, 11 ) == 'ldap_server' ) { $v = substr( $v, 0, strlen( $v ) - 1 ) . "\n)"; $v = str_replace( 'array(', "array(\n\t", $v );