Example #1
0
/**
 * Return userdata (user ID, language) based on a signed string and an accept-language string.
 * @param    string  $signed_string  JSON string, generally from a cookie, signed with an MD5 hash
 * @param    string  $accept_language_header Content of the HTTP Accept-Language request header, e.g. "en-us,en;q=0.5"
 * @return   string  Array with user ID and user language.
 */
function read_userdata($signed_string, $accept_language_header)
{
    $default_language = get_preferred_language($accept_language_header);
    if (preg_match('/^(\\w{8})$/', $signed_string)) {
        // looks like an old-style user ID cookie rather than a signed string
        //error_log("found plain username in: {$signed_string}\n", 3, dirname(__FILE__).'/../tmp/log.txt');
        return array($signed_string, $default_language);
    }
    if (preg_match('/^(.+) (\\w{32})$/', $signed_string, $m)) {
        list($encoded_value, $found_signature) = array($m[1], $m[2]);
        $expected_signature = md5($encoded_value . COOKIE_SIGNATURE);
        if ($expected_signature == $found_signature) {
            // signature checks out
            //error_log("found encoded userdata in: {$signed_string}\n", 3, dirname(__FILE__).'/../tmp/log.txt');
            $userdata = json_decode($encoded_value, true);
            $language = empty($userdata['language']) ? $default_language : $userdata['language'];
            return array($userdata['user'], $language);
        }
    }
    //error_log("found no userdata in: {$signed_string}\n", 3, dirname(__FILE__).'/../tmp/log.txt');
    return array(null, $default_language);
}
Example #2
0
            return $code;
        }
    }
    return null;
}
/**
 * Get a language variable in a specific language
 */
function custompages_get_lang($variable)
{
    return get_lang($variable, null, $_SESSION['user_language_choice']);
}
$language_file = array('courses', 'index', 'registration', 'admin', 'userInfo');
$available_langs = array('en', 'fr', 'es');
$chamilo_langs = array(null => 'english', 'en' => 'english', 'fr' => 'french', 'nl' => 'dutch', 'de' => 'german', 'es' => 'spanish');
$lang_match = $chamilo_langs[get_preferred_language($available_langs)];
// recover previous value ...
if (isset($_SESSION['user_language_choice'])) {
    $lang_match = $_SESSION['user_language_choice'];
}
// Chamilo parameter, on logout
if (isset($_REQUEST['language']) && !empty($_REQUEST['language']) && in_array($_REQUEST['language'], $chamilo_langs)) {
    $lang_match = $_REQUEST['language'];
}
// Incoming link parameter
if (isset($_REQUEST['lang']) && !empty($_REQUEST['lang']) && in_array($_REQUEST['lang'], $available_langs)) {
    $lang_match = $chamilo_langs[$_REQUEST['lang']];
}
global $_configuration;
if (isset($_configuration['auto_detect_language_custom_pages']) && $_configuration['auto_detect_language_custom_pages'] == true) {
    // Auto detect