X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=plugins%2Fadministrator%2Foptions.php;h=2aace3f6b39dff3a5c5d60c36d2707c6859a2a55;hp=655562f84b61fb988a768dfa07f0eeb2c1b787da;hb=1e532e26cb164aba478840773ca0b68ebb92a148;hpb=0df03ce7ebc49bb7993dbf1d5dd4be8b9aa9138d diff --git a/plugins/administrator/options.php b/plugins/administrator/options.php index 655562f8..2aace3f6 100644 --- a/plugins/administrator/options.php +++ b/plugins/administrator/options.php @@ -1,18 +1,21 @@ /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' + * C:/absolute/win/path --> 'C:/absolute/win/path' * /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 "''"; - } elseif ( preg_match("/^(\/|http)/", $old_path) ) { - return "'" . $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, - // 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); - foreach ( $rel_path as $subdir ) { - if ( $subdir === '' ) { - array_pop ($abs_path); - } else { - array_push($abs_path, $subdir); - } - } - foreach ($abs_path as $subdir) { - $new_path .= $subdir . '/'; - } - $new_path = "'$new_path'"; - } elseif ( count($rel_path) > 1 ) { - // 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, - // we're somewhere within the config dir, so prepend - // SM_PATH . 'config/ - $new_path = "SM_PATH . 'config/" . $old_path . "'"; - } - return $new_path; + if ( $old_path === '' || $old_path == "''" ) { + return "''"; + } elseif ( preg_match("/^(\/|http)/", $old_path) || + substr($old_path,1,2) == ':/' ) { + return "'" . $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, + // 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); + foreach ( $rel_path as $subdir ) { + if ( $subdir === '' ) { + array_pop ($abs_path); + } else { + array_push($abs_path, $subdir); + } + } + foreach ($abs_path as $subdir) { + $new_path .= $subdir . '/'; + } + $new_path = "'$new_path'"; + } elseif ( count($rel_path) > 1 ) { + // 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, + // we're somewhere within the config dir, so prepend + // SM_PATH . 'config/ + $new_path = "SM_PATH . 'config/" . $old_path . "'"; + } + return $new_path; } /* ---------------------- main -------------------------- */ +/** 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'); -/** @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'); - -GLOBAL $data_dir, $username; +global $data_dir, $username; if ( !adm_check_user() ) { header('Location: ' . SM_PATH . 'src/options.php') ; exit; } -displayPageHeader($color, 'None'); +displayPageHeader($color); $newcfg = array( ); @@ -253,29 +259,29 @@ $colapse = array( 'Titles' => 'off', 'Group7' => getPref($data_dir, $username, 'adm_Group7', 'on' ), 'Group8' => getPref($data_dir, $username, 'adm_Group8', 'on' ), 'Group9' => getPref($data_dir, $username, 'adm_Group9', 'on' ), - 'Group10' => getPref($data_dir, $username, 'adm_Group10', 'on' ) ); + 'Group10' => 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) ) { if ( $colapse[$switch] == 'on' ) { - $colapse[$switch] = 'off'; + $colapse[$switch] = 'off'; } else { - $colapse[$switch] = 'on'; + $colapse[$switch] = 'on'; } setPref($data_dir, $username, "adm_$switch", $colapse[$switch] ); } echo '
'; /* Write the options to the file. */ -if( $fp = @fopen( $cfgfile, 'w' ) ) { - fwrite( $fp, " $v ) { if ( $k{0} == '$' && $v <> '' || is_int($v)) { @@ -611,9 +635,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 { @@ -621,5 +647,6 @@ if( $fp = @fopen( $cfgfile, 'w' ) ) { _("Config file can't be opened. Please check config.php."). ''; } + ?> -