Changed language detection code, added some small features
This commit is contained in:
95
lib.php
95
lib.php
@@ -30,7 +30,7 @@ define ('ACT_PASSWORD', 14);
|
||||
// ========== GLOBAL PAGE START CODE ==========================================
|
||||
|
||||
// global version string
|
||||
$config_version = 'v0.9';
|
||||
$config_version = 'v0.9.1';
|
||||
|
||||
// available languages
|
||||
$config_lang = array('de', 'en');
|
||||
@@ -60,6 +60,42 @@ $g_error = new MessageError;
|
||||
|
||||
$action = ACT_DEFAULT;
|
||||
|
||||
// ========== LANGUAGE FUNCTIONS ==============================================
|
||||
|
||||
function lang_getfrombrowser($allowed, $default) {
|
||||
// get browser most preferred language if possible
|
||||
if (empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
||||
return $default;
|
||||
}
|
||||
$accepted = preg_split('/,\s*/', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
||||
$current_lang = $default;
|
||||
$current_q = 0;
|
||||
foreach ($accepted as $lang) {
|
||||
$res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
|
||||
$lang, $matches);
|
||||
if (!$res) {
|
||||
continue;
|
||||
}
|
||||
$lang_code = explode ('-', $matches[1]);
|
||||
if (isset($matches[2])) {
|
||||
$lang_quality = (float)$matches[2];
|
||||
} else {
|
||||
$lang_quality = 1.0;
|
||||
}
|
||||
while (count($lang_code)) {
|
||||
if (in_array(strtolower(join ('-', $lang_code)), $allowed)) {
|
||||
if ($lang_quality > $current_q) {
|
||||
$current_lang = strtolower (join ('-', $lang_code));
|
||||
$current_q = $lang_quality;
|
||||
break;
|
||||
}
|
||||
}
|
||||
array_pop($lang_code);
|
||||
}
|
||||
}
|
||||
return $current_lang;
|
||||
}
|
||||
|
||||
// ========== FEEDBACK FUNCTIONS ==============================================
|
||||
|
||||
class Message {
|
||||
@@ -136,6 +172,13 @@ class MessageError extends Message {
|
||||
}
|
||||
}
|
||||
|
||||
function msgout(array $parameters, Smarty_Internal_Template $smarty) {
|
||||
// This is just a quick hack around missing {php} in Smarty3
|
||||
$GLOBALS['g_error']->PrintOut();
|
||||
$GLOBALS['g_warning']->PrintOut();
|
||||
$GLOBALS['g_message']->PrintOut();
|
||||
}
|
||||
|
||||
// ========== FORM FUNCTIONS ==================================================
|
||||
|
||||
function form_get_action() {
|
||||
@@ -159,7 +202,7 @@ function submit_error($action) {
|
||||
function by default. An exit() is conscious here *not* installed,
|
||||
since it could be that despite such an error the program
|
||||
execution should be continued. */
|
||||
return sprintf('The action "%s" is unknown. It is probably a program error.<br /> Please inform your administrator of the exact circumstances of how this situation came about.', strtoupper($action));
|
||||
return sprintf('The action "%s" is unknown. It is probably a program error.<br> Please inform your administrator of the exact circumstances of how this situation came about.', strtoupper($action));
|
||||
}
|
||||
|
||||
// ========== DATABASE FUCTIONS ===============================================
|
||||
@@ -261,3 +304,51 @@ function db_get_options_zone($default = NULL) {
|
||||
}
|
||||
return $options;
|
||||
}
|
||||
|
||||
// ========== MISC FUCTIONS ===================================================
|
||||
|
||||
function strip_mac($mac, $caps=true) {
|
||||
// strip mac address to 12 char string
|
||||
// strip chars we don't need
|
||||
$mac = preg_replace('/[^a-fA-F0-9]/', '', $mac);
|
||||
if ($caps) {
|
||||
$mac = strtoupper($mac);
|
||||
} else {
|
||||
$mac = strtolower($mac);
|
||||
}
|
||||
return $mac;
|
||||
}
|
||||
|
||||
function write_mac($mac, $user_mac='xx:xx:xx:xx:xx:xx') {
|
||||
// rebuild mac address using user supplied format
|
||||
|
||||
if (strlen($mac) != 12) {
|
||||
// if the MAC is empty, or for whatever reason incorrect, just return
|
||||
return $mac;
|
||||
}
|
||||
|
||||
// check format of user mac: count upper or lower char
|
||||
$chars = count_chars($user_mac, 1);
|
||||
if (array_key_exists(88, $chars) and $chars[88] == 12) {
|
||||
$pattern = '/X/';
|
||||
$mac = strtoupper($mac);
|
||||
} elseif (array_key_exists(120, $chars) and $chars[120] == 12) {
|
||||
$pattern = '/x/';
|
||||
$mac = strtolower($mac);
|
||||
} else {
|
||||
// invalid format
|
||||
return $mac;
|
||||
}
|
||||
|
||||
for($i=0; $i<12; $i++) {
|
||||
$user_mac = preg_replace($pattern, $mac[$i], $user_mac, 1);
|
||||
}
|
||||
|
||||
return $user_mac;
|
||||
}
|
||||
|
||||
function header_location($location) {
|
||||
// redirect page
|
||||
header('location:' . $location);
|
||||
exit;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user