summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla')
-rwxr-xr-xBugzilla/Bug.pm9
-rw-r--r--Bugzilla/Search.pm58
2 files changed, 56 insertions, 11 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index df7a91553..d73bc536f 100755
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -111,13 +111,16 @@ sub initBug {
my $query = "
select
- bugs.bug_id, alias, product, version, rep_platform, op_sys, bug_status,
- resolution, priority, bug_severity, component, assigned_to, reporter,
+ bugs.bug_id, alias, products.name, version, rep_platform, op_sys, bug_status,
+ resolution, priority, bug_severity, components.name, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone, qa_contact,
status_whiteboard, date_format(creation_ts,'%Y-%m-%d %H:%i'),
groupset, delta_ts, sum(votes.count)
- from bugs left join votes using(bug_id)
+ from bugs left join votes using(bug_id),
+ products, components
where bugs.bug_id = $bug_id
+ AND products.id = bugs.product_id
+ AND components.id = bugs.component_id
group by bugs.bug_id";
&::SendSQL(&::SelectVisible($query, $user_id, $usergroupset));
diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm
index 0f311f07e..16dd493d6 100644
--- a/Bugzilla/Search.pm
+++ b/Bugzilla/Search.pm
@@ -66,13 +66,29 @@ sub init {
my @andlist;
# First, deal with all the old hard-coded non-chart-based poop.
- unshift(@supptables,
- ("profiles map_assigned_to",
- "profiles map_reporter",
- "LEFT JOIN profiles map_qa_contact ON bugs.qa_contact = map_qa_contact.userid"));
- unshift(@wherepart,
- ("bugs.assigned_to = map_assigned_to.userid",
- "bugs.reporter = map_reporter.userid"));
+ if (&::lsearch($fieldsref, 'map_assigned_to.login_name') >= 0) {
+ push @supptables, "profiles AS map_assigned_to";
+ push @wherepart, "bugs.assigned_to = map_assigned_to.userid";
+ }
+
+ if (&::lsearch($fieldsref, 'map_reporter.login_name') >= 0) {
+ push @supptables, "profiles AS map_reporter";
+ push @wherepart, "bugs.assigned_to = map_reporter.userid";
+ }
+
+ if (&::lsearch($fieldsref, 'map_qa_contact.login_name') >= 0) {
+ push @supptables, "LEFT JOIN profiles map_qa_contact ON bugs.qa_contact = map_qa_contact.userid";
+ }
+
+ if (&::lsearch($fieldsref, 'map_products.name') >= 0) {
+ push @supptables, "products AS map_products";
+ push @wherepart, "bugs.product_id = map_products.id";
+ }
+
+ if (&::lsearch($fieldsref, 'map_components.name') >= 0) {
+ push @supptables, "components AS map_components";
+ push @wherepart, "bugs.component_id = map_components.id";
+ }
my $minvotes;
if (defined $F{'votes'}) {
@@ -108,6 +124,18 @@ sub init {
}
}
+ if ($F{'product'}) {
+ push(@supptables, "products products_");
+ push(@wherepart, "products_.id = bugs.product_id");
+ push(@specialchart, ["products_.name", "anyexact", $F{'product'}]);
+ }
+
+ if ($F{'component'}) {
+ push(@supptables, "components components_");
+ push(@wherepart, "components_.id = bugs.component_id");
+ push(@specialchart, ["components_.name", "anyexact", $F{'component'}]);
+ }
+
if ($F{'keywords'}) {
my $t = $F{'keywords_type'};
if (!$t || $t eq "or") {
@@ -248,7 +276,7 @@ sub init {
my @funcdefs =
(
"^(assigned_to|reporter)," => sub {
- push(@supptables, "profiles map_$f");
+ push(@supptables, "profiles AS map_$f");
push(@wherepart, "bugs.$f = map_$f.userid");
$f = "map_$f.login_name";
},
@@ -391,6 +419,20 @@ sub init {
$f = "(to_days(now()) - to_days(bugs.delta_ts))";
},
+ "^component,(?!changed)" => sub {
+ my $table = "components_$chartid";
+ push(@supptables, "components $table");
+ push(@wherepart, "bugs.component_id = $table.id");
+ $f = $ff = "$table.name";
+ },
+
+ "^product,(?!changed)" => sub {
+ my $table = "products_$chartid";
+ push(@supptables, "products $table");
+ push(@wherepart, "bugs.product_id = $table.id");
+ $f = $ff = "$table.name";
+ },
+
"^keywords," => sub {
&::GetVersionTable();
my @list;