]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1546624 - Add a 'everchanged' operator
authorKohei Yoshino <kohei.yoshino@gmail.com>
Thu, 25 Apr 2019 21:10:18 +0000 (17:10 -0400)
committerGitHub <noreply@github.com>
Thu, 25 Apr 2019 21:10:18 +0000 (17:10 -0400)
Bugzilla/Search.pm
template/en/default/global/field-descs.none.tmpl
template/en/default/list/list.html.tmpl
template/en/default/search/boolean-charts.html.tmpl

index a3f92901125b658e142b604fcdd327b96729a690..72fc275a455b324cc23d34df0506a8dff41f2204 100644 (file)
@@ -159,6 +159,7 @@ use constant OPERATORS => {
   anywords       => \&_anywords,
   allwords       => \&_allwords,
   nowords        => \&_nowords,
+  everchanged    => \&_everchanged,
   changedbefore  => \&_changedbefore_changedafter,
   changedafter   => \&_changedbefore_changedafter,
   changedfrom    => \&_changedfrom_changedto,
@@ -212,6 +213,7 @@ use constant NON_NUMERIC_OPERATORS => qw(
 
 # These operators ignore the entered value
 use constant NO_VALUE_OPERATORS => qw(
+  everchanged
   isempty
   isnotempty
 );
@@ -266,12 +268,14 @@ use constant OPERATOR_FIELD_OVERRIDE => {
   'flagtypes.name' => {_non_changed => \&_flagtypes_nonchanged,},
   longdesc         => {
     changedby     => \&_long_desc_changedby,
+    everchanged   => \&_long_desc_everchanged,
     changedbefore => \&_long_desc_changedbefore_after,
     changedafter  => \&_long_desc_changedbefore_after,
     _non_changed  => \&_long_desc_nonchanged,
   },
   'longdescs.count' => {
     changedby     => \&_long_desc_changedby,
+    everchanged   => \&_long_desc_everchanged,
     changedbefore => \&_long_desc_changedbefore_after,
     changedafter  => \&_long_desc_changedbefore_after,
     changedfrom   => \&_invalid_combination,
@@ -297,6 +301,7 @@ use constant OPERATOR_FIELD_OVERRIDE => {
   percentage_complete => {_non_changed => \&_percentage_complete,},
   work_time           => {
     changedby     => \&_work_time_changedby,
+    everchanged   => \&_work_time_everchanged,
     changedbefore => \&_work_time_changedbefore_after,
     changedafter  => \&_work_time_changedbefore_after,
     _default      => \&_work_time,
@@ -2617,6 +2622,12 @@ sub _long_desc_changedby {
   $args->{term} = "$table.who = $user_id";
 }
 
+sub _long_desc_everchanged {
+  my ($self, $args) = @_;
+  $self->_convert_everchanged($args);
+  $self->_long_desc_changedbefore_after($args);
+}
+
 sub _long_desc_changedbefore_after {
   my ($self, $args) = @_;
   my ($chart_id, $operator, $value, $joins)
@@ -2758,6 +2769,12 @@ sub _work_time_changedby {
   $args->{term} = "$table.who = $user_id AND $table.work_time != 0";
 }
 
+sub _work_time_everchanged {
+  my ($self, $args) = @_;
+  $self->_convert_everchanged($args);
+  $self->_work_time_changedbefore_after($args);
+}
+
 sub _work_time_changedbefore_after {
   my ($self, $args) = @_;
   my ($chart_id, $operator, $value, $joins)
@@ -3400,6 +3417,21 @@ sub _nowords {
   $args->{term} = "NOT($term)";
 }
 
+# Add support for the `everchanged` operator, which is a shortcut for
+# `changedafter`: `1970-01-01`
+sub _convert_everchanged {
+  my ($self, $args) = @_;
+  $args->{operator} = 'changedafter';
+  $args->{value}    = EMPTY_DATE;
+  $args->{quoted}   = Bugzilla->dbh->quote(EMPTY_DATE);
+}
+
+sub _everchanged {
+  my ($self, $args) = @_;
+  $self->_convert_everchanged($args);
+  $self->_changedbefore_changedafter($args);
+}
+
 sub _changedbefore_changedafter {
   my ($self, $args) = @_;
   my ($chart_id, $joins, $field, $operator, $value)
index 995841a621e54ec46f5cad7e7480a747c707b424..96e07e58ab5960b4022c16fd5cc88a6bb0997064 100644 (file)
@@ -47,6 +47,7 @@ $stash->set(
         "anywords"       => "contains any of the words",
         "allwords"       => "contains all of the words",
         "nowords"        => "contains none of the words",
+        "everchanged"    => "ever changed",
         "changedbefore"  => "changed before",
         "changedafter"   => "changed after",
         "changedfrom"    => "changed from",
index 108d6a69abfdeaf421996f1d7d4941aa40a08aaf..de71558bcce119a1184822e6dce0fe69c95712b1 100644 (file)
@@ -98,7 +98,7 @@
 
 [% SET shown_types = [
   'notequals', 'regexp', 'notregexp', 'lessthan', 'lessthaneq',
-  'greaterthan', 'greaterthaneq', 'changedbefore', 'changedafter',
+  'greaterthan', 'greaterthaneq', 'everchanged', 'changedbefore', 'changedafter',
   'changedfrom', 'changedto', 'changedby', 'notsubstring', 'nowords',
   'nowordssubstr', 'notmatches', 'isempty', 'isnotempty'
 ] %]
index 767ea756348ab3b6c23510228ee5a86c0554cee8..b386babc78fdaf99f2c10159170a1e8ff19131d4 100644 (file)
@@ -40,6 +40,7 @@
   "anywords",
   "allwords",
   "nowords",
+  "everchanged",
   "changedbefore",
   "changedafter",
   "changedfrom",