summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extensions/REMO/Extension.pm47
-rw-r--r--extensions/TypeSniffer/Extension.pm3
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