summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Config/Common.pm11
-rw-r--r--Bugzilla/Config/Core.pm7
-rw-r--r--Bugzilla/Template.pm5
-rw-r--r--Bugzilla/Util.pm20
-rwxr-xr-xBugzilla/WebService/Bugzilla.pm4
-rwxr-xr-xbuglist.cgi19
-rw-r--r--docs/en/xml/administration.xml12
-rwxr-xr-xeditwhines.cgi1
-rwxr-xr-ximportxml.pl3
-rw-r--r--template/en/default/admin/params/core.html.tmpl4
-rw-r--r--template/en/default/bug/summarize-time.html.tmpl2
-rw-r--r--template/en/default/list/list.atom.tmpl9
-rw-r--r--template/en/default/list/list.csv.tmpl3
-rw-r--r--template/en/default/list/list.ics.tmpl6
-rw-r--r--template/en/default/whine/schedule.html.tmpl6
15 files changed, 32 insertions, 80 deletions
diff --git a/Bugzilla/Config/Common.pm b/Bugzilla/Config/Common.pm
index 39fc114d6..d105d9db8 100644
--- a/Bugzilla/Config/Common.pm
+++ b/Bugzilla/Config/Common.pm
@@ -35,7 +35,6 @@ package Bugzilla::Config::Common;
use strict;
use Socket;
-use Time::Zone;
use Bugzilla::Util;
use Bugzilla::Constants;
@@ -49,7 +48,7 @@ use base qw(Exporter);
check_sslbase check_priority check_severity check_platform
check_opsys check_shadowdb check_urlbase check_webdotbase
check_netmask check_user_verify_class check_image_converter
- check_mail_delivery_method check_notification check_timezone check_utf8
+ check_mail_delivery_method check_notification check_utf8
check_bug_status check_smtp_auth
);
@@ -327,14 +326,6 @@ sub check_notification {
return "";
}
-sub check_timezone {
- my $tz = shift;
- unless (defined(tz_offset($tz))) {
- return "must be empty or a legal timezone name, such as PDT or JST";
- }
- return "";
-}
-
sub check_smtp_auth {
my $username = shift;
if ($username) {
diff --git a/Bugzilla/Config/Core.pm b/Bugzilla/Config/Core.pm
index b307dd7f5..6d413b965 100644
--- a/Bugzilla/Config/Core.pm
+++ b/Bugzilla/Config/Core.pm
@@ -88,13 +88,6 @@ sub get_param_list {
},
{
- name => 'timezone',
- type => 't',
- default => '',
- checker => \&check_timezone
- },
-
- {
name => 'utf8',
type => 'b',
default => '0',
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index 76ff9f11d..dbf52a97b 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -45,7 +45,6 @@ use Bugzilla::Template::Parser;
use Cwd qw(abs_path);
use MIME::Base64;
-# for time2str - replace by TT Date plugin??
use Date::Format ();
use File::Basename qw(dirname);
use File::Find;
@@ -605,10 +604,10 @@ sub create {
# Format a time for display (more info in Bugzilla::Util)
time => [ sub {
- my ($context, $format) = @_;
+ my ($context, $format, $timezone) = @_;
return sub {
my $time = shift;
- return format_time($time, $format);
+ return format_time($time, $format, $timezone);
};
},
1
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm
index a8c595a05..9ff810b4f 100644
--- a/Bugzilla/Util.pm
+++ b/Bugzilla/Util.pm
@@ -51,6 +51,7 @@ use Bugzilla::Constants;
use Date::Parse;
use Date::Format;
use DateTime;
+use DateTime::TimeZone;
use Text::Wrap;
# This is from the perlsec page, slightly modified to remove a warning
@@ -397,7 +398,7 @@ sub wrap_hard {
}
sub format_time {
- my ($date, $format) = @_;
+ my ($date, $format, $timezone) = @_;
# If $format is undefined, try to guess the correct date format.
if (!defined($format)) {
@@ -429,8 +430,9 @@ sub format_time {
# Use the timezone specified by the server.
time_zone => Bugzilla->local_timezone});
- # Now display the date using the user's timezone.
- $dt->set_time_zone(Bugzilla->user->timezone);
+ # Now display the date using the given timezone,
+ # or the user's timezone if none is given.
+ $dt->set_time_zone($timezone || Bugzilla->user->timezone);
$date = $dt->strftime($format);
}
else {
@@ -875,15 +877,13 @@ A string.
=item C<format_time($time)>
-Takes a time, converts it to the desired format and appends the timezone
-as defined in editparams.cgi, if desired. This routine will be expanded
-in the future to adjust for user preferences regarding what timezone to
-display times in.
+Takes a time and converts it to the desired format and timezone.
+If no format is given, the routine guesses the correct one and returns
+an empty array if it cannot. If no timezone is given, the user's timezone
+is used, as defined in his preferences.
This routine is mainly called from templates to filter dates, see
-"FILTER time" in Templates.pm. In this case, $format is undefined and
-the routine has to "guess" the date format that was passed to $dbh->sql_date_format().
-
+"FILTER time" in L<Bugzilla::Template>.
=item C<format_time_decimal($time)>
diff --git a/Bugzilla/WebService/Bugzilla.pm b/Bugzilla/WebService/Bugzilla.pm
index af64f4e3a..5196834df 100755
--- a/Bugzilla/WebService/Bugzilla.pm
+++ b/Bugzilla/WebService/Bugzilla.pm
@@ -23,7 +23,7 @@ use base qw(Bugzilla::WebService);
use Bugzilla::Constants;
use Bugzilla::Hook;
-use Time::Zone;
+use DateTime;
# Basic info that is needed before logins
use constant LOGIN_EXEMPT => {
@@ -51,7 +51,7 @@ sub extensions {
sub timezone {
my $self = shift;
- my $offset = tz_offset();
+ my $offset = Bugzilla->local_timezone->offset_for_datetime(DateTime->now());
$offset = (($offset / 60) / 60) * 100;
$offset = sprintf('%+05d', $offset);
return { timezone => $self->type('string', $offset) };
diff --git a/buglist.cgi b/buglist.cgi
index 3baeee291..6619fdd65 100755
--- a/buglist.cgi
+++ b/buglist.cgi
@@ -204,18 +204,17 @@ foreach my $chart (@charts) {
# Utilities
################################################################################
-local our @weekday= qw( Sun Mon Tue Wed Thu Fri Sat );
sub DiffDate {
my ($datestr) = @_;
my $date = str2time($datestr);
my $age = time() - $date;
- my ($s,$m,$h,$d,$mo,$y,$wd)= localtime $date;
+
if( $age < 18*60*60 ) {
- $date = sprintf "%02d:%02d:%02d", $h,$m,$s;
+ $date = format_time($datestr, '%H:%M:%S');
} elsif( $age < 6*24*60*60 ) {
- $date = sprintf "%s %02d:%02d", $weekday[$wd],$h,$m;
+ $date = format_time($datestr, '%a %H:%M');
} else {
- $date = sprintf "%04d-%02d-%02d", 1900+$y,$mo+1,$d;
+ $date = format_time($datestr, '%Y-%m-%d');
}
return $date;
}
@@ -1077,16 +1076,12 @@ while (my @row = $buglist_sth->fetchrow_array()) {
$bug->{'changeddate'} =~
s/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/$1-$2-$3 $4:$5:$6/;
- # Put in the change date as a time, so that the template date plugin
- # can format the date in any way needed by the template. ICS and Atom
- # have specific, and different, date and time formatting.
- $bug->{'changedtime'} = str2time($bug->{'changeddate'}, Bugzilla->params->{'timezone'});
- $bug->{'changeddate'} = DiffDate($bug->{'changeddate'});
+ $bug->{'changedtime'} = $bug->{'changeddate'}; # for iCalendar and Atom
+ $bug->{'changeddate'} = DiffDate($bug->{'changeddate'});
}
if ($bug->{'opendate'}) {
- # Put in the open date as a time for the template date plugin.
- $bug->{'opentime'} = str2time($bug->{'opendate'}, Bugzilla->params->{'timezone'});
+ $bug->{'opentime'} = $bug->{'opendate'}; # for iCalendar
$bug->{'opendate'} = DiffDate($bug->{'opendate'});
}
diff --git a/docs/en/xml/administration.xml b/docs/en/xml/administration.xml
index 2ed037609..77f02c0f6 100644
--- a/docs/en/xml/administration.xml
+++ b/docs/en/xml/administration.xml
@@ -147,18 +147,6 @@
<varlistentry>
<term>
- timezone
- </term>
- <listitem>
- <para>
- Timezone of server. The timezone is displayed with timestamps. If
- this parameter is left blank, the timezone is not displayed.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
utf8
</term>
<listitem>
diff --git a/editwhines.cgi b/editwhines.cgi
index 922fe721d..06717fe2c 100755
--- a/editwhines.cgi
+++ b/editwhines.cgi
@@ -426,6 +426,7 @@ while (my ($query) = $sth->fetchrow_array) {
push @{$vars->{'available_queries'}}, $query;
}
$vars->{'token'} = issue_session_token('edit_whine');
+$vars->{'local_timezone'} = Bugzilla->local_timezone->short_name_for_datetime(DateTime->now());
$template->process("whine/schedule.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
diff --git a/importxml.pl b/importxml.pl
index 6b0c043b4..d2ff9cc67 100755
--- a/importxml.pl
+++ b/importxml.pl
@@ -571,8 +571,7 @@ sub process_bug {
my $comments;
$comments .= "\n\n--- Bug imported by $exporter_login ";
- $comments .= time2str( "%Y-%m-%d %H:%M", time ) . " ";
- $comments .= $params->{'timezone'};
+ $comments .= format_time(localtime(time()), '%Y-%m-%d %H:%M %Z') . " ";
$comments .= " ---\n\n";
$comments .= "This bug was previously known as _bug_ $bug_fields{'bug_id'} at ";
$comments .= $urlbase . "show_bug.cgi?id=" . $bug_fields{'bug_id'} . "\n";
diff --git a/template/en/default/admin/params/core.html.tmpl b/template/en/default/admin/params/core.html.tmpl
index ae1d995fb..d66c4a51b 100644
--- a/template/en/default/admin/params/core.html.tmpl
+++ b/template/en/default/admin/params/core.html.tmpl
@@ -60,10 +60,6 @@
"all sites served by this web server or virtual host to read " _
"$terms.Bugzilla cookies.",
- timezone => "The timezone that your database server lives in, " _
- "such as UTC, PDT or JST. If set to '', " _
- "then the timezone will not be displayed with the timestamps.",
-
utf8 => "Use UTF-8 (Unicode) encoding for all text in ${terms.Bugzilla}. New " _
"installations should set this to true to avoid character encoding " _
"problems. <strong>Existing databases should set this to true " _
diff --git a/template/en/default/bug/summarize-time.html.tmpl b/template/en/default/bug/summarize-time.html.tmpl
index b8bd0737e..14ae68da2 100644
--- a/template/en/default/bug/summarize-time.html.tmpl
+++ b/template/en/default/bug/summarize-time.html.tmpl
@@ -14,8 +14,6 @@
# Frédéric Buclin <LpSolit@gmail.com>
#%]
-[% USE date %]
-
[% PROCESS "global/field-descs.none.tmpl" %]
[% title = "Time Summary " %]
diff --git a/template/en/default/list/list.atom.tmpl b/template/en/default/list/list.atom.tmpl
index bfebbb8dd..5086a044c 100644
--- a/template/en/default/list/list.atom.tmpl
+++ b/template/en/default/list/list.atom.tmpl
@@ -24,7 +24,6 @@
#%]
[% PROCESS global/variables.none.tmpl %]
-[% USE date %]
[% DEFAULT title = "$terms.Bugzilla $terms.Bugs" %]
@@ -37,9 +36,8 @@
<link rel="self" type="application/atom+xml"
href="[% urlbase FILTER html %]buglist.cgi?
[%- urlquerypart FILTER xml %]"/>
- <updated>[% date.format(format=>"%Y-%m-%dT%H:%M:%SZ",
- time=>bugs.nsort('changedtime').last.changedtime,
- gmt=>1) FILTER xml %]</updated>
+ <updated>[% bugs.nsort('changedtime').last.changedtime FILTER time("%Y-%m-%dT%H:%M:%SZ", "UTC")
+ FILTER xml %]</updated>
<id>[% urlbase FILTER html %]buglist.cgi?[% urlquerypart FILTER xml %]</id>
[% FOREACH bug = bugs %]
@@ -52,8 +50,7 @@
<author>
<name>[% bug.reporter_realname FILTER xml %]</name>
</author>
- <updated>[% date.format(format=>"%Y-%m-%dT%H:%M:%SZ",time=>bug.changedtime,
- gmt=>1) FILTER xml %]</updated>
+ <updated>[% bug.changedtime FILTER time("%Y-%m-%dT%H:%M:%SZ", "UTC") FILTER xml %]</updated>
<summary type="html">
[%# Filter out the entire block, so that we don't need to escape the html code out %]
[% FILTER xml %]
diff --git a/template/en/default/list/list.csv.tmpl b/template/en/default/list/list.csv.tmpl
index 9ce1c73f1..1a25b3907 100644
--- a/template/en/default/list/list.csv.tmpl
+++ b/template/en/default/list/list.csv.tmpl
@@ -20,7 +20,6 @@
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
-[% USE date %]
[% colsepchar = user.settings.csv_colsepchar.value %]
@@ -35,7 +34,7 @@ bug_id
[% colsepchar %]
[% IF column == "opendate" OR column == "changeddate" %]
[% rawcolumn = column.replace("date", "time") %]
- [% bug.$column = date.format(bug.$rawcolumn, "%Y-%m-%d %H:%M:%S") %]
+ [% bug.$column = bug.$rawcolumn FILTER time("%Y-%m-%d %H:%M:%S") %]
[% ELSIF column == 'bug_status' %]
[% bug.$column = get_status(bug.$column) %]
[% ELSIF column == 'resolution' %]
diff --git a/template/en/default/list/list.ics.tmpl b/template/en/default/list/list.ics.tmpl
index f8953d996..d30b0658c 100644
--- a/template/en/default/list/list.ics.tmpl
+++ b/template/en/default/list/list.ics.tmpl
@@ -31,7 +31,7 @@ BEGIN:VTODO
[%+ PROCESS ics_status bug_status = bug.bug_status +%]
[%+ PROCESS ics_dtstamp +%]
[% IF bug.changeddate %]
-[%+ time2str("%Y%m%dT%H%M%SZ", bug.changedtime, "UTC") FILTER ics('LAST-MODIFIED') +%]
+[%+ bug.changedtime FILTER time("%Y%m%dT%H%M%SZ", "UTC") FILTER ics('LAST-MODIFIED') +%]
[% END %]
[% IF bug.percentage_complete %]
[%+ bug.percentage_complete FILTER format('%d') FILTER ics('PERCENT-COMPLETE') +%]
@@ -65,11 +65,11 @@ END:VCALENDAR
[% END %]
[% BLOCK ics_dtstart %]
- [% time2str("%Y%m%dT%H%M%SZ", bug.opentime, "UTC") FILTER ics('DTSTART') %]
+ [% bug.opentime FILTER time("%Y%m%dT%H%M%SZ", "UTC") FILTER ics('DTSTART') %]
[% END %]
[% BLOCK ics_dtstamp %]
- [% time2str("%Y%m%dT%H%M%SZ", currenttime, "UTC") FILTER ics('DTSTAMP') %]
+ [% currenttime FILTER time("%Y%m%dT%H%M%SZ", "UTC") FILTER ics('DTSTAMP') %]
[% END %]
[% BLOCK ics_status %]
diff --git a/template/en/default/whine/schedule.html.tmpl b/template/en/default/whine/schedule.html.tmpl
index 8cb120dfa..c60243d42 100644
--- a/template/en/default/whine/schedule.html.tmpl
+++ b/template/en/default/whine/schedule.html.tmpl
@@ -71,11 +71,7 @@
</p>
<p>
- [% IF Param("timezone") %]
- All times are server local time ([% Param("timezone") FILTER upper %]).
- [% ELSE %]
- All times are server local time.
- [% END %]
+ All times are server local time ([% local_timezone FILTER html %]).
</p>
<form method="post" action="editwhines.cgi">