Bug 418068: No way to search for "date of last comment" before/after a given date - Patch by Jesse Clark <jjclark1982@gmail.com> r/a=mkanat

This commit is contained in:
lpsolit%gmail.com 2008-02-22 00:05:10 +00:00
Родитель 41b120c0c4
Коммит 2feb45953c
1 изменённых файлов: 21 добавлений и 42 удалений

Просмотреть файл

@ -458,8 +458,8 @@ sub init {
"^cc,(?:notequals),(%\\w+%)" => \&_cc_notequals, "^cc,(?:notequals),(%\\w+%)" => \&_cc_notequals,
"^cc,(?!changed)" => \&_cc_nonchanged, "^cc,(?!changed)" => \&_cc_nonchanged,
"^long_?desc,changedby" => \&_long_desc_changedby, "^long_?desc,changedby" => \&_long_desc_changedby,
"^long_?desc,changedbefore" => \&_long_desc_changedbefore, "^long_?desc,changedbefore" => \&_long_desc_changedbefore_after,
"^long_?desc,changedafter" => \&_long_desc_changedafter, "^long_?desc,changedafter" => \&_long_desc_changedbefore_after,
"^content,matches" => \&_content_matches, "^content,matches" => \&_content_matches,
"^content," => sub { ThrowUserError("search_content_without_matches"); }, "^content," => sub { ThrowUserError("search_content_without_matches"); },
"^(?:deadline|creation_ts|delta_ts),(?:lessthan|greaterthan|equals|notequals),(?:-|\\+)?(?:\\d+)(?:[dDwWmMyY])\$" => \&_timestamp_compare, "^(?:deadline|creation_ts|delta_ts),(?:lessthan|greaterthan|equals|notequals),(?:-|\\+)?(?:\\d+)(?:[dDwWmMyY])\$" => \&_timestamp_compare,
@ -468,8 +468,8 @@ sub init {
"^long_?desc," => \&_long_desc, "^long_?desc," => \&_long_desc,
"^longdescs\.isprivate," => \&_longdescs_isprivate, "^longdescs\.isprivate," => \&_longdescs_isprivate,
"^work_time,changedby" => \&_work_time_changedby, "^work_time,changedby" => \&_work_time_changedby,
"^work_time,changedbefore" => \&_work_time_changedbefore, "^work_time,changedbefore" => \&_work_time_changedbefore_after,
"^work_time,changedafter" => \&_work_time_changedafter, "^work_time,changedafter" => \&_work_time_changedbefore_after,
"^work_time," => \&_work_time, "^work_time," => \&_work_time,
"^percentage_complete," => \&_percentage_complete, "^percentage_complete," => \&_percentage_complete,
"^bug_group,(?!changed)" => \&_bug_group_nonchanged, "^bug_group,(?!changed)" => \&_bug_group_nonchanged,
@ -1222,30 +1222,20 @@ sub _long_desc_changedby {
$$term = "$table.who = $id"; $$term = "$table.who = $id";
} }
sub _long_desc_changedbefore { sub _long_desc_changedbefore_after {
my $self = shift; my $self = shift;
my %func_args = @_; my %func_args = @_;
my ($chartid, $supptables, $term, $v) = my ($chartid, $t, $v, $supptables, $term) =
@func_args{qw(chartid supptables term v)}; @func_args{qw(chartid v supptables term)};
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
my $operator = ($$t =~ /before/) ? '<' : '>';
my $table = "longdescs_$$chartid"; my $table = "longdescs_$$chartid";
push(@$supptables, "LEFT JOIN longdescs AS $table " . push(@$supptables, "LEFT JOIN longdescs AS $table " .
"ON $table.bug_id = bugs.bug_id"); "ON $table.bug_id = bugs.bug_id " .
$$term = "$table.bug_when < " . $dbh->quote(SqlifyDate($$v)); "AND $table.bug_when $operator " .
} $dbh->quote(SqlifyDate($$v)) );
$$term = "($table.bug_when IS NOT NULL)";
sub _long_desc_changedafter {
my $self = shift;
my %func_args = @_;
my ($chartid, $supptables, $term, $v) =
@func_args{qw(chartid supptables term v)};
my $dbh = Bugzilla->dbh;
my $table = "longdescs_$$chartid";
push(@$supptables, "LEFT JOIN longdescs AS $table " .
"ON $table.bug_id = bugs.bug_id");
$$term = "$table.bug_when > " . $dbh->quote(SqlifyDate($$v));
} }
sub _content_matches { sub _content_matches {
@ -1429,32 +1419,21 @@ sub _work_time_changedby {
$$term .= ") AND ($table.work_time <> 0))"; $$term .= ") AND ($table.work_time <> 0))";
} }
sub _work_time_changedbefore { sub _work_time_changedbefore_after {
my $self = shift; my $self = shift;
my %func_args = @_; my %func_args = @_;
my ($chartid, $supptables, $v, $term) = my ($chartid, $t, $v, $supptables, $term) =
@func_args{qw(chartid supptables v term)}; @func_args{qw(chartid v supptables term)};
my $dbh = Bugzilla->dbh;
my $table = "longdescs_$$chartid";
push(@$supptables, "LEFT JOIN longdescs AS $table " .
"ON $table.bug_id = bugs.bug_id");
$$term = "(($table.bug_when < " . $dbh->quote(SqlifyDate($$v));
$$term .= ") AND ($table.work_time <> 0))";
}
sub _work_time_changedafter {
my $self = shift;
my %func_args = @_;
my ($chartid, $supptables, $v, $term) =
@func_args{qw(chartid supptables v term)};
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
my $operator = ($$t =~ /before/) ? '<' : '>';
my $table = "longdescs_$$chartid"; my $table = "longdescs_$$chartid";
push(@$supptables, "LEFT JOIN longdescs AS $table " . push(@$supptables, "LEFT JOIN longdescs AS $table " .
"ON $table.bug_id = bugs.bug_id"); "ON $table.bug_id = bugs.bug_id " .
$$term = "(($table.bug_when > " . $dbh->quote(SqlifyDate($$v)); "AND $table.work_time <> 0" .
$$term .= ") AND ($table.work_time <> 0))"; "AND $table.bug_when $operator " .
$dbh->quote(SqlifyDate($$v)) );
$$term = "($table.bug_when IS NOT NULL)";
} }
sub _work_time { sub _work_time {