summaryrefslogtreecommitdiffstats
path: root/showdependencygraph.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'showdependencygraph.cgi')
-rwxr-xr-xshowdependencygraph.cgi94
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(