]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/service.in
* Start using the templates for control and the fake control message
[debbugs.git] / scripts / service.in
index d71bb138c40491dc8f4690fa1bcf5d1938c1614e..b766ce0e9d51f34d7399312a128694c20d5fd30e 100755 (executable)
@@ -16,6 +16,9 @@ use Debbugs::Config qw(:globals :config);
 use Debbugs::CGI qw(html_escape);
 use Debbugs::Control qw(:archive :log);
 use Debbugs::Log qw(:misc);
+use Debbugs::Text qw(:templates);
+
+use Mail::RFC822::Address;
 
 $lib_path = $gLibPath;
 require "$lib_path/errorlib";
@@ -150,8 +153,7 @@ my $quickabort = 0;
 
 my $fuckheads = "(" . join("|", @gExcludeFromControl) . ")";
 if (@gExcludeFromControl and $replyto =~ m/$fuckheads/) {
-       &transcript("You have been specifically excluded from using the\ncontrol interface.\n\n");
-       &transcript("Have a nice day\n\n.");
+       &transcript(fill_template('excluded_from_control'));
        $quickabort = 1;
 }
 
@@ -286,7 +288,7 @@ END
            next;
         }
        if (not $indicated_user and defined $user) {
-            &transcript("User is $user");
+            &transcript("User is $user\n");
             $indicated_user = 1;
        }
        while (++$procline <= $#bodylines) {
@@ -373,7 +375,7 @@ END
            $indicated_user = 1;
         } elsif (&setbug) {
            if (not $indicated_user and defined $user) {
-                &transcript("User is $user");
+                &transcript("User is $user\n");
                 $indicated_user = 1;
            }
            &nochangebug;
@@ -564,8 +566,9 @@ END
                        my @fixed_order = sort {Debbugs::Versions::Dpkg::vercmp($a,$b);}
                             map {s{.+/}{}; $_;} @{$data->{fixed_versions}};
                        if (not @fixed_order or (Debbugs::Versions::Dpkg::vercmp($version_only,$fixed_order[-1]) >= 0)) {
+                            $action = "$gBug marked as found in version $version and reopened."
+                                 if length $data->{done};
                             $data->{done} = '';
-                            $action = "$gBug marked as found in version $version and reopened.";
                        }
                     } else {
                         # Versionless found; assume old-style "not fixed at
@@ -583,7 +586,7 @@ END
         $ref= $1;
         $version= $2;
         if (&setbug) {
-            $action= "$gBug marked as not found in version $version.";
+            $action= "$gBug no longer marked as found in version $version.";
             if (length($data->{done})) {
                 $extramessage= "(By the way, this $gBug is currently marked as done.)\n";
             }
@@ -619,7 +622,7 @@ END
         if (&setbug) {
             $action=
                  defined($version) ?
-                      "$gBug marked as not fixed in version $version." :
+                      "$gBug no longer marked as fixed in version $version." :
                            "$gBug reopened.";
                 do {
                     &addmaintainers($data);
@@ -635,7 +638,11 @@ END
         if ($ref =~ m/^-\d+$/ && defined $clonebugs{$ref}) {
             $ref = $clonebugs{$ref};
         }
-        if (&getbug) {
+       if (not Mail::RFC822::Address::valid($newsubmitter)) {
+            transcript("$newsubmitter is not a valid e-mail address; not changing submitter\n");
+            $errors++;
+       }
+        elsif (&getbug) {
             if (&checkpkglimit) {
                 &foundbug;
                 &addmaintainers($data);
@@ -1346,6 +1353,45 @@ sub sendmailmessage {
     $midix++;
 }
 
+sub fill_template{
+     my ($template,$extra_var) = @_;
+     $extra_var ||={};
+     my $variables = {config => \%config,
+                     defined($ref)?(ref    => $ref):(),
+                     defined($data)?(data  => $data):(),
+                     %{$extra_var},
+                    };
+     my $hole_var = {'&bugurl' =>
+                    sub{"$_[0]: ".
+                             'http://'.$config{cgi_domain}.'/'.
+                                  Debbugs::CGI::bug_url($_[0]);
+                   }
+                   };
+     return fill_in_template(template => $template,
+                            variables => $variables,
+                            hole_var  => $hole_var,
+                           );
+}
+
+=head2 message_body_template
+
+     message_body_template('mail/ack',{ref=>'foo'});
+
+Creates a message body using a template
+
+=cut
+
+sub message_body_template{
+     my ($template,$extra_var) = @_;
+     $extra_var ||={};
+     my $body = fill_template($template,$extra_var);
+     return fill_template('mail/message_body',
+                         {%{$extra_var},
+                          body => $body,
+                         },
+                        );
+}
+
 sub sendhelp {
         &sendtxthelpraw("bug-log-mailserver.txt","instructions for request\@$gEmailDomain");
         &sendtxthelpraw("bug-maint-mailcontrol.txt","instructions for control\@$gEmailDomain")