diff options
Diffstat (limited to 'showdependencygraph.cgi')
-rwxr-xr-x | showdependencygraph.cgi | 94 |
1 files changed, 41 insertions, 53 deletions
diff --git a/showdependencygraph.cgi b/showdependencygraph.cgi index 162dd2afb..0726760b9 100755 --- a/showdependencygraph.cgi +++ b/showdependencygraph.cgi @@ -96,6 +96,8 @@ sub AddLink { } } +ThrowCodeError("missing_bug_id") if !defined $cgi->param('id'); + # The list of valid directions. Some are not proposed in the dropdrown # menu despite the fact that they are valid. my @valid_rankdirs = ('LR', 'RL', 'TB', 'BT'); @@ -109,10 +111,6 @@ if (!grep { $_ eq $rankdir } @valid_rankdirs) { my $display = $cgi->param('display') || 'tree'; my $webdotdir = bz_locations()->{'webdotdir'}; -if (!defined $cgi->param('id') && $display ne 'doall') { - ThrowCodeError("missing_bug_id"); -} - my ($fh, $filename) = File::Temp::tempfile("XXXXXXXXXX", SUFFIX => '.dot', DIR => $webdotdir, @@ -132,64 +130,54 @@ node [URL="${urlbase}show_bug.cgi?id=\\N", style=filled, color=lightgrey] my %baselist; -if ($display eq 'doall') { - my $dependencies = $dbh->selectall_arrayref( - "SELECT blocked, dependson FROM dependencies"); +foreach my $i (split('[\s,]+', $cgi->param('id'))) { + my $bug = Bugzilla::Bug->check($i); + $baselist{$bug->id} = 1; +} + +my @stack = keys(%baselist); - foreach my $dependency (@$dependencies) { - my ($blocked, $dependson) = @$dependency; - AddLink($blocked, $dependson, $fh); - } -} else { - foreach my $i (split('[\s,]+', $cgi->param('id'))) { - my $bug = Bugzilla::Bug->check($i); - $baselist{$bug->id} = 1; - } +if ($display eq 'web') { + my $sth = $dbh->prepare(q{SELECT blocked, dependson + FROM dependencies + WHERE blocked = ? OR dependson = ?}); - my @stack = keys(%baselist); - - if ($display eq 'web') { - my $sth = $dbh->prepare(q{SELECT blocked, dependson - FROM dependencies - WHERE blocked = ? OR dependson = ?}); - - foreach my $id (@stack) { - my $dependencies = $dbh->selectall_arrayref($sth, undef, ($id, $id)); - foreach my $dependency (@$dependencies) { - my ($blocked, $dependson) = @$dependency; - if ($blocked != $id && !exists $seen{$blocked}) { - push @stack, $blocked; - } - if ($dependson != $id && !exists $seen{$dependson}) { - push @stack, $dependson; - } - AddLink($blocked, $dependson, $fh); + foreach my $id (@stack) { + my $dependencies = $dbh->selectall_arrayref($sth, undef, ($id, $id)); + foreach my $dependency (@$dependencies) { + my ($blocked, $dependson) = @$dependency; + if ($blocked != $id && !exists $seen{$blocked}) { + push @stack, $blocked; } + if ($dependson != $id && !exists $seen{$dependson}) { + push @stack, $dependson; + } + AddLink($blocked, $dependson, $fh); } } - # This is the default: a tree instead of a spider web. - else { - my @blocker_stack = @stack; - foreach my $id (@blocker_stack) { - my $blocker_ids = Bugzilla::Bug::EmitDependList('blocked', 'dependson', $id); - foreach my $blocker_id (@$blocker_ids) { - push(@blocker_stack, $blocker_id) unless $seen{$blocker_id}; - AddLink($id, $blocker_id, $fh); - } +} +# This is the default: a tree instead of a spider web. +else { + my @blocker_stack = @stack; + foreach my $id (@blocker_stack) { + my $blocker_ids = Bugzilla::Bug::EmitDependList('blocked', 'dependson', $id); + foreach my $blocker_id (@$blocker_ids) { + push(@blocker_stack, $blocker_id) unless $seen{$blocker_id}; + AddLink($id, $blocker_id, $fh); } - my @dependent_stack = @stack; - foreach my $id (@dependent_stack) { - my $dep_bug_ids = Bugzilla::Bug::EmitDependList('dependson', 'blocked', $id); - foreach my $dep_bug_id (@$dep_bug_ids) { - push(@dependent_stack, $dep_bug_id) unless $seen{$dep_bug_id}; - AddLink($dep_bug_id, $id, $fh); - } + } + my @dependent_stack = @stack; + foreach my $id (@dependent_stack) { + my $dep_bug_ids = Bugzilla::Bug::EmitDependList('dependson', 'blocked', $id); + foreach my $dep_bug_id (@$dep_bug_ids) { + push(@dependent_stack, $dep_bug_id) unless $seen{$dep_bug_id}; + AddLink($dep_bug_id, $id, $fh); } } +} - foreach my $k (keys(%baselist)) { - $seen{$k} = 1; - } +foreach my $k (keys(%baselist)) { + $seen{$k} = 1; } my $sth = $dbh->prepare( |