]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 399070: Remove the 'timezone' parameter - Patch by Frédéric Buclin <LpSolit...
authorlpsolit%gmail.com <>
Thu, 28 Aug 2008 04:26:13 +0000 (04:26 +0000)
committerlpsolit%gmail.com <>
Thu, 28 Aug 2008 04:26:13 +0000 (04:26 +0000)
15 files changed:
Bugzilla/Config/Common.pm
Bugzilla/Config/Core.pm
Bugzilla/Template.pm
Bugzilla/Util.pm
Bugzilla/WebService/Bugzilla.pm
buglist.cgi
docs/en/xml/administration.xml
editwhines.cgi
importxml.pl
template/en/default/admin/params/core.html.tmpl
template/en/default/bug/summarize-time.html.tmpl
template/en/default/list/list.atom.tmpl
template/en/default/list/list.csv.tmpl
template/en/default/list/list.ics.tmpl
template/en/default/whine/schedule.html.tmpl

index 39fc114d669c1a649d538819e1059c04972ac57d..d105d9db8335db8b8d812f851dd8bab86e30b2b2 100644 (file)
@@ -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) {
index b307dd7f5bdf1b9fc1ac0d0ab1c33e74248211ac..6d413b965770a56846dd49d6ae0102b24463b8ba 100644 (file)
@@ -87,13 +87,6 @@ sub get_param_list {
    default => '/'
   },
 
-  {
-   name => 'timezone',
-   type => 't',
-   default => '',
-   checker => \&check_timezone
-  },
-
   {
    name => 'utf8',
    type => 'b',
index 76ff9f11d1b38e4f1a0af7c253414f58c245b80e..dbf52a97b0c671bb796e3b55a5cf2191d9af8213 100644 (file)
@@ -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
index a8c595a05ef675965e4f7b995508351e704794be..9ff810b4f424af7894b1857074e76de0cdf31398 100644 (file)
@@ -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)>
 
index af64f4e3af1f28ee24d31e8c6c84551007a73348..5196834dfb1a618aba793154f0cf244725be7ce7 100755 (executable)
@@ -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) };
index 3baeee291b33c5d53f338ca495ac6368ba00f18a..6619fdd6588e7f3f41ef8c096ad3399f780d1b7d 100755 (executable)
@@ -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'});
     }
 
index 2ed037609fcbc908cc1c2e850f259687da9dd722..77f02c0f6108544f994853d438192355454dc1e9 100644 (file)
             </listitem>
           </varlistentry>
 
-          <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
index 922fe721db57c9a96c0154a8128dd95920d83910..06717fe2c5f586a3b09c4df8643b6078875e933f 100755 (executable)
@@ -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());
index 6b0c043b4d732957f02d79b8d8e2cea7b8416f88..d2ff9cc67527a29dbc3c73650d53ba8fb2ed44d5 100755 (executable)
@@ -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";
index ae1d995fb83db3bd153e092096404c06581b5a0e..d66c4a51bd6d4443ff187a0bcbe21c71fbcc6960 100644 (file)
                 "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 " _
index b8bd0737e846e10ef911b05a5042fb100a81d61b..14ae68da264b5ab6d5dde470dca8aa04676c4c13 100644 (file)
@@ -14,8 +14,6 @@
   #                 Frédéric Buclin <LpSolit@gmail.com>
   #%]
 
-[% USE date %]
-
 [% PROCESS "global/field-descs.none.tmpl" %]
 
 [% title = "Time Summary " %]
index bfebbb8ddd712a69ba546d0edcfb6f2c4e69dc24..5086a044c66fa286f932f41a903a927ada0c87b8 100644 (file)
@@ -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 %]
index 9ce1c73f1b3d7c8799321af065f006ffddf9e18d..1a25b39079418d3a8c7531815d6102c92dd02054 100644 (file)
@@ -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' %]
index f8953d99663d26653e1aabe625541e8b9b0993c9..d30b0658cfb10b1e7813fa95f6dc82062f6f8ea4 100644 (file)
@@ -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 %]
index 8cb120dfa23f602d945c5a167e37b0238665c6fb..c60243d42c6ebd01b8ca7c07f2ca91ba0dcda858 100644 (file)
 </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">