X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=rt%2Flib%2FRT%2FReminders.pm;h=5db4dbb12b50f1d0071066f35cf220329c4d3d18;hb=187086c479a09629b7d180eec513fb7657f4e291;hp=2b663256a3dc9daa94e9c8a5b1a3bdf0128c8c4f;hpb=c24d6e2242ae0e026684b8f95decf156aba6e75e;p=freeside.git diff --git a/rt/lib/RT/Reminders.pm b/rt/lib/RT/Reminders.pm index 2b663256a..5db4dbb12 100644 --- a/rt/lib/RT/Reminders.pm +++ b/rt/lib/RT/Reminders.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2018 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -90,8 +90,8 @@ sub Collection { $col->FromSQL($query); - $col->OrderBy( FIELD => 'Due' ); - + $col->OrderByCols( { FIELD => 'Due' }, { FIELD => 'id' } ); + return($col); } @@ -116,14 +116,36 @@ sub Add { @_ ); + 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 ) ); + } + + 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); - my ( $status, $msg ) = $reminder->Create( + # 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', @@ -138,7 +160,7 @@ sub Open { my $reminder = shift; my ( $status, $msg ) = - $reminder->SetStatus( $reminder->QueueObj->Lifecycle->ReminderStatusOnOpen ); + $reminder->SetStatus( $reminder->LifecycleObj->ReminderStatusOnOpen ); $self->TicketObj->_NewTransaction( Type => 'OpenReminder', Field => 'RT::Ticket', @@ -151,7 +173,7 @@ sub Resolve { my $self = shift; my $reminder = shift; my ( $status, $msg ) = - $reminder->SetStatus( $reminder->QueueObj->Lifecycle->ReminderStatusOnResolve ); + $reminder->SetStatus( $reminder->LifecycleObj->ReminderStatusOnResolve ); $self->TicketObj->_NewTransaction( Type => 'ResolveReminder', Field => 'RT::Ticket',