X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Flib%2FRT%2FTicket_Overlay.pm;h=a294dcafd28fd6b4bc839ba263328d3c37d27963;hp=1ab91e28e6bdfc174ae560ff3f7bc3a46e0495c5;hb=9c68254528b6f2c7d8c1921b452fa56064783782;hpb=a513c0bef534d05f03c1242831b6f3be19b97dae diff --git a/rt/lib/RT/Ticket_Overlay.pm b/rt/lib/RT/Ticket_Overlay.pm index 1ab91e28e..a294dcafd 100644 --- a/rt/lib/RT/Ticket_Overlay.pm +++ b/rt/lib/RT/Ticket_Overlay.pm @@ -240,7 +240,7 @@ sub Load { #If it's a local URI, turn it into a ticket id - if ( $id =~ /^$RT::TicketBaseURI(\d+)$/ ) { + if ( $RT::TicketBaseURI && $id =~ /^$RT::TicketBaseURI(\d+)$/ ) { $id = $1; } @@ -440,9 +440,9 @@ sub Create { if ( $args{'Due'} ) { $Due->Set( Format => 'ISO', Value => $args{'Due'} ); } - elsif ( $QueueObj->DefaultDueIn ) { + elsif ( my $due_in = $QueueObj->DefaultDueIn ) { $Due->SetToNow; - $Due->AddDays( $QueueObj->DefaultDueIn ); + $Due->AddDays( $due_in ); } my $Starts = new RT::Date( $self->CurrentUser ); @@ -1315,6 +1315,10 @@ sub AddWatcher { @_ ); + # XXX, FIXME, BUG: if only email is provided then we only check + # for ModifyTicket right, but must try to get PrincipalId and + # check Watch* rights too if user exist + # {{{ Check ACLS #If the watcher we're trying to add is for the current user if ( $self->CurrentUser->PrincipalId eq $args{'PrincipalId'}) { @@ -1979,11 +1983,16 @@ sub SetQueue { ) ) { - $self->Untake(); + my $clone = RT::Ticket->new( $RT::SystemUser ); + $clone->Load( $self->Id ); + unless ( $clone->Id ) { + return ( 0, $self->loc("Couldn't load copy of ticket #[_1].", $self->Id) ); + } + my ($status, $msg) = $clone->SetOwner( $RT::Nobody->Id, 'Force' ); + $RT::Logger->error("Couldn't set owner on queue change: $msg") unless $status; } return ( $self->_Set( Field => 'Queue', Value => $NewQueueObj->Id() ) ); - } # }}} @@ -3018,21 +3027,21 @@ sub SetOwner { $RT::Handle->Commit(); - my ( $trans, $msg, undef ) = $self->_NewTransaction( - Type => $Type, - Field => 'Owner', - NewValue => $NewOwnerObj->Id, - OldValue => $OldOwnerObj->Id, - TimeTaken => 0 ); + ($val, $msg) = $self->_NewTransaction( + Type => $Type, + Field => 'Owner', + NewValue => $NewOwnerObj->Id, + OldValue => $OldOwnerObj->Id, + TimeTaken => 0, + ); - if ($trans) { + if ( $val ) { $msg = $self->loc( "Owner changed from [_1] to [_2]", $OldOwnerObj->Name, $NewOwnerObj->Name ); # TODO: make sure the trans committed properly } - return ( $trans, $msg ); - + return ( $val, $msg ); } # }}} @@ -3679,15 +3688,15 @@ sub CustomFieldValues { my $field = shift; if ( $field and $field !~ /^\d+$/ ) { my $cf = RT::CustomField->new( $self->CurrentUser ); - $cf->LoadByNameAndQueue( Name => $field, Queue => $self->QueueObj->Id ); + $cf->LoadByNameAndQueue( Name => $field, Queue => $self->Queue ); unless ( $cf->id ) { - $cf->LoadByNameAndQueue( Name => $field, Queue => '0' ); + $cf->LoadByNameAndQueue( Name => $field, Queue => 0 ); } - $field = $cf->id; - unless ( $field =~ /^\d+$/ ) { - # If we didn't find a valid cfid, give up. - return RT::CustomFieldValues->new($self->CurrentUser); + unless ( $cf->id ) { + # If we didn't find a valid cfid, give up. + return RT::CustomFieldValues->new($self->CurrentUser); } + $field = $cf->id; } return $self->SUPER::CustomFieldValues($field); }