For a PHP4 application, please use a 0.9.x version.'); /* Our custom error handler receives all error notices that pass the error_reporting() level set above. */ set_error_handler('pla_error_handler'); # Disable error reporting until all our required functions are loaded. error_reporting(0); /* * functions.php should have defined our pla_function_files array, listing all our * required functions (order IS important). * index.php should have checked they exist and are usable - we'll assume that the user * has been via index.php, and fixed any problems already. */ ob_start(); foreach ($pla_function_files as $file_name) { require_once realpath ($file_name); } # Now read in config_default.php, which also reads in config.php require_once realpath(LIBDIR.'config_default.php'); ob_end_clean(); # We are now ready for error reporting. error_reporting(E_DEBUG); /** * 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 $HTTP_LANG .= '.UTF-8'; 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 $language .= '.UTF-8'; 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)); } } ?>