[LON-CAPA-cvs] cvs: loncom /localize lonlocal.pm
raeburn
lon-capa-cvs-allow@mail.lon-capa.org
Wed, 02 Jul 2008 21:10:41 -0000
raeburn Wed Jul 2 17:10:41 2008 EDT
Modified files:
/loncom/localize lonlocal.pm
Log:
- Check the retrieved timezone is valid for the version of DateTime() on the server.
If not default to local.
Index: loncom/localize/lonlocal.pm
diff -u loncom/localize/lonlocal.pm:1.45 loncom/localize/lonlocal.pm:1.46
--- loncom/localize/lonlocal.pm:1.45 Sat May 31 19:37:49 2008
+++ loncom/localize/lonlocal.pm Wed Jul 2 17:10:41 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Localization routines
#
-# $Id: lonlocal.pm,v 1.45 2008/05/31 23:37:49 raeburn Exp $
+# $Id: lonlocal.pm,v 1.46 2008/07/02 21:10:41 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -165,6 +165,7 @@
use locale;
use POSIX qw(locale_h strftime);
use DateTime();
+use DateTime::TimeZone;
require Exporter;
@@ -267,17 +268,23 @@
# ========================================================== Localize localtime
sub gettimezone {
+ my $timezone;
if ($Apache::lonnet::env{'course.'.$Apache::lonnet::env{'request.course.id'}.'.timezone'}) {
- return $Apache::lonnet::env{'course.'.$Apache::lonnet::env{'request.course.id'}.'.timezone'};
+ $timezone = $Apache::lonnet::env{'course.'.$Apache::lonnet::env{'request.course.id'}.'.timezone'};
} elsif ($Apache::lonnet::env{'request.course.id'} ne '') {
my $cdom = $Apache::lonnet::env{'course.'.$Apache::lonnet::env{'request.course.id'}.'.domain'};
if ($cdom ne '') {
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
if ($domdefaults{'timezone_def'} ne '') {
- return $domdefaults{'timezone_def'};
+ $timezone = $domdefaults{'timezone_def'};
}
}
}
+ if ($timezone ne '') {
+ if (DateTime::TimeZone->is_valid_name($timezone)) {
+ return $timezone;
+ }
+ }
return 'local';
}