]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 313571: Duplicate "Saved Search" entries in Preferences when Saved Search is...
authorlpsolit%gmail.com <>
Fri, 23 Dec 2005 09:52:48 +0000 (09:52 +0000)
committerlpsolit%gmail.com <>
Fri, 23 Dec 2005 09:52:48 +0000 (09:52 +0000)
Bugzilla/User.pm

index 85af4fd4dfa2d0d428b8fbbdc420cf5d593901af..470d577d28d7c6426bfe1604b9a6e8beacdb6b43 100644 (file)
@@ -25,6 +25,7 @@
 #                 Shane H. W. Travis <travis@sedsystems.ca>
 #                 Max Kanat-Alexander <mkanat@bugzilla.org>
 #                 Gervase Markham <gerv@gerv.net>
+#                 Justin C. De Vries <judevries@novell.com>
 
 ################################################################################
 # Module Initialization
@@ -228,34 +229,28 @@ sub queries {
     return [] unless $self->id;
 
     my $dbh = Bugzilla->dbh;
-    my $sth = $dbh->prepare(q{ SELECT
-                             DISTINCT name, query, linkinfooter,
-                                      CASE WHEN whine_queries.id IS NOT NULL
-                                      THEN 1 ELSE 0 END,
-                                      UPPER(name) AS uppername 
-                                 FROM namedqueries
-                            LEFT JOIN whine_events
-                                   ON whine_events.owner_userid =
-                                      namedqueries.userid
-                            LEFT JOIN whine_queries
-                                   ON whine_queries.query_name =
-                                      namedqueries.name
-                                  AND whine_queries.eventid = 
-                                      whine_events.id
-                                WHERE namedqueries.userid=?
-                             ORDER BY uppername});
-    $sth->execute($self->{id});
-
-    my @queries;
-    while (my $row = $sth->fetch) {
-        push (@queries, {
-                          name         => $row->[0],
-                          query        => $row->[1],
-                          linkinfooter => $row->[2],
-                          usedinwhine  => $row->[3],
-                        });
+    my $used_in_whine_ref = $dbh->selectcol_arrayref(q{
+                    SELECT DISTINCT query_name
+                      FROM whine_events we
+                INNER JOIN whine_queries wq
+                        ON we.id = wq.eventid
+                     WHERE we.owner_userid = ?}, undef, $self->{id});
+    
+    my $queries_ref = $dbh->selectall_arrayref(q{
+                    SELECT name, query, linkinfooter
+                      FROM namedqueries 
+                     WHERE userid = ?
+                  ORDER BY UPPER(name)},{'Slice'=>{}}, $self->{id});
+
+    foreach my $name (@$used_in_whine_ref) { 
+        foreach my $queries_hash (@$queries_ref) {
+            if ($queries_hash->{name} eq $name) {
+                $queries_hash->{usedinwhine} = 1;
+                last;
+            }
+        }
     }
-    $self->{queries} = \@queries;
+    $self->{queries} = $queries_ref;
 
     return $self->{queries};
 }