Commit 3332dda2 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 351877: Move dependson/blocked insertion into Bugzilla::Bug from post_bug.cgi

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=myk
parent 901ce06e
...@@ -249,12 +249,21 @@ sub create { ...@@ -249,12 +249,21 @@ sub create {
delete $params->{cc}; delete $params->{cc};
my $groups = $params->{groups}; my $groups = $params->{groups};
delete $params->{groups}; delete $params->{groups};
my $depends_on = $params->{dependson};
delete $params->{dependson};
my $blocked = $params->{blocked};
delete $params->{blocked};
# Set up the keyword cache for bug creation. # Set up the keyword cache for bug creation.
my $keywords = $params->{keywords}; my $keywords = $params->{keywords};
$params->{keywords} = join(', ', sort {lc($a) cmp lc($b)} $params->{keywords} = join(', ', sort {lc($a) cmp lc($b)}
map($_->name, @$keywords)); map($_->name, @$keywords));
# We don't want the bug to appear in the system until it's correctly
# protected by groups.
my $timestamp = $params->{creation_ts};
delete $params->{creation_ts};
my $bug = $class->insert_create_data($params); my $bug = $class->insert_create_data($params);
# Add the group restrictions # Add the group restrictions
...@@ -264,6 +273,9 @@ sub create { ...@@ -264,6 +273,9 @@ sub create {
$sth_group->execute($bug->bug_id, $group_id); $sth_group->execute($bug->bug_id, $group_id);
} }
$dbh->do('UPDATE bugs SET creation_ts = ? WHERE bug_id = ?', undef,
$timestamp, $bug->bug_id);
# Add the CCs # Add the CCs
my $sth_cc = $dbh->prepare('INSERT INTO cc (bug_id, who) VALUES (?,?)'); my $sth_cc = $dbh->prepare('INSERT INTO cc (bug_id, who) VALUES (?,?)');
foreach my $user_id (@$cc_ids) { foreach my $user_id (@$cc_ids) {
...@@ -277,6 +289,22 @@ sub create { ...@@ -277,6 +289,22 @@ sub create {
$sth_keyword->execute($bug->bug_id, $keyword_id); $sth_keyword->execute($bug->bug_id, $keyword_id);
} }
# Set up dependencies (blocked/dependson)
my $sth_deps = $dbh->prepare(
'INSERT INTO dependencies (blocked, dependson) VALUES (?, ?)');
foreach my $depends_on_id (@$depends_on) {
$sth_deps->execute($bug->bug_id, $depends_on_id);
# Log the reverse action on the other bug.
LogActivityEntry($depends_on_id, 'blocked', '', $bug->bug_id,
$bug->reporter->id, $timestamp);
}
foreach my $blocked_id (@$blocked) {
$sth_deps->execute($blocked_id, $bug->bug_id);
# Log the reverse action on the other bug.
LogActivityEntry($blocked_id, 'dependson', '', $bug->bug_id,
$bug->reporter->id, $timestamp);
}
return $bug; return $bug;
} }
...@@ -317,6 +345,9 @@ sub run_create_validators { ...@@ -317,6 +345,9 @@ sub run_create_validators {
$class->_check_strict_isolation($product, $params->{cc}, $class->_check_strict_isolation($product, $params->{cc},
$params->{assigned_to}, $params->{qa_contact}); $params->{assigned_to}, $params->{qa_contact});
($params->{dependson}, $params->{blocked}) =
$class->_check_dependencies($params->{dependson}, $params->{blocked});
return $params; return $params;
} }
......
...@@ -130,9 +130,6 @@ $comment = Bugzilla::Bug->_check_comment($cgi->param('comment')); ...@@ -130,9 +130,6 @@ $comment = Bugzilla::Bug->_check_comment($cgi->param('comment'));
# OK except for the fact that it causes e-mail to be suppressed. # OK except for the fact that it causes e-mail to be suppressed.
$comment = $comment ? $comment : " "; $comment = $comment ? $comment : " ";
my ($depends_on_ids, $blocks_ids) = Bugzilla::Bug->_check_dependencies(
scalar $cgi->param('dependson'), scalar $cgi->param('blocked'));
# get current time # get current time
my $timestamp = $dbh->selectrow_array(q{SELECT NOW()}); my $timestamp = $dbh->selectrow_array(q{SELECT NOW()});
...@@ -161,9 +158,11 @@ push(@bug_fields, qw( ...@@ -161,9 +158,11 @@ push(@bug_fields, qw(
qa_contact qa_contact
alias alias
blocked
bug_file_loc bug_file_loc
bug_severity bug_severity
bug_status bug_status
dependson
keywords keywords
short_desc short_desc
op_sys op_sys
...@@ -213,24 +212,6 @@ $dbh->do(q{INSERT INTO longdescs (bug_id, who, bug_when, thetext,isprivate) ...@@ -213,24 +212,6 @@ $dbh->do(q{INSERT INTO longdescs (bug_id, who, bug_when, thetext,isprivate)
VALUES (?, ?, ?, ?, ?)}, undef, ($id, $user->id, $timestamp, VALUES (?, ?, ?, ?, ?)}, undef, ($id, $user->id, $timestamp,
$comment, $privacy)); $comment, $privacy));
my @all_deps;
if (Bugzilla->user->in_group("editbugs")) {
if ($cgi->param('dependson') || $cgi->param('blocked')) {
my %deps = (dependson => $depends_on_ids, blocked => $blocks_ids);
foreach my $pair (["blocked", "dependson"], ["dependson", "blocked"]) {
my ($me, $target) = @{$pair};
my $sth_dep = $dbh->prepare(qq{
INSERT INTO dependencies ($me, $target) VALUES (?, ?)});
foreach my $i (@{$deps{$target}}) {
$sth_dep->execute($id, $i);
push(@all_deps, $i); # list for mailing dependent bugs
# Log the activity for the other bug:
LogActivityEntry($i, $me, "", $id, $user->id, $timestamp);
}
}
}
}
# All fields related to the newly created bug are set. # All fields related to the newly created bug are set.
# The bug can now be made accessible. # The bug can now be made accessible.
$dbh->do("UPDATE bugs SET creation_ts = ? WHERE bug_id = ?", $dbh->do("UPDATE bugs SET creation_ts = ? WHERE bug_id = ?",
...@@ -288,7 +269,7 @@ push (@{$vars->{'sentmail'}}, { type => 'created', ...@@ -288,7 +269,7 @@ push (@{$vars->{'sentmail'}}, { type => 'created',
id => $id, id => $id,
}); });
foreach my $i (@all_deps) { foreach my $i (@{$bug->dependson || []}, @{$bug->blocked || []}) {
push (@{$vars->{'sentmail'}}, { type => 'dep', id => $i, }); push (@{$vars->{'sentmail'}}, { type => 'dep', id => $i, });
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment