diff options
-rw-r--r-- | extensions/REMO/Extension.pm | 47 | ||||
-rw-r--r-- | extensions/TypeSniffer/Extension.pm | 3 |
2 files changed, 49 insertions, 1 deletions
diff --git a/extensions/REMO/Extension.pm b/extensions/REMO/Extension.pm index a0091281b..166cac4f5 100644 --- a/extensions/REMO/Extension.pm +++ b/extensions/REMO/Extension.pm @@ -181,4 +181,51 @@ sub _remo_form_payment { } } +sub post_bug_after_creation { + my ($self, $args) = @_; + my $vars = $args->{vars}; + my $bug = $vars->{bug}; + my $template = Bugzilla->template; + + if (Bugzilla->input_params->{format} eq 'remo-swag') { + # If the attachment cannot be successfully added to the bug, + # we notify the user, but we don't interrupt the bug creation process. + my $error_mode_cache = Bugzilla->error_mode; + Bugzilla->error_mode(ERROR_MODE_DIE); + + my $attachment; + eval { + my $xml; + $template->process("bug/create/create-remo-swag.xml.tmpl", {}, \$xml) + || ThrowTemplateError($template->error()); + + $attachment = Bugzilla::Attachment->create( + { bug => $bug, + creation_ts => $bug->creation_ts, + data => $xml, + description => 'Remo Swag Request (XML)', + filename => 'remo-swag.xml', + ispatch => 0, + isprivate => 0, + isurl => 0, + mimetype => 'text/xml', + store_in_file => 0, + }); + }; + + if ($attachment) { + # Insert comment for attachment + $bug->add_comment('', { isprivate => 0, + type => CMT_ATTACHMENT_CREATED, + extra_data => $attachment->id }); + $bug->update($bug->creation_ts); + } + else { + $vars->{'message'} = 'attachment_creation_failed'; + } + + Bugzilla->error_mode($error_mode_cache); + } +} + __PACKAGE__->NAME; diff --git a/extensions/TypeSniffer/Extension.pm b/extensions/TypeSniffer/Extension.pm index fcd4f7dd6..49488c9ad 100644 --- a/extensions/TypeSniffer/Extension.pm +++ b/extensions/TypeSniffer/Extension.pm @@ -39,7 +39,8 @@ sub attachment_process_data { # If we have autodetected application/octet-stream from the Content-Type # header, let's have a better go using a sniffer. - if ($params->{'contenttypemethod'} eq 'autodetect' && + if ($params->{'contenttypemethod'} && + $params->{'contenttypemethod'} eq 'autodetect' && $attributes->{'mimetype'} eq 'application/octet-stream') { # data is either a filehandle, or the data itself |