X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Flib%2FRT%2FReminders.pm;h=fcd7c267e908555f0bacc0124c3d3682264fc749;hp=f99fbf7c1b2fdb5ad46e9b5f0e071ffe68c826ff;hb=919e930aa9279b3c5cd12b593889cd6de79d67bf;hpb=ef20b2b6b1feb47ad02b5ff7525f1a0fd11d0fa4 diff --git a/rt/lib/RT/Reminders.pm b/rt/lib/RT/Reminders.pm index f99fbf7c1..fcd7c267e 100644 --- a/rt/lib/RT/Reminders.pm +++ b/rt/lib/RT/Reminders.pm @@ -1,40 +1,40 @@ # BEGIN BPS TAGGED BLOCK {{{ -# +# # COPYRIGHT: -# -# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC -# -# +# +# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC +# +# # (Except where explicitly superseded by other copyright notices) -# -# +# +# # LICENSE: -# +# # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have # been provided with this software, but in any event can be snarfed # from www.gnu.org. -# +# # This work is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/copyleft/gpl.html. -# -# +# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. +# +# # CONTRIBUTION SUBMISSION POLICY: -# +# # (The following paragraph is not intended to limit the rights granted # to you to modify and distribute this software under the terms of # the GNU General Public License and is only of importance to you if # you choose to contribute your changes and enhancements to the # community by submitting them to Best Practical Solutions, LLC.) -# +# # By intentionally submitting any modifications, corrections or # derivatives to this work, or any other work intended for use with # Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,14 +43,15 @@ # royalty-free, perpetual, license to use, copy, create derivative # works based on those contributions, and sublicense and distribute # those contributions and any derivatives thereof. -# +# # END BPS TAGGED BLOCK }}} -package RT::Reminders; -use base qw/RT::Base/; +package RT::Reminders; -our $REMINDER_QUEUE = 'General'; +use strict; +use warnings; +use base 'RT::Base'; sub new { my $class = shift; @@ -60,7 +61,6 @@ sub new { return($self); } - sub Ticket { my $self = shift; $self->{'_ticket'} = shift if (@_); @@ -73,10 +73,9 @@ sub TicketObj { $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" @@ -87,10 +86,11 @@ sub Collection { my $self = shift; my $col = RT::Tickets->new($self->CurrentUser); - my $query = 'Queue = "'. $self->TicketObj->QueueObj->Name .'" AND Type = "reminder"'; - $query .= ' AND RefersTo = "'.$self->Ticket.'"'; - + my $query = 'Type = "reminder" AND RefersTo = "'.$self->Ticket.'"'; + $col->FromSQL($query); + + $col->OrderBy( FIELD => 'Due' ); return($col); } @@ -105,63 +105,72 @@ Takes Owner Due - =cut - sub Add { my $self = shift; - my %args = ( Subject => undef, - Owner => undef, - Due => undef, - @_); - - 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); + 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 ) ); + } + if ( lc $ticket->Status eq 'deleted' ) { + return ( 0, $self->loc("Can't link to a deleted ticket") ); + } + my $reminder = RT::Ticket->new($self->CurrentUser); + my ( $status, $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->Lifecycle->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->QueueObj->Lifecycle->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->QueueObj->Lifecycle->ReminderStatusOnResolve ); + $self->TicketObj->_NewTransaction( + Type => 'ResolveReminder', + Field => 'RT::Ticket', + NewValue => $reminder->id + ) if $status; + return ( $status, $msg ); } - eval "require RT::Reminders_Vendor"; - if ($@ && $@ !~ qr{^Can't locate RT/Reminders_Vendor.pm}) { - die $@; - }; - - eval "require RT::Reminders_Local"; - if ($@ && $@ !~ qr{^Can't locate RT/Reminders_Local.pm}) { - die $@; - }; - +RT::Base->_ImportOverlays(); 1;