]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 452519: Fix timezones in emails - Patch by Frédéric Buclin <LpSolit@gmail.com...
authorlpsolit%gmail.com <>
Thu, 8 Jan 2009 16:09:46 +0000 (16:09 +0000)
committerlpsolit%gmail.com <>
Thu, 8 Jan 2009 16:09:46 +0000 (16:09 +0000)
Bugzilla/Token.pm
template/en/default/account/cancel-token.txt.tmpl
template/en/default/account/email/change-new.txt.tmpl
template/en/default/account/email/change-old.txt.tmpl
template/en/default/account/email/confirm-new.html.tmpl
template/en/default/account/email/request-new.txt.tmpl
template/en/default/account/password/forgotten-password.txt.tmpl
token.cgi

index 157cc0622c3051cd1011f77f3dd849d9d80a7977..313d4321230cc478f62edda633cb8aad9ddedf68 100644 (file)
@@ -74,7 +74,7 @@ sub issue_new_user_account_token {
     my ($token, $token_ts) = _create_token(undef, 'account', $login_name);
 
     $vars->{'email'} = $login_name . Bugzilla->params->{'emailsuffix'};
-    $vars->{'token_ts'} = $token_ts;
+    $vars->{'expiration_ts'} = ctime($token_ts + MAX_TOKEN_AGE * 86400);
     $vars->{'token'} = $token;
 
     my $message;
@@ -103,10 +103,7 @@ sub IssueEmailChangeToken {
 
     $vars->{'oldemailaddress'} = $old_email . $email_suffix;
     $vars->{'newemailaddress'} = $new_email . $email_suffix;
-    
-    $vars->{'max_token_age'} = MAX_TOKEN_AGE;
-    $vars->{'token_ts'} = $token_ts;
-
+    $vars->{'expiration_ts'} = ctime($token_ts + MAX_TOKEN_AGE * 86400);
     $vars->{'token'} = $token;
     $vars->{'emailaddress'} = $old_email . $email_suffix;
 
@@ -151,8 +148,10 @@ sub IssuePasswordToken {
 
     $vars->{'token'} = $token;
     $vars->{'emailaddress'} = $user->email;
-    $vars->{'max_token_age'} = MAX_TOKEN_AGE;
-    $vars->{'token_ts'} = $token_ts;
+    $vars->{'expiration_ts'} = ctime($token_ts + MAX_TOKEN_AGE * 86400);
+    # The user is not logged in (else he wouldn't request a new password).
+    # So we have to pass this information to the template.
+    $vars->{'timezone'} = $user->timezone;
 
     my $message = "";
     $template->process("account/password/forgotten-password.txt.tmpl", 
@@ -233,6 +232,9 @@ sub Cancel {
     $vars->{'token'} = $token;
     $vars->{'tokentype'} = $tokentype;
     $vars->{'issuedate'} = $issuedate;
+    # The user is probably not logged in.
+    # So we have to pass this information to the template.
+    $vars->{'timezone'} = $user->timezone;
     $vars->{'eventdata'} = $eventdata;
     $vars->{'cancelaction'} = $cancelaction;
 
index 155c441366f1625a38c2e2632def780873316947..6619dedd3c71b059d776e14d0b6021d19a53074e 100644 (file)
@@ -37,7 +37,7 @@ to [% Param('maintainer') %] if you suspect foul play.
             Token: [% token %]
        Token Type: [% tokentype %]
              User: [% emailaddress %]
-       Issue Date: [% issuedate %]
+       Issue Date: [% issuedate FILTER time("%Y-%m-%d %H:%M:%S %Z", timezone) %]
        Event Data: [% eventdata %]
 Canceled Because: [% PROCESS cancelactionmessage %]
 
index e7f32e8d7da5f1aaaf9af744011ae4a994541ab3..5803b027473a960a21560cb60f54aa6048ac3320 100644 (file)
@@ -20,7 +20,6 @@
 
 [% PROCESS global/variables.none.tmpl %]
 
-[% expiration_ts = token_ts + (max_token_age * 86400) %]
 From: [% Param('mailfrom') %]
 To: [% emailaddress %]
 Subject: [% terms.Bugzilla %] Change Email Address Request
@@ -38,5 +37,5 @@ this request, visit the following link:
 
 [%+ urlbase %]token.cgi?t=[% token FILTER url_quote %]&a=cxlem
 
-If you do nothing, the request will lapse after [%+ max_token_age %] days
-(on [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %]).
+If you do nothing, the request will lapse after [% constants.MAX_TOKEN_AGE %] days
+(on [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %]).
index cf00ebbcfbb3dfec8f39019c30c49639e6673865..6b777442084981d7c5c67040b8789d8d07a86e3b 100644 (file)
@@ -25,7 +25,6 @@
 
 [% PROCESS global/variables.none.tmpl %]
 
-[% expiration_ts = token_ts + (max_token_age * 86400) %]
 From: [% Param('mailfrom') %]
 To: [% emailaddress %]
 Subject: [% terms.Bugzilla %] Change Email Address Request
@@ -43,5 +42,5 @@ this request, visit the following link:
 [%+ urlbase %]token.cgi?t=[% token FILTER url_quote %]&a=cxlem
 
 If you do nothing, and [%+ newemailaddress %] confirms this request,
-the change will be made permanent after [%+ max_token_age %] days
-(on [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %]).
+the change will be made permanent after [% constants.MAX_TOKEN_AGE %] days
+(on [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %]).
index 437c1b758e807636bde4ce39508e1075b5090231..ed0ff34052d5ab0bcbfda74c5b7aabdfeb97e886 100644 (file)
@@ -16,7 +16,7 @@
 [%# INTERFACE:
   # token: string. The token to be used in the user account creation.
   # email: email address of the user account.
-  # date: creation date of the token.
+  # expiration_ts: expiration date of the token.
   #%]
 
 [% title = BLOCK %]Create a new user account for '[% email FILTER html %]'[% END %]
@@ -24,7 +24,6 @@
            title = title
            onload = "document.forms['confirm_account_form'].realname.focus();" %]
 
-[% expiration_ts = date + (constants.MAX_TOKEN_AGE * 86400) %]
 <div>
   To create your account, you must enter a password in the form below.
   Your email address and Real Name (if provided) will be shown with
@@ -60,7 +59,7 @@
 
 <p>
   This account will not be created if this form is not completed by
-  <u>[%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %]</u>.
+  <u>[% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %]</u>.
 </p>
 
 <p>
index 36cd9478746077dca4a091db85c85203eb173905..c56054b94110894727af0a86e971c14321a5cf19 100644 (file)
 
 [%# INTERFACE:
   # token: random string used to authenticate the transaction.
-  # token_ts: creation date of the token.
+  # expiration_ts: expiration date of the token.
   # email: email address of the new account.
   #%]
 
 [% PROCESS global/variables.none.tmpl %]
 
-[% expiration_ts = token_ts + (constants.MAX_TOKEN_AGE * 86400) %]
 From: [% Param('mailfrom') %]
 To: [% email %]
 Subject: [% terms.Bugzilla %]: confirm account creation
@@ -31,11 +30,11 @@ X-Bugzilla-Type: admin
 using your email address ([% email %]).
 
 To continue creating an account using this email address, visit the 
-following link by [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %]:
+following link by [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %]:
 
 [%+ urlbase %]token.cgi?t=[% token FILTER url_quote %]&a=request_new_account
 
-If you did not receive this email before [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %] or
+If you did not receive this email before [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %] or
 you wish to create an account using a different email address you can begin
 again by going to:
 
index f8687cb4d743b28c569c582faf1e24bc3fe9a6c0..574975c85a9c36a18fc05595700e9f00eb59f874 100644 (file)
@@ -20,7 +20,6 @@
 
 [% PROCESS global/variables.none.tmpl %]
 
-[% expiration_ts = token_ts + (max_token_age * 86400) %]
 From: [% Param('mailfrom') %]
 To: [% emailaddress %]
 Subject:  [% terms.Bugzilla %] Change Password Request
@@ -36,6 +35,6 @@ this request, visit the following link:
 
 [%+ urlbase %]token.cgi?t=[% token FILTER url_quote %]&a=cxlpw
 
-If you do nothing, the request will lapse after [%+ max_token_age +%] days (at 
-precisely [%+ time2str("%H:%M on the %o of %B, %Y", expiration_ts) -%]) or when you 
+If you do nothing, the request will lapse after [% constants.MAX_TOKEN_AGE %] days
+(on [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z", timezone) %]) or when you
 log in successfully.
index 34a0173760625229f9649191a439b6c99da6008b..53538004267926d353cd8056cf879bb8b08f1399 100755 (executable)
--- a/token.cgi
+++ b/token.cgi
@@ -37,6 +37,7 @@ use Bugzilla::Error;
 use Bugzilla::Token;
 use Bugzilla::User;
 
+use Date::Format;
 use Date::Parse;
 
 my $dbh = Bugzilla->dbh;
@@ -351,7 +352,7 @@ sub request_create_account {
     my (undef, $date, $login_name) = Bugzilla::Token::GetTokenData($token);
     $vars->{'token'} = $token;
     $vars->{'email'} = $login_name . Bugzilla->params->{'emailsuffix'};
-    $vars->{'date'} = str2time($date);
+    $vars->{'expiration_ts'} = ctime(str2time($date) + MAX_TOKEN_AGE * 86400);
 
     # When 'ssl' equals 'always' or 'authenticated sessions', 
     # we want this form to always be over SSL.