#
# COPYRIGHT:
#
-# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC
# <sales@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
package RT::Reminders;
-use base qw/RT::Base/;
-
-our $REMINDER_QUEUE = 'General';
+use strict;
+use warnings;
+use base 'RT::Base';
sub new {
my $class = shift;
return($self);
}
-
sub Ticket {
my $self = shift;
$self->{'_ticket'} = shift if (@_);
$self->{'_ticketobj'} = RT::Ticket->new($self->CurrentUser);
$self->{'_ticketobj'}->Load($self->Ticket);
}
- return $self->{'_ticketobj'};
+ return $self->{'_ticketobj'};
}
-
=head2 Collection
Returns an RT::Tickets object containing reminders for this object's "Ticket"
my $self = shift;
my $col = RT::Tickets->new($self->CurrentUser);
- my $query = 'Type = "reminder" AND RefersTo = "'.$self->Ticket.'"';
-
+ my $query = 'Type = "reminder" AND RefersTo = "'.$self->Ticket.'"';
+
$col->FromSQL($query);
- $col->OrderBy( FIELD => 'Due' );
-
+ $col->OrderByCols( { FIELD => 'Due' }, { FIELD => 'id' } );
+
return($col);
}
Owner
Due
-
=cut
-
sub Add {
my $self = shift;
- my %args = ( Subject => undef,
- Owner => undef,
- Due => undef,
- @_);
+ my %args = (
+ Subject => undef,
+ Owner => undef,
+ Due => undef,
+ @_
+ );
+
+ my $ticket = RT::Ticket->new($self->CurrentUser);
+ $ticket->Load($self->Ticket);
+ if ( !$ticket->id ) {
+ return ( 0, $self->loc( "Failed to load ticket [_1]", $self->Ticket ) );
+ }
- my $reminder = RT::Ticket->new($self->CurrentUser);
- $reminder->Create( Subject => $args{'Subject'},
- Owner => $args{'Owner'},
- Due => $args{'Due'},
- RefersTo => $self->Ticket,
- Type => 'reminder',
- Queue => $self->TicketObj->Queue,
-
- );
- $self->TicketObj->_NewTransaction(Type => 'AddReminder',
- Field => 'RT::Ticket',
- NewValue => $reminder->id);
+ if ( lc $ticket->Status eq 'deleted' ) {
+ return ( 0, $self->loc("Can't link to a deleted ticket") );
+ }
+ return ( 0, $self->loc('Permission Denied') )
+ unless $self->CurrentUser->HasRight(
+ Right => 'CreateTicket',
+ Object => $self->TicketObj->QueueObj,
+ )
+ && $self->CurrentUser->HasRight(
+ Right => 'ModifyTicket',
+ Object => $self->TicketObj,
+ );
+ my $reminder = RT::Ticket->new($self->CurrentUser);
+ # the 2nd return value is txn id, which is useless here
+ my ( $status, undef, $msg ) = $reminder->Create(
+ Subject => $args{'Subject'},
+ Owner => $args{'Owner'},
+ Due => $args{'Due'},
+ RefersTo => $self->Ticket,
+ Type => 'reminder',
+ Queue => $self->TicketObj->Queue,
+ Status => $self->TicketObj->QueueObj->LifecycleObj->ReminderStatusOnOpen,
+ );
+ $self->TicketObj->_NewTransaction(
+ Type => 'AddReminder',
+ Field => 'RT::Ticket',
+ NewValue => $reminder->id
+ ) if $status;
+ return ( $status, $msg );
}
-
sub Open {
my $self = shift;
- my $reminder = shift;
+ my $reminder = shift;
- $reminder->SetStatus('open');
- $self->TicketObj->_NewTransaction(Type => 'OpenReminder',
- Field => 'RT::Ticket',
- NewValue => $reminder->id);
+ my ( $status, $msg ) =
+ $reminder->SetStatus( $reminder->LifecycleObj->ReminderStatusOnOpen );
+ $self->TicketObj->_NewTransaction(
+ Type => 'OpenReminder',
+ Field => 'RT::Ticket',
+ NewValue => $reminder->id
+ ) if $status;
+ return ( $status, $msg );
}
-
sub Resolve {
my $self = shift;
my $reminder = shift;
- $reminder->SetStatus('resolved');
- $self->TicketObj->_NewTransaction(Type => 'ResolveReminder',
- Field => 'RT::Ticket',
- NewValue => $reminder->id);
+ my ( $status, $msg ) =
+ $reminder->SetStatus( $reminder->LifecycleObj->ReminderStatusOnResolve );
+ $self->TicketObj->_NewTransaction(
+ Type => 'ResolveReminder',
+ Field => 'RT::Ticket',
+ NewValue => $reminder->id
+ ) if $status;
+ return ( $status, $msg );
}
- RT::Base->_ImportOverlays();
-
+RT::Base->_ImportOverlays();
1;