$Ticket->SUPER::SetPriority($value);
}
+=head2 Touch
+
+Creates a Touch transaction (a null transaction). Like Comment and
+Correspond but without any content.
+
+=cut
+
+sub Touch {
+ my $self = shift;
+ my %args = (
+ TimeTaken => 0,
+ ActivateScrips => 1,
+ CommitScrips => 1,
+ CustomFields => {},
+ @_
+ );
+ unless ( $self->CurrentUserHasRight('ModifyTicket')
+ or $self->CurrentUserHasRight('CommentOnTicket')
+ or $self->CurrentUserHasRight('ReplyToTicket')) {
+ return ( 0, $self->loc("Permission Denied"));
+ }
+ $self->_NewTransaction(
+ Type => 'Touch',
+ TimeTaken => $args{'TimeTaken'},
+ ActivateScrips => $args{'ActivateScrips'},
+ CommitScrips => $args{'CommitScrips'},
+ CustomFields => $args{'CustomFields'},
+ );
+}
+
+
+=head2 MissingRequiredFields {
+
+Return all custom fields with the Required flag set for which this object
+doesn't have any non-empty values.
+
+=cut
+
+sub MissingRequiredFields {
+ my $self = shift;
+ my $CustomFields = $self->CustomFields;
+ my @results;
+ while ( my $CF = $CustomFields->Next ) {
+ next if !$CF->Required;
+ if ( !length($self->FirstCustomFieldValue($CF->Id) || '') ) {
+ push @results, $CF;
+ }
+ }
+ return @results;
+}
+
+# Declare the 'WillResolve' field
+sub _VendorAccessible {
+ {
+ WillResolve =>
+ {read => 1, write => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''},
+ },
+};
+
+sub WillResolveObj {
+ my $self = shift;
+
+ my $time = new RT::Date( $self->CurrentUser );
+
+ if ( my $willresolve = $self->WillResolve ) {
+ $time->Set( Format => 'sql', Value => $willresolve );
+ }
+ else {
+ $time->Set( Format => 'unix', Value => -1 );
+ }
+
+ return $time;
+}
+
+sub WillResolveAsString {
+ my $self = shift;
+ return $self->WillResolveObj->AsString();
+}
+
+
1;