diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 94409c2a924..e31feea8741 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -2300,6 +2300,30 @@ function moodle_needs_upgrading() { /// MISCELLANEOUS //////////////////////////////////////////////////////////////////// +function moodle_setlocale($locale='') { + + global $SESSION, $USER, $CFG; + + if ($locale) { + $CFG->locale = $locale; + } else if (!empty($CFG->courselang) and ($CFG->courselang != $CFG->lang) ) { + $CFG->locale = get_string('locale'); + } else if (!empty($SESSION->lang) and ($SESSION->lang != $CFG->lang) ) { + $CFG->locale = get_string('locale'); + } else if (!empty($USER->lang) and ($USER->lang != $CFG->lang) ) { + $CFG->locale = get_string('locale'); + } else if (empty($CFG->locale)) { + $CFG->locale = get_string('locale'); + set_config('locale', $CFG->locale); // cache it to save lookups in future + } + setlocale (LC_TIME, $CFG->locale); + setlocale (LC_COLLATE, $CFG->locale); + + if ($CFG->locale != 'tr_TR') { // To workaround a well-known PHP bug with Turkish + setlocale (LC_CTYPE, $CFG->locale); + } +} + function moodle_strtolower ($string, $encoding='') { /// Converts string to lowercase using most compatible function available if (function_exists('mb_strtolower')) { diff --git a/lib/setup.php b/lib/setup.php index fe6c9db7746..ecce1a2226e 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -224,20 +224,8 @@ if (empty($CFG->lang)) { $CFG->lang = "en"; } - if (!empty($SESSION->lang) and ($SESSION->lang != $CFG->lang) ) { - $CFG->locale = get_string('locale'); - } else if (!empty($USER->lang) and ($USER->lang != $CFG->lang) ) { - $CFG->locale = get_string('locale'); - } else if (empty($CFG->locale)) { - $CFG->locale = get_string('locale'); - set_config('locale', $CFG->locale); // cache it to save lookups in future - } - setlocale (LC_TIME, $CFG->locale); - setlocale (LC_COLLATE, $CFG->locale); - if ($CFG->locale != 'tr_TR') { // To workaround a well-known PHP bug with Turkish - setlocale (LC_CTYPE, $CFG->locale); - } + moodle_setlocale(); if (!empty($CFG->opentogoogle)) { if (empty($_SESSION['USER'])) { diff --git a/lib/weblib.php b/lib/weblib.php index ba5070c7593..667023a321e 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -965,11 +965,15 @@ function print_header ($title="", $heading="", $navigation="", $focus="", $meta= if (!empty($CFG->unicode)) { $encoding = "utf-8"; - } else if (!empty($SESSION->encoding) and empty($CFG->courselang)) { - $encoding = $SESSION->encoding; - } else { + } else if (!empty($CFG->courselang)) { $encoding = get_string("thischarset"); - $SESSION->encoding = $encoding; + moodle_setlocale(); + } else { + if (!empty($SESSION->encoding)) { + $encoding = $SESSION->encoding; + } else { + $SESSION->encoding = $encoding = get_string("thischarset"); + } } $meta = "\n$meta\n"; @@ -1930,6 +1934,24 @@ function print_time_selector($hour, $minute, $currenttime=0, $step=5) { choose_from_menu($minutes, $minute, $currentdate['minutes'], ""); } +function print_timer_selector($timelimit = 0, $unit = "") { +/// Prints time limit value selector + + global $CFG; + + if ($unit) { + $unit = ' '.$unit; + } + + // Max timelimit is sessiontimeout - 10 minutes. + $maxvalue = ($CFG->sessiontimeout / 60) - 10; + + for ($i=1; $i<=$maxvalue; $i++) { + $minutes[$i] = $i.$unit; + } + choose_from_menu($minutes, "timelimit", $timelimit, get_string("none")); +} + function print_grade_menu($courseid, $name, $current, $includenograde=true) { /// Prints a grade menu (as part of an existing form) with help /// Showing all possible numerical grades and scales