]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 365403: Prevent tags from overwriting existing saved searches - Patch by FrÃ...
authorlpsolit%gmail.com <>
Sun, 7 Jan 2007 03:55:28 +0000 (03:55 +0000)
committerlpsolit%gmail.com <>
Sun, 7 Jan 2007 03:55:28 +0000 (03:55 +0000)
buglist.cgi
template/en/default/global/user-error.html.tmpl

index e32a17dda5ee000f165a702dc862c306b50a1530..7181c219933ff3195cf2eedc741620f548759a69 100755 (executable)
@@ -212,10 +212,11 @@ sub DiffDate {
 }
 
 sub LookupNamedQuery {
-    my ($name, $sharer_id, $query_type) = @_;
+    my ($name, $sharer_id, $query_type, $throw_error) = @_;
     my $user = Bugzilla->login(LOGIN_REQUIRED);
     my $dbh = Bugzilla->dbh;
     my $owner_id;
+    $throw_error = 1 unless defined $throw_error;
 
     # $name and $sharer_id are safe -- we only use them below in SELECT
     # placeholders and then in error messages (which are always HTML-filtered).
@@ -243,9 +244,11 @@ sub LookupNamedQuery {
                                                 WHERE userid = ? AND name = ?
                                                       $extra",
                                                undef, @args);
-    defined($result)
-        || ThrowUserError("missing_query", {'queryname' => $name,
-                                            'sharer_id' => $sharer_id});
+    if (!defined($result)) {
+        return 0 unless $throw_error;
+        ThrowUserError("missing_query", {'queryname' => $name,
+                                         'sharer_id' => $sharer_id});
+    }
 
     if ($sharer_id) {
         my $group = $dbh->selectrow_array('SELECT group_id
@@ -499,7 +502,13 @@ elsif (($cgi->param('cmdtype') eq "doit") && defined $cgi->param('remtype')) {
             }
 
             my %bug_ids;
-            unless ($query_name) {
+            if ($query_name) {
+                # Make sure this name is not already in use by a normal saved search.
+                if (LookupNamedQuery($query_name, undef, QUERY_LIST, !THROW_ERROR)) {
+                    ThrowUserError('query_name_exists', {'name' => $query_name});
+                }
+            }
+            else {
                 # No new query name has been given. We retrieve bug IDs
                 # currently set in the selected saved search.
                 $query_name = $cgi->param('oldqueryname');
index 244a7f48ac8b04d530be4c5d629016b716b23d51..aebaf117816e5c6e51b5701c06f8c854300e0a31 100644 (file)
     No product specified when trying to edit components, milestones, versions
     or product.
 
+  [% ELSIF error == "query_name_exists" %]
+    [% title = "Search Name Already In Use" %]
+    The name <em>[% name FILTER html %]</em> is already used by another
+    saved search. You first have to
+    <a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
+    [%- name FILTER url_quote %]">delete</a> it if you really want to use
+    this name.
+
   [% ELSIF error == "query_name_missing" %]
     [% title = "No Search Name Specified" %]
     [% docslinks = {'list.html' => "About $terms.bug lists"} %]