diff options
Diffstat (limited to 'new_bug.cgi')
-rwxr-xr-x | new_bug.cgi | 161 |
1 files changed, 82 insertions, 79 deletions
diff --git a/new_bug.cgi b/new_bug.cgi index 23b55e325..a7f3d74b8 100755 --- a/new_bug.cgi +++ b/new_bug.cgi @@ -48,84 +48,87 @@ my $vars = {}; my $dbh = Bugzilla->dbh; if (lc($cgi->request_method) eq 'post') { - my $token = $cgi->param('token'); - check_hash_token($token, ['new_bug']); - my @keywords = $cgi->param('keywords'); - my @groups = $cgi->param('groups'); - my @cc = split /\s*,\s*/, $cgi->param('cc'); - my @bug_mentor = split /\s*,\s*/, $cgi->param('bug_mentor'); - my $new_bug = Bugzilla::Bug->create({ - short_desc => scalar($cgi->param('short_desc')), - product => scalar($cgi->param('product')), - component => scalar($cgi->param('component')), - bug_severity => 'normal', - groups => \@groups, - op_sys => 'Unspecified', - rep_platform => 'Unspecified', - version => scalar( $cgi->param('version')), - keywords => \@keywords, - cc => \@cc, - comment => scalar($cgi->param('comment')), - dependson => scalar($cgi->param('dependson')), - blocked => scalar($cgi->param('blocked')), - assigned_to => scalar($cgi->param('assigned_to')), - bug_mentors => \@bug_mentor, - }); - delete_token($token); - - my $data_fh = $cgi->upload('data'); - - if ($data_fh) { - my $content_type = Bugzilla::Attachment::get_content_type(); - my $attachment; - - my $error_mode_cache = Bugzilla->error_mode; - Bugzilla->error_mode(ERROR_MODE_DIE); - my $timestamp = $dbh->selectrow_array( - 'SELECT creation_ts FROM bugs WHERE bug_id = ?', undef, $new_bug->bug_id); - eval { - $attachment = Bugzilla::Attachment->create( - {bug => $new_bug, - creation_ts => $timestamp, - data => $data_fh, - description => scalar $cgi->param('description'), - filename => $data_fh, - ispatch => 0, - isprivate => 0, - mimetype => $content_type, - }); - }; - Bugzilla->error_mode($error_mode_cache); - unless ($attachment) { - $vars->{'message'} = 'attachment_creation_failed'; - } - } - - my $recipients = { changer => $user }; - my $bug_sent = Bugzilla::BugMail::Send($new_bug->bug_id, $recipients); - $bug_sent->{type} = 'created'; - $bug_sent->{id} = $new_bug->bug_id; - my @all_mail_results = ($bug_sent); - - foreach my $dep (@{$new_bug->dependson || []}, @{$new_bug->blocked || []}) { - my $dep_sent = Bugzilla::BugMail::Send($dep, $recipients); - $dep_sent->{type} = 'dep'; - $dep_sent->{id} = $dep; - push(@all_mail_results, $dep_sent); - } - - # Sending emails for any referenced bugs. - foreach my $ref_bug_id (uniq @{ $new_bug->{see_also_changes} || [] }) { - my $ref_sent = Bugzilla::BugMail::Send($ref_bug_id, $recipients); - $ref_sent->{id} = $ref_bug_id; - push(@all_mail_results, $ref_sent); - } - - print $cgi->redirect(Bugzilla->localconfig->{urlbase} . 'show_bug.cgi?id='.$new_bug->bug_id); -} else { - print $cgi->header(); -$template->process("bug/new_bug.html.tmpl", - $vars) - or ThrowTemplateError($template->error()); + my $token = $cgi->param('token'); + check_hash_token($token, ['new_bug']); + my @keywords = $cgi->param('keywords'); + my @groups = $cgi->param('groups'); + my @cc = split /\s*,\s*/, $cgi->param('cc'); + my @bug_mentor = split /\s*,\s*/, $cgi->param('bug_mentor'); + my $new_bug = Bugzilla::Bug->create({ + short_desc => scalar($cgi->param('short_desc')), + product => scalar($cgi->param('product')), + component => scalar($cgi->param('component')), + bug_severity => 'normal', + groups => \@groups, + op_sys => 'Unspecified', + rep_platform => 'Unspecified', + version => scalar($cgi->param('version')), + keywords => \@keywords, + cc => \@cc, + comment => scalar($cgi->param('comment')), + dependson => scalar($cgi->param('dependson')), + blocked => scalar($cgi->param('blocked')), + assigned_to => scalar($cgi->param('assigned_to')), + bug_mentors => \@bug_mentor, + }); + delete_token($token); + + my $data_fh = $cgi->upload('data'); + + if ($data_fh) { + my $content_type = Bugzilla::Attachment::get_content_type(); + my $attachment; + + my $error_mode_cache = Bugzilla->error_mode; + Bugzilla->error_mode(ERROR_MODE_DIE); + my $timestamp + = $dbh->selectrow_array('SELECT creation_ts FROM bugs WHERE bug_id = ?', + undef, $new_bug->bug_id); + eval { + $attachment = Bugzilla::Attachment->create({ + bug => $new_bug, + creation_ts => $timestamp, + data => $data_fh, + description => scalar $cgi->param('description'), + filename => $data_fh, + ispatch => 0, + isprivate => 0, + mimetype => $content_type, + }); + }; + Bugzilla->error_mode($error_mode_cache); + + unless ($attachment) { + $vars->{'message'} = 'attachment_creation_failed'; + } + } + + my $recipients = {changer => $user}; + my $bug_sent = Bugzilla::BugMail::Send($new_bug->bug_id, $recipients); + $bug_sent->{type} = 'created'; + $bug_sent->{id} = $new_bug->bug_id; + my @all_mail_results = ($bug_sent); + + foreach my $dep (@{$new_bug->dependson || []}, @{$new_bug->blocked || []}) { + my $dep_sent = Bugzilla::BugMail::Send($dep, $recipients); + $dep_sent->{type} = 'dep'; + $dep_sent->{id} = $dep; + push(@all_mail_results, $dep_sent); + } + + # Sending emails for any referenced bugs. + foreach my $ref_bug_id (uniq @{$new_bug->{see_also_changes} || []}) { + my $ref_sent = Bugzilla::BugMail::Send($ref_bug_id, $recipients); + $ref_sent->{id} = $ref_bug_id; + push(@all_mail_results, $ref_sent); + } + + print $cgi->redirect( + Bugzilla->localconfig->{urlbase} . 'show_bug.cgi?id=' . $new_bug->bug_id); +} +else { + print $cgi->header(); + $template->process("bug/new_bug.html.tmpl", $vars) + or ThrowTemplateError($template->error()); } |