X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=plugins%2Fadministrator%2Foptions.php;h=15a1c4b2dafd346641eba6774e3e39ea7731f1ee;hb=a67cf4877d741cffdf17affd2fae6359921b12ab;hp=f83688d50ca5969fdd176bf30f1fc30eedcd8a68;hpb=0f610dca6fd52a148e290f79cdfcfc572998b475;p=squirrelmail.git diff --git a/plugins/administrator/options.php b/plugins/administrator/options.php index f83688d5..15a1c4b2 100644 --- a/plugins/administrator/options.php +++ b/plugins/administrator/options.php @@ -6,10 +6,10 @@ * This script creates separate page, that allows to review and modify * SquirrelMail configuration file. * - * @version $Id$ * @author Philippe Mingo - * @copyright (c) 1999-2004 The SquirrelMail Project Team + * @copyright © 1999-2007 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License + * @version $Id$ * @package plugins * @subpackage administrator */ @@ -28,6 +28,7 @@ function parseConfig( $cfg_file ) { $mode = ''; $l = count( $cfg ); $modifier = FALSE; + $arraykey = 0; for ($i=0;$i<$l;$i++) { $line = trim( $cfg[$i] ); @@ -49,6 +50,11 @@ function parseConfig( $cfg_file ) { $mode = '='; } else { $key .= $line{$j}; + // FIXME: this is only pour workaround for plugins[] array. + if ($line{$j}=='[' && $line{($j+1)}==']') { + $key .= $arraykey; + $arraykey++; + } } break; case ';': @@ -146,31 +152,31 @@ function parseConfig( $cfg_file ) { * '/absolute/path/logo.gif' --> /absolute/path/logo.gif * 'http://whatever/' --> http://whatever * Note removal of quotes in returned value - * + * * @param string $old_path path that has to be converted * @return string new path * @access private */ function change_to_rel_path($old_path) { - $new_path = str_replace("SM_PATH . '", "../", $old_path); + $new_path = str_replace("SM_PATH . '", "../", $old_path); $new_path = str_replace("../config/","", $new_path); $new_path = str_replace("'","", $new_path); return $new_path; } /** - * Change relative path (relative to config dir) to + * Change relative path (relative to config dir) to * internal SM_PATH, i.e.: * empty_string --> '' * ../images/logo.gif --> SM_PATH . 'images/logo.gif' * images/logo.gif --> SM_PATH . 'config/images/logo.gif' * /absolute/path/logo.gif --> '/absolute/path/logo.gif' * http://whatever/ --> 'http://whatever' - * + * * @param string $old_path path that has to be converted * @return string new path * @access private -*/ +*/ function change_to_sm_path($old_path) { if ( $old_path === '' || $old_path == "''" ) { return "''"; @@ -179,15 +185,15 @@ function change_to_sm_path($old_path) { } elseif ( preg_match("/^(\$|SM_PATH)/", $old_path) ) { return $old_path; } - + $new_path = ''; $rel_path = explode("../", $old_path); if ( count($rel_path) > 2 ) { - // Since we're relative to the config dir, + // Since we're relative to the config dir, // more than 1 ../ puts us OUTSIDE the SM tree. // get full path to config.php, then pop the filename $abs_path = explode('/', realpath (SM_PATH . 'config/config.php')); - array_pop ($abs_path); + array_pop ($abs_path); foreach ( $rel_path as $subdir ) { if ( $subdir === '' ) { array_pop ($abs_path); @@ -203,9 +209,9 @@ function change_to_sm_path($old_path) { // we're within the SM tree, prepend SM_PATH $new_path = str_replace('../',"SM_PATH . '", $old_path . "'"); } else { - // Last, if it's a relative path without a .. prefix, + // Last, if it's a relative path without a .. prefix, // we're somewhere within the config dir, so prepend - // SM_PATH . 'config/ + // SM_PATH . 'config/ $new_path = "SM_PATH . 'config/" . $old_path . "'"; } return $new_path; @@ -213,17 +219,12 @@ function change_to_sm_path($old_path) { /* ---------------------- main -------------------------- */ - -/** @ignore */ -define('SM_PATH','../../'); - -/* SquirrelMail required files. */ -require_once(SM_PATH . 'include/validate.php'); -require_once(SM_PATH . 'functions/page_header.php'); -require_once(SM_PATH . 'functions/imap.php'); -require_once(SM_PATH . 'include/load_prefs.php'); -require_once(SM_PATH . 'plugins/administrator/defines.php'); -require_once(SM_PATH . 'plugins/administrator/auth.php'); +/** main SquirrelMail include */ +require('../../include/init.php'); +/* configuration definitions */ +include_once(SM_PATH . 'plugins/administrator/defines.php'); +/* additional functions */ +include_once(SM_PATH . 'plugins/administrator/auth.php'); global $data_dir, $username; @@ -255,7 +256,7 @@ $colapse = array( 'Titles' => 'off', 'Group8' => getPref($data_dir, $username, 'adm_Group8', 'on' ), 'Group9' => getPref($data_dir, $username, 'adm_Group9', 'on' ), 'Group10' => getPref($data_dir, $username, 'adm_Group10', 'on' ), - 'Group11' => getPref($data_dir, $username, 'adm_Group10', 'on' ) ); + 'Group11' => getPref($data_dir, $username, 'adm_Group11', 'on' ) ); /* look in $_GET array for 'switch' */ if ( sqgetGlobalVar('switch', $switch, SQ_GET) ) { @@ -268,7 +269,7 @@ if ( sqgetGlobalVar('switch', $switch, SQ_GET) ) { } echo '
' . - '
'. + '
'. ''. ''. @@ -316,12 +317,16 @@ foreach ( $newcfg as $k => $v ) { $type = SMOPT_TYPE_PLUGINS; } else if ( substr( $k, 0, 13 ) == '$ldap_server[' ) { $type = SMOPT_TYPE_LDAP; + } else if ( substr( $k, 0, 9 ) == '$fontsets' || + substr( $k, 0, 13 ) == '$aTemplateSet' ) { + $type = SMOPT_TYPE_CUSTOM; } if ( $type == SMOPT_TYPE_TITLE || $colapse[$act_grp] == 'off' ) { switch ( $type ) { case SMOPT_TYPE_LDAP: + case SMOPT_TYPE_CUSTOM: case SMOPT_TYPE_PLUGINS: case SMOPT_TYPE_THEME: case SMOPT_TYPE_HIDDEN: @@ -354,8 +359,8 @@ foreach ( $newcfg as $k => $v ) { break; case SMOPT_TYPE_INTEGER: /* look for variable $e in POST, fill into $v */ - if ( sqgetGlobalVar($e, $v, SQ_POST) ) { - $v = intval( $v ); + if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) { + $v = intval( $new_v ); $newcfg[$k] = $v; } echo "\n"; break; case SMOPT_TYPE_NUMLIST: - if ( sqgetGlobalVar($e, $v, SQ_POST) ) { + if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) { + $v = $new_v; $newcfg[$k] = $v; } echo "\n"; break; case SMOPT_TYPE_STRLIST: - if ( sqgetGlobalVar($e, $v, SQ_POST) ) { - $v = '"' . $v . '"'; + if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) { + $v = '"' . $new_v . '"'; $newcfg[$k] = $v; } echo "\n"; break; case SMOPT_TYPE_STRING: - if ( sqgetGlobalVar($e, $v, SQ_POST) ) { - $v = '"' . $v . '"'; + if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) { + $v = '"' . addslashes($new_v) . '"'; $newcfg[$k] = $v; } if ( $v == '""' && isset( $defcfg[$k]['default'] ) ) { $v = "'" . $defcfg[$k]['default'] . "'"; $newcfg[$k] = $v; } - echo "\n"; break; case SMOPT_TYPE_BOOLEAN: - if ( sqgetGlobalVar($e, $v, SQ_POST) ) { + if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) { + $v = $new_v; $newcfg[$k] = $v; } else { $v = strtoupper( $v ); @@ -455,9 +466,10 @@ foreach ( $newcfg as $k => $v ) { echo "\n"; break; case SMOPT_TYPE_PATH: - if ( sqgetGlobalVar($e, $v, SQ_POST) ) { - $v = change_to_sm_path($v); - $newcfg[$k] = $v; + if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) { + // FIXME: fix use of $data_dir in $attachment_dir + $v = change_to_sm_path($new_v); + $newcfg[$k] = $v; } if ( $v == "''" && isset( $defcfg[$k]['default'] ) ) { $v = change_to_sm_path($defcfg[$k]['default']); @@ -544,9 +556,9 @@ if ( $colapse['Group8'] == 'off' ) { /* Lets get the plugins that are active */ $plugins = array(); - if ( sqgetGlobalVar('plg', $v, SQ_POST) ) { + if ( sqgetGlobalVar('plg', $v, SQ_POST) ) { foreach ( $op_plugin as $plg ) { - if ( sqgetGlobalVar("plgs_$plg", $v, SQ_POST) && $v == 'on' ) { + if ( sqgetGlobalVar("plgs_$plg", $v2, SQ_POST) && $v2 == 'on' ) { $plugins[] = $plg; } } @@ -570,7 +582,7 @@ if ( $colapse['Group8'] == 'off' ) { $i++; } } - echo ''; } else { echo '\n". - '
'. _("Configuration Administrator").'
$name". @@ -366,7 +371,8 @@ foreach ( $newcfg as $k => $v ) { echo "
$name"; @@ -385,8 +391,8 @@ foreach ( $newcfg as $k => $v ) { echo "
$name". @@ -406,35 +412,40 @@ foreach ( $newcfg as $k => $v ) { break; case SMOPT_TYPE_TEXTAREA: - if ( sqgetGlobalVar($e, $v, SQ_POST) ) { - $v = '"' . $v . '"'; + if ( sqgetGlobalVar($e, $new_v, SQ_POST) ) { + $v = '"' . addslashes($new_v) . '"'; $newcfg[$k] = str_replace( "\n", '', $v ); } - echo "
$name". - ""; + echo "
$name" + .""; if ( isset( $defcfg[$k]['comment'] ) ) { echo '   ' . $defcfg[$k]['comment']; } echo "
$name". - "'; + echo "
$name" + ."'; if ( isset( $defcfg[$k]['comment'] ) ) { echo '   ' . $defcfg[$k]['comment']; } echo "
'; + echo ''; + echo '
'; foreach ( $op_plugin as $plg ) { if ( in_array( $plg, $plugins ) ) { $sw = ' checked="checked"'; @@ -587,7 +599,7 @@ if ( $colapse['Group8'] == 'off' ) { "". "\n"; } - echo '
'. sprintf(_("Plugin directory could not be found: %s"), $plugpath). @@ -598,7 +610,7 @@ echo '

'. ''. _("Test Configuration")."
'; + '
'; /* Write the options to the file. @@ -620,9 +632,11 @@ if ( $fp = @fopen( $cfgfile, 'w' ) ) { $v = str_replace( 'array(', "array(\n\t", $v ); $v = str_replace( "',", "',\n\t", $v ); } + /* FIXME: add elseif that reverts plugins[#] to plugins[] */ fwrite( $fp, "$k = $v;\n" ); } } + // close php fwrite( $fp, '?>' ); fclose( $fp ); } else { @@ -630,5 +644,6 @@ if ( $fp = @fopen( $cfgfile, 'w' ) ) { _("Config file can't be opened. Please check config.php."). '

'; } + ?> \ No newline at end of file