diff options
-rw-r--r-- | Bugzilla/Search.pm | 36 | ||||
-rwxr-xr-x | checksetup.pl | 2 |
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. # |