summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Search.pm36
-rwxr-xr-xchecksetup.pl2
2 files changed, 38 insertions, 0 deletions
diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm
index 5f0e625aa..2f92131fc 100644
--- a/Bugzilla/Search.pm
+++ b/Bugzilla/Search.pm
@@ -703,6 +703,42 @@ sub init {
push(@wherepart, "$table.dependson = bugs.bug_id");
},
+ "^owner_idle_time,(greaterthan|lessthan)" => sub {
+ my $table = "idle_" . $chartid;
+ $v =~ /^(\d+)\s*([hHdDwWmMyY])?$/;
+ my $quantity = $1;
+ my $unit = lc $2;
+ my $unitinterval = 'DAY';
+ if ($unit eq 'h') {
+ $unitinterval = 'HOUR';
+ } elsif ($unit eq 'w') {
+ $unitinterval = ' * 7 DAY';
+ } elsif ($unit eq 'm') {
+ $unitinterval = 'MONTH';
+ } elsif ($unit eq 'y') {
+ $unitinterval = 'YEAR';
+ }
+ my $cutoff = "DATE_SUB(NOW(),
+ INTERVAL $quantity $unitinterval)";
+ my $assigned_fieldid = &::GetFieldID('assigned_to');
+ push(@supptables, "LEFT JOIN longdescs comment_$table " .
+ "ON comment_$table.who = bugs.assigned_to " .
+ "AND comment_$table.bug_id = bugs.bug_id " .
+ "AND comment_$table.bug_when > $cutoff");
+ push(@supptables, "LEFT JOIN bugs_activity activity_$table " .
+ "ON (activity_$table.who = bugs.assigned_to " .
+ "OR activity_$table.fieldid = $assigned_fieldid) " .
+ "AND activity_$table.bug_id = bugs.bug_id " .
+ "AND activity_$table.bug_when > $cutoff");
+ if ($t =~ /greater/) {
+ push(@wherepart, "(comment_$table.who IS NULL " .
+ "AND activity_$table.who IS NULL)");
+ } else {
+ push(@wherepart, "(comment_$table.who IS NOT NULL " .
+ "OR activity_$table.who IS NOT NULL)");
+ }
+ $term = "0=0";
+ },
",equals" => sub {
$term = "$ff = $q";
diff --git a/checksetup.pl b/checksetup.pl
index 9d2357945..ec7e998c4 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -3897,6 +3897,8 @@ if (!$series_exists) {
}
}
+AddFDef("owner_idle_time", "Time Since Owner Touched", 0);
+
# If you had to change the --TABLE-- definition in any way, then add your
# differential change code *** A B O V E *** this comment.
#