anywords => \&_anywords,
allwords => \&_allwords,
nowords => \&_nowords,
+ everchanged => \&_everchanged,
changedbefore => \&_changedbefore_changedafter,
changedafter => \&_changedbefore_changedafter,
changedfrom => \&_changedfrom_changedto,
# These operators ignore the entered value
use constant NO_VALUE_OPERATORS => qw(
+ everchanged
isempty
isnotempty
);
'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,
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,
$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)
$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)
$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)
[% 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'
] %]