summaryrefslogtreecommitdiff
path: root/rt/lib/RT/Ticket_Overlay.pm
diff options
context:
space:
mode:
authorivan <ivan>2008-03-03 23:07:58 +0000
committerivan <ivan>2008-03-03 23:07:58 +0000
commit479339313bbda612f8fe939217fd067999ef36d4 (patch)
treea47e2fbdc0107910bbbd3b57dc0cbfc357f76aa3 /rt/lib/RT/Ticket_Overlay.pm
parent642d85fc54b066e6364b66644b95c7b123ba8e24 (diff)
merge in rt 3.4.6. *gulp*!
Diffstat (limited to 'rt/lib/RT/Ticket_Overlay.pm')
-rw-r--r--rt/lib/RT/Ticket_Overlay.pm49
1 files changed, 29 insertions, 20 deletions
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);
}