From 45aea99cbc8a4fb8abd7502af28d1bd9e8b4ef3a Mon Sep 17 00:00:00 2001 From: "terry%mozilla.org" <> Date: Mon, 24 Jan 2000 04:31:48 +0000 Subject: Named queries (and the default query) are now stored server side, in the database, rather than in cookies. This means you have to log in to use these features, but I have plans that require them to be server-side. (Besides, some people were beginning to run out of cookie space.) --- query.cgi | 196 ++++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 132 insertions(+), 64 deletions(-) (limited to 'query.cgi') diff --git a/query.cgi b/query.cgi index 2abb98a42..0b6d0b67b 100755 --- a/query.cgi +++ b/query.cgi @@ -56,84 +56,134 @@ if (defined $::FORM{"GoAheadAndLogIn"}) { # We got here from a login page, probably from relogin.cgi. We better # make sure the password is legit. confirm_login(); +} else { + quietly_check_login(); +} +my $userid = 0; +if (defined $::COOKIE{"Bugzilla_login"}) { + $userid = DBNameToIdAndCheck($::COOKIE{"Bugzilla_login"}); } -if ($::FORM{'nukedefaultquery'}) { - print "Set-Cookie: DEFAULTQUERY= ; path=/; expires=Sun, 30-Jun-80 00:00:00 GMT\n"; - delete $::COOKIE{"DEFAULTQUERY"}; - $::buffer = ""; +# Backwards compatability hack -- if there are any of the old QUERY_* +# cookies around, and we are logged in, then move them into the database +# and nuke the cookie. +if ($userid) { + my @oldquerycookies; + foreach my $i (keys %::COOKIE) { + if ($i =~ /^QUERY_(.*)$/) { + push(@oldquerycookies, [$1, $i, $::COOKIE{$i}]); + } + } + if (defined $::COOKIE{'DEFAULTQUERY'}) { + push(@oldquerycookies, [$::defaultqueryname, 'DEFAULTQUERY', + $::COOKIE{'DEFAULTQUERY'}]); + } + if (@oldquerycookies) { + foreach my $ref (@oldquerycookies) { + my ($name, $cookiename, $value) = (@$ref); + if ($value) { + my $qname = SqlQuote($name); + SendSQL("SELECT query FROM namedqueries " . + "WHERE userid = $userid AND name = $qname"); + my $query = FetchOneColumn(); + if (!$query) { + SendSQL("REPLACE INTO namedqueries " . + "(userid, name, query) VALUES " . + "($userid, $qname, " . SqlQuote($value) . ")"); + } + } + print "Set-Cookie: $cookiename= ; path=/ ; expires=Sun, 30-Jun-1980 00:00:00 GMT\n"; + } + } } + -my $userdefaultquery = 1; -if (!defined $::COOKIE{"DEFAULTQUERY"}) { - $userdefaultquery = 0; - $::COOKIE{"DEFAULTQUERY"} = Param("defaultquery"); -} -if (!defined $::buffer || $::buffer eq "") { - $::buffer = $::COOKIE{"DEFAULTQUERY"}; +if ($::FORM{'nukedefaultquery'}) { + if ($userid) { + SendSQL("DELETE FROM namedqueries " . + "WHERE userid = $userid AND name = '$::defaultqueryname'"); + } + $::buffer = ""; } -use vars qw(%default); -my %type; -foreach my $name ("bug_status", "resolution", "assigned_to", "rep_platform", - "priority", "bug_severity", "product", "reporter", "op_sys", - "component", "version", "chfield", "chfieldfrom", - "chfieldto", "chfieldvalue", - "email1", "emailtype1", "emailreporter1", - "emailassigned_to1", "emailcc1", "emailqa_contact1", - "emaillongdesc1", - "email2", "emailtype2", "emailreporter2", - "emailassigned_to2", "emailcc2", "emailqa_contact2", - "emaillongdesc2", - "changedin", "votes", "short_desc", "short_desc_type", - "long_desc", "long_desc_type", "bug_file_loc", - "bug_file_loc_type", "status_whiteboard", - "status_whiteboard_type", "keywords") { - $default{$name} = ""; - $type{$name} = 0; +my $userdefaultquery; +if ($userid) { + SendSQL("SELECT query FROM namedqueries " . + "WHERE userid = $userid AND name = '$::defaultqueryname'"); + $userdefaultquery = FetchOneColumn(); } +my %default; +my %type; -foreach my $item (split(/\&/, $::buffer)) { - my @el = split(/=/, $item); - my $name = $el[0]; - my $value; - if ($#el > 0) { - $value = url_decode($el[1]); - } else { - $value = ""; +sub ProcessFormStuff { + my ($buf) = (@_); + my $foundone = 0; + foreach my $name ("bug_status", "resolution", "assigned_to", + "rep_platform", "priority", "bug_severity", + "product", "reporter", "op_sys", + "component", "version", "chfield", "chfieldfrom", + "chfieldto", "chfieldvalue", + "email1", "emailtype1", "emailreporter1", + "emailassigned_to1", "emailcc1", "emailqa_contact1", + "emaillongdesc1", + "email2", "emailtype2", "emailreporter2", + "emailassigned_to2", "emailcc2", "emailqa_contact2", + "emaillongdesc2", + "changedin", "votes", "short_desc", "short_desc_type", + "long_desc", "long_desc_type", "bug_file_loc", + "bug_file_loc_type", "status_whiteboard", + "status_whiteboard_type", "keywords") { + $default{$name} = ""; + $type{$name} = 0; } - if (defined $default{$name}) { - if ($default{$name} ne "") { - $default{$name} .= "|$value"; - $type{$name} = 1; + + + foreach my $item (split(/\&/, $buf)) { + my @el = split(/=/, $item); + my $name = $el[0]; + my $value; + if ($#el > 0) { + $value = url_decode($el[1]); } else { - $default{$name} = $value; + $value = ""; + } + if (defined $default{$name}) { + $foundone = 1; + if ($default{$name} ne "") { + $default{$name} .= "|$value"; + $type{$name} = 1; + } else { + $default{$name} = $value; + } } } + return $foundone; } - -if ($default{'chfieldto'} eq "") { - $default{'chfieldto'} = "Now"; -} +if (!ProcessFormStuff($::buffer)) { + # Ah-hah, there was no form stuff specified. Do it again with the + # default query. + if ($userdefaultquery) { + ProcessFormStuff($userdefaultquery); + } else { + ProcessFormStuff(Param("defaultquery")); + } +} -my $namelist = ""; + -foreach my $i (sort (keys %::COOKIE)) { - if ($i =~ /^QUERY_/) { - if ($::COOKIE{$i} ne "") { - my $name = substr($i, 6); - $namelist .= "