mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 03:45:46 +00:00
Can now query for a specified field being changed at a specified time,
optionally to a specified value.
This commit is contained in:
parent
9a923d2130
commit
842fd90539
@ -10,6 +10,11 @@ query the CVS tree. For example,
|
||||
will tell you what has been changed in the last week.
|
||||
|
||||
|
||||
3/22/99 Added the ability to query by fields which have changed within a date
|
||||
range. To make this perform a bit better, we need a new index:
|
||||
|
||||
alter table bugs_activity add index (field);
|
||||
|
||||
3/10/99 Added 'groups' stuff, where we have different group bits that we can
|
||||
put on a person or on a bug. Some of the group bits control access to bugzilla
|
||||
features. And a person can't access a bug unless he has every group bit set
|
||||
|
@ -23,6 +23,7 @@ use diagnostics;
|
||||
use strict;
|
||||
|
||||
require "CGI.pl";
|
||||
use Date::Parse;
|
||||
|
||||
my $serverpush = 1;
|
||||
|
||||
@ -340,6 +341,57 @@ Click the <B>Back</B> button and try again.";
|
||||
}
|
||||
}
|
||||
|
||||
my $ref = $::MFORM{'chfield'};
|
||||
|
||||
|
||||
sub SqlifyDate {
|
||||
my ($str) = (@_);
|
||||
if (!defined $str) {
|
||||
$str = "";
|
||||
}
|
||||
my $date = str2time($str);
|
||||
if (!defined $date) {
|
||||
print "The string '<tt>$str</tt>' is not a legal date.\n";
|
||||
print "<P>Please click the <B>Back</B> button and try again.\n";
|
||||
exit;
|
||||
}
|
||||
return time2str("'%Y/%m/%d %H:%M:%S'", $date);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (defined $ref && 0 < @$ref) {
|
||||
# Do surgery on the query to tell it to patch in the bugs_activity
|
||||
# table.
|
||||
$query =~ s/bugs,/bugs, bugs_activity,/;
|
||||
|
||||
my @list;
|
||||
foreach my $f (@$ref) {
|
||||
push(@list, "\nbugs_activity.field = " . SqlQuote($f));
|
||||
}
|
||||
$query .= "and bugs_activity.bug_id = bugs.bug_id and (" .
|
||||
join(' or ', @list) . ") ";
|
||||
$query .= "and bugs_activity.when >= " .
|
||||
SqlifyDate($::FORM{'chfieldfrom'}) . "\n";
|
||||
my $to = $::FORM{'chfieldto'};
|
||||
if (defined $to) {
|
||||
$to = trim($to);
|
||||
if ($to ne "" && $to !~ /^now$/i) {
|
||||
$query .= "and bugs_activity.when <= " . SqlifyDate($to) . "\n";
|
||||
}
|
||||
}
|
||||
my $value = $::FORM{'chfieldvalue'};
|
||||
if (defined $value) {
|
||||
$value = trim($value);
|
||||
if ($value ne "") {
|
||||
$query .= "and bugs_activity.newvalue = " .
|
||||
SqlQuote($value) . "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $f ("short_desc", "long_desc", "bug_file_loc",
|
||||
"status_whiteboard") {
|
||||
if (defined $::FORM{$f}) {
|
||||
|
@ -260,6 +260,7 @@ sub GenerateVersionTable {
|
||||
splice(@::log_columns, $w, 1);
|
||||
}
|
||||
}
|
||||
@::log_columns = (sort(@::log_columns));
|
||||
|
||||
@::legal_priority = SplitEnumType($cols->{"priority,type"});
|
||||
@::legal_severity = SplitEnumType($cols->{"bug_severity,type"});
|
||||
|
@ -24,7 +24,6 @@ use bugs;
|
||||
|
||||
drop table bugs_activity
|
||||
OK_ALL_DONE
|
||||
|
||||
mysql << OK_ALL_DONE
|
||||
use bugs;
|
||||
create table bugs_activity (
|
||||
@ -36,7 +35,8 @@ create table bugs_activity (
|
||||
newvalue tinytext,
|
||||
|
||||
index (bug_id),
|
||||
index (when)
|
||||
index (when),
|
||||
index (field)
|
||||
);
|
||||
|
||||
|
||||
|
@ -31,13 +31,13 @@ use vars @::legal_resolution,
|
||||
@::legal_product,
|
||||
@::legal_bug_status,
|
||||
@::legal_priority,
|
||||
@::legal_resolution,
|
||||
@::legal_opsys,
|
||||
@::legal_platform,
|
||||
@::legal_components,
|
||||
@::legal_versions,
|
||||
@::legal_severity,
|
||||
@::legal_target_milestone,
|
||||
@::log_columns,
|
||||
%::versions,
|
||||
%::components,
|
||||
%::FORM;
|
||||
@ -62,7 +62,8 @@ my %type;
|
||||
|
||||
foreach my $name ("bug_status", "resolution", "assigned_to", "rep_platform",
|
||||
"priority", "bug_severity", "product", "reporter", "op_sys",
|
||||
"component", "version",
|
||||
"component", "version", "chfield", "chfieldfrom",
|
||||
"chfieldto", "chfieldvalue",
|
||||
"email1", "emailtype1", "emailreporter1",
|
||||
"emailassigned_to1", "emailcc1", "emailqa_contact1",
|
||||
"email2", "emailtype2", "emailreporter2",
|
||||
@ -92,6 +93,11 @@ foreach my $item (split(/\&/, $::buffer)) {
|
||||
}
|
||||
|
||||
|
||||
if ($default{'chfieldto'} eq "") {
|
||||
$default{'chfieldto'} = "Now";
|
||||
}
|
||||
|
||||
|
||||
|
||||
my $namelist = "";
|
||||
|
||||
@ -375,8 +381,26 @@ $emailinput2<p>
|
||||
|
||||
|
||||
|
||||
Changed in the <NOBR>last <INPUT NAME=changedin SIZE=2 VALUE=\"$default{'changedin'}\"> days.</NOBR>
|
||||
|
||||
<NOBR>Changed in the last <INPUT NAME=changedin SIZE=2> days.</NOBR>
|
||||
<table>
|
||||
<tr>
|
||||
<td rowspan=2 align=right>Where the field(s)
|
||||
</td><td rowspan=2>
|
||||
<SELECT NAME=\"chfield\" MULTIPLE SIZE=4>
|
||||
@{[make_options(\@::log_columns, $default{'chfield'}, $type{'chfield'})]}
|
||||
</SELECT>
|
||||
</td><td rowspan=2>
|
||||
changed.
|
||||
</td><td>
|
||||
<nobr>dates <INPUT NAME=chfieldfrom SIZE=10 VALUE=\"$default{'chfieldfrom'}\"></nobr>
|
||||
<nobr>to <INPUT NAME=chfieldto SIZE=10 VALUE=\"$default{'chfieldto'}\"></nobr>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>changed to value <nobr><INPUT NAME=chfieldvalue SIZE=10> (optional)</nobr>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
|
||||
<P>
|
||||
|
Loading…
Reference in New Issue
Block a user