MDL-42537 calendar: locale charset on windows will come from calendartype

date_format_string() will now convert date on windows based on calendar type used
This commit is contained in:
Rajesh Taneja 2013-11-01 15:55:17 +08:00
parent 5386f0bbfe
commit d61d3e82d0
5 changed files with 37 additions and 2 deletions

View File

@ -210,4 +210,11 @@ abstract class type_base {
* @return array the converted date
*/
public abstract function convert_from_gregorian($year, $month, $day, $hour = 0, $minute = 0);
/**
* This return locale for windows os.
*
* @return string locale
*/
public abstract function locale_win_charset();
}

View File

@ -305,4 +305,13 @@ class structure extends type_base {
'hour' => (int) $hour,
'minute' => (int) $minute);
}
/**
* This return locale for windows os.
*
* @return string locale
*/
public function locale_win_charset() {
return get_string('localewincharset', 'langconfig');
}
}

View File

@ -418,4 +418,13 @@ class structure extends type_base {
return $date;
}
/**
* This return locale for windows os.
*
* @return string locale
*/
public function locale_win_charset() {
return get_string('localewincharset', 'langconfig');
}
}

View File

@ -2187,8 +2187,16 @@ function userdate($date, $format = '', $timezone = 99, $fixday = true, $fixhour
*/
function date_format_string($date, $format, $tz = 99) {
global $CFG;
$localewincharset = null;
// Get the calendar type user is using.
if ($CFG->ostype == 'WINDOWS') {
$calendartype = \core_calendar\type_factory::get_calendar_instance();
$localewincharset = $calendartype->locale_win_charset();
}
if (abs($tz) > 13) {
if ($CFG->ostype == 'WINDOWS' and $localewincharset = get_string('localewincharset', 'langconfig')) {
if ($localewincharset) {
$format = core_text::convert($format, 'utf-8', $localewincharset);
$datestring = strftime($format, $date);
$datestring = core_text::convert($datestring, $localewincharset, 'utf-8');
@ -2196,7 +2204,7 @@ function date_format_string($date, $format, $tz = 99) {
$datestring = strftime($format, $date);
}
} else {
if ($CFG->ostype == 'WINDOWS' and $localewincharset = get_string('localewincharset', 'langconfig')) {
if ($localewincharset) {
$format = core_text::convert($format, 'utf-8', $localewincharset);
$datestring = gmstrftime($format, $date);
$datestring = core_text::convert($datestring, $localewincharset, 'utf-8');

View File

@ -52,6 +52,8 @@ information provided here is intended especially for developers.
* New class introduced to help auto generate zIndex values for modal dialogues. Class "moodle-has-zindex"
should set on any element which uses a non-default zindex and needs to ensure it doesn't show above a
dialogue.
* Date format locale charset for windows server will come from calendar type and for gregorian it will use
lang file.
DEPRECATIONS:
Various previously deprecated functions have now been altered to throw DEBUG_DEVELOPER debugging notices