* @package squirrelmail
*/
-
-
-
-
-/**
- * SquirrelMail internal version number -- DO NOT CHANGE
- * $sm_internal_version = array (release, major, minor)
- */
-
-$SQM_INTERNAL_VERSION = array(1,5,2);
-
/**
* This is a development version so in order to track programmer mistakes we
* set the error reporting to E_ALL
*/
-
error_reporting(E_ALL);
/**
* If register_globals are on, unregister globals.
* Code requires PHP 4.1.0 or newer.
+ * Second test covers boolean set as string (php_value register_globals off).
*/
-
-if ((bool) @ini_get('register_globals')) {
+if ((bool) @ini_get('register_globals') &&
+ strtolower(ini_get('register_globals'))!='off') {
/**
* Remove all globals from $_GET, $_POST, and $_COOKIE.
*/
}
}
+/**
+ * [#1518885] session.use_cookies = off breaks SquirrelMail
+ *
+ * When session cookies are not used, all http redirects, meta refreshes,
+ * src/download.php and javascript URLs are broken. Setting must be set
+ * before session is started.
+ */
+if (!(bool)ini_get('session.use_cookies') ||
+ ini_get('session.use_cookies') == 'off') {
+ ini_set('session.use_cookies','1');
+}
/**
* calculate SM_PATH and calculate the base_uri
*/
$bInit = true;
+/**
+ * This theme as a failsafe if no themes were found, or if we error
+ * out before anything could be initialised.
+ */
+$color = array();
+$color[0] = '#DCDCDC'; /* light gray TitleBar */
+$color[1] = '#800000'; /* red */
+$color[2] = '#CC0000'; /* light red Warning/Error Messages */
+$color[3] = '#A0B8C8'; /* green-blue Left Bar Background */
+$color[4] = '#FFFFFF'; /* white Normal Background */
+$color[5] = '#FFFFCC'; /* light yellow Table Headers */
+$color[6] = '#000000'; /* black Text on left bar */
+$color[7] = '#0000CC'; /* blue Links */
+$color[8] = '#000000'; /* black Normal text */
+$color[9] = '#ABABAB'; /* mid-gray Darker version of #0 */
+$color[10] = '#666666'; /* dark gray Darker version of #9 */
+$color[11] = '#770000'; /* dark red Special Folders color */
+$color[12] = '#EDEDED';
+$color[13] = '#800000'; /* (dark red) Color for quoted text -- > 1 quote */
+$color[14] = '#ff0000'; /* (red) Color for quoted text -- >> 2 or more */
+$color[15] = '#002266'; /* (dark blue) Unselectable folders */
+$color[16] = '#ff9933'; /* (orange) Highlight color */
+
require(SM_PATH . 'functions/global.php');
require(SM_PATH . 'config/config.php');
require(SM_PATH . 'functions/plugin.php');
/**
* if session.auto_start is On then close the session
- */
-$session_autostart_name = session_name();
-if ((isset($session_autostart_name) || $session_autostart_name == '') &&
- $session_autostart_name !== $session_name) {
- $cookiepath = ini_get('session.cookie_path');
- $cookiedomain = ini_get('session.cookie_domain');
+ */
+$sSessionAutostartName = session_name();
+if ((isset($sSessionAutostartName) || $sSessionAutostartName == '') &&
+ $sSessionAutostartName !== $session_name) {
+ $sCookiePath = ini_get('session.cookie_path');
+ $sCookieDomain = ini_get('session.cookie_domain');
// reset the cookie
- setcookie($session_autostart_name,'',time() - 604800,$cookiepath,$cookiedomain);
+ setcookie($sSessionAutostartName,'',time() - 604800,$sCookiePath,$sCookieDomain);
@session_destroy();
session_write_close();
-}
+}
/**
* includes from classes stored in the session
sqsession_is_active();
/**
+ * DISABLED.
* Remove globalized session data in rg=on setups
- */
-if ((bool) @ini_get('register_globals')) {
+ *
+ * Code can be utilized when session is started, but data is not loaded.
+ * We have already loaded configuration and other important vars. Can't
+ * clean session globals here.
+if ((bool) @ini_get('register_globals') &&
+ strtolower(ini_get('register_globals'))!='off') {
foreach ($_SESSION as $key => $value) {
unset($GLOBALS[$key]);
}
}
+*/
-sqsession_register($base_uri, SM_BASE_URI);
+sqsession_register(SM_BASE_URI,'base_uri');
/**
* SquirrelMail version number -- DO NOT CHANGE
*/
$version = '1.5.2 [CVS]';
+/**
+ * SquirrelMail internal version number -- DO NOT CHANGE
+ * $sm_internal_version = array (release, major, minor)
+ */
+$SQM_INTERNAL_VERSION = array(1,5,2);
+
/**
* Retrieve the language cookie
*/
switch ($sInitLocation) {
case 'style': session_write_close(); sqsetcookieflush(); break;
case 'redirect':
+ /**
+ * directory hashing functions are needed for all setups in case
+ * plugins use own pref files.
+ */
+ require(SM_PATH . 'functions/prefs.php');
+ /* hook loads custom prefs backend plugins */
$prefs_backend = do_hook_function('prefs_backend');
if (isset($prefs_backend) && !empty($prefs_backend) && file_exists(SM_PATH . $prefs_backend)) {
require(SM_PATH . $prefs_backend);
} elseif (isset($prefs_dsn) && !empty($prefs_dsn)) {
require(SM_PATH . 'functions/db_prefs.php');
} else {
- require(SM_PATH . 'functions/prefs.php');
require(SM_PATH . 'functions/file_prefs.php');
}
//nobreak;
require(SM_PATH . 'functions/display_messages.php' );
require(SM_PATH . 'functions/page_header.php');
require(SM_PATH . 'functions/html.php');
+ /**
+ * cleanup old cookies with a cookie path the same as the standard php.ini
+ * cookie path. All previous SquirrelMail version used the standard php.ini
+ * cookie path for storing the session name. That behaviour changed.
+ */
+ if ($sCookiePath !== SM_BASE_URI) {
+ /**
+ * do not delete the standard sessions with session.name is i.e. PHPSESSID
+ * because they probably belong to other php apps
+ */
+ if (ini_get('session.name') !== $sSessionAutostartName) {
+ sqsetcookie(ini_get('session.name'),'',0,$sCookiePath);
+ }
+ }
break;
default:
require(SM_PATH . 'functions/display_messages.php' );
return;
}
+ /**
+ * Initialize the template object (logout_error uses it)
+ */
+ require(SM_PATH . 'class/template/template.class.php');
+ /*
+ * $sTplDir is not initialized when a user is not logged in, so we will use
+ * the config file defaults here. If the neccesary variables are net set,
+ * force a default value.
+ */
+ $aTemplateSet = ( !isset($aTemplateSet) ? array() : $aTemplateSet );
+ $templateset_default = ( !isset($templateset_default) ? 0 : $templateset_default );
+
+ $sTplDir = ( !isset($aTemplateSet[$templateset_default]['PATH']) ?
+ SM_PATH . 'templates/default/' :
+ $aTemplateSet[$templateset_default]['PATH'] );
+ $oTemplate = new Template($sTplDir);
+
set_up_language($squirrelmail_language, true);
logout_error( _("You must be logged in to access this page.") );
exit;
$prefs_cache = false; //array();
}
+ /* see 'redirect' switch */
+ require(SM_PATH . 'functions/prefs.php');
+
$prefs_backend = do_hook_function('prefs_backend');
if (isset($prefs_backend) && !empty($prefs_backend) && file_exists(SM_PATH . $prefs_backend)) {
require(SM_PATH . $prefs_backend);
} elseif (isset($prefs_dsn) && !empty($prefs_dsn)) {
require(SM_PATH . 'functions/db_prefs.php');
} else {
- require(SM_PATH . 'functions/prefs.php');
require(SM_PATH . 'functions/file_prefs.php');
}
putenv("TZ=".$realTimeZone);
}
}
+
+ /**
+ * php 5.1.0 added time zone functions. Set time zone with them in order
+ * to prevent E_STRICT notices and allow time zone modifications in safe_mode.
+ */
+ if (function_exists('date_default_timezone_set')) {
+ if ($timeZone != SMPREF_NONE && $timeZone != "") {
+ date_default_timezone_set($timeZone);
+ } else {
+ // interface runs on server's time zone. Remove php E_STRICT complains
+ $default_timezone = @date_default_timezone_get();
+ date_default_timezone_set($default_timezone);
+ }
+ }
break;
}
/**
* Javascript support detection function
* @param boolean $reset recheck javascript support if set to true.
- * @return integer SMPREF_JS_ON or SMPREF_JS_OFF ({@see functions/constants.php})
+ * @return integer SMPREF_JS_ON or SMPREF_JS_OFF ({@see include/constants.php})
* @since 1.5.1
*/
-
function checkForJavascript($reset = FALSE) {
global $data_dir, $username, $javascript_on, $javascript_setting;
function sqm_baseuri() {
global $base_uri;
return $base_uri;
-}
\ No newline at end of file
+}