= '5') { # E_DEBUG is PHP5 specific and prevents warnings about using 'var' to declare class members error_reporting(E_DEBUG); } else # For PHP4 error_reporting(E_ALL); /** * At this point we have read all our additional function PHP files and our configuration. */ # Check our custom variables. $config->CheckCustom(); if (pla_session_start()) run_hook('post_session_init',array()); /* * Language configuration. Auto or specified? * Shall we attempt to auto-determine the language? */ $language = $config->GetValue('appearance','language'); if ($language == 'auto') { # Make sure their browser correctly reports language. If not, skip this. if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { # Get the languages which are spetcified in the HTTP header $HTTP_LANGS = preg_split ('/[;,]+/',$_SERVER['HTTP_ACCEPT_LANGUAGE']); foreach ($HTTP_LANGS as $key => $value) { if (substr($value,0,2) == 'q=') { unset($HTTP_LANGS[$key]); continue; } $value = preg_split('/[-]+/',$value); if (sizeof($value) == 2) $HTTP_LANGS[$key] = strtolower($value[0]).'_'.strtoupper($value[1]); else $HTTP_LANGS[$key] = auto_lang(strtolower($value[0])); } $HTTP_LANGS = array_unique($HTTP_LANGS); foreach ($HTTP_LANGS as $HTTP_LANG) { # Try to grab one after the other the language file $language_file = LANGDIR.$HTTP_LANG; if ((substr($HTTP_LANG,0,2) == 'en') || (file_exists($language_file) && is_readable($language_file))) { # Set language putenv('LANG='.$HTTP_LANG); # e.g. LANG=de_DE setlocale(LC_ALL,$HTTP_LANG); # set LC_ALL to de_DE bindtextdomain('messages',LANGDIR); bind_textdomain_codeset('messages','UTF-8'); textdomain('messages'); header('Content-type: text/html; charset=UTF-8',true); break; } } } } else { # Grab the language file configured in config.php if ($language != null) { if (strcmp($language,'english') == 0) $language = 'en_GB'; $language_file = LANGDIR.$language; # Set language putenv('LANG='.$language); # e.g. LANG=de_DE setlocale(LC_ALL,$language); # set LC_ALL to de_DE bindtextdomain('messages',LANGDIR); bind_textdomain_codeset('messages','UTF-8'); textdomain('messages'); header('Content-type: text/html; charset=UTF-8', true); } } # If config.php doesn't create the templates array, create it here. if (! isset($templates) || ! is_array($templates)) $templates = array(); # Always including the 'custom' template (the most generic and flexible) $templates['custom'] = array('desc' => 'Custom', 'icon' => 'images/object.png', 'handler' => 'custom.php'); /* * Strip slashes from GET, POST, and COOKIE variables if this * PHP install is configured to automatically addslashes() */ if (get_magic_quotes_gpc() && (! isset($slashes_stripped) || ! $slashes_stripped)) { array_stripslashes($_REQUEST); array_stripslashes($_GET); array_stripslashes($_POST); array_stripslashes($_COOKIE); $slashes_stripped = true; } /* * Update $_SESSION['activity'] * for timeout and automatic logout feature */ if (isset($_REQUEST['server_id'])) { $ldapserver = $ldapservers->Instance($_REQUEST['server_id']); if ($ldapserver->haveAuthInfo()) set_lastactivity($ldapserver); } /** * Timer stopwatch, used to instrument PLA */ function stopwatch() { static $mt_previous = 0; list($usec, $sec) = explode(' ',microtime()); $mt_current = (float)$usec + (float)$sec; if (! $mt_previous) { $mt_previous = $mt_current; return 0; } else { $mt_diff = ($mt_current - $mt_previous); $mt_previous = $mt_current; return sprintf('%.5f',$mt_diff); } } /** * This function will convert the browser two character language into the * default 5 character language, where the country portion should NOT be * assumed to be upper case characters of the first two characters. */ function auto_lang($lang) { switch ($lang) { case 'ja': return 'ja_JP'; default: return sprintf('%s_%s',$lang,strtoupper($lang)); } } ?>