X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FTransaction.pm;h=52f3abff431f90717e3a4abb2ae6d7b14f4399ed;hb=44dd00a3ff974a17999e86e64488e996edc71e3c;hp=44175d49fb83b89fe23bdee538dc4fedce64de1f;hpb=7322f2afedcc2f427e997d1535a503613a83f088;p=freeside.git diff --git a/rt/lib/RT/Transaction.pm b/rt/lib/RT/Transaction.pm index 44175d49f..52f3abff4 100755 --- a/rt/lib/RT/Transaction.pm +++ b/rt/lib/RT/Transaction.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -1316,7 +1316,43 @@ sub _FormatUser { } else { return ("Reminder completed"); #loc() } - } + }, + AddMember => sub { + my $self = shift; + my $principal = RT::Principal->new($self->CurrentUser); + $principal->Load($self->Field); + + if ($principal->IsUser) { + return ("Added user '[_1]'", $principal->Object->Name); #loc() + } + else { + return ("Added group '[_1]'", $principal->Object->Name); #loc() + } + }, + DeleteMember => sub { + my $self = shift; + my $principal = RT::Principal->new($self->CurrentUser); + $principal->Load($self->Field); + + if ($principal->IsUser) { + return ("Removed user '[_1]'", $principal->Object->Name); #loc() + } + else { + return ("Removed group '[_1]'", $principal->Object->Name); #loc() + } + }, + AddMembership => sub { + my $self = shift; + my $principal = RT::Principal->new($self->CurrentUser); + $principal->Load($self->Field); + return ("Added to group '[_1]'", $principal->Object->Name); #loc() + }, + DeleteMembership => sub { + my $self = shift; + my $principal = RT::Principal->new($self->CurrentUser); + $principal->Load($self->Field); + return ("Removed from group '[_1]'", $principal->Object->Name); #loc() + }, ); @@ -2047,6 +2083,9 @@ sub Serialize { my $cf = RT::CustomField->new( RT->SystemUser ); $cf->Load( $store{Field} ); $store{Field} = \($cf->UID); + + $store{OldReference} = \($self->OldReferenceObject->UID) if $self->OldReference; + $store{NewReference} = \($self->NewReferenceObject->UID) if $self->NewReference; } elsif ($type =~ /^(Take|Untake|Force|Steal|Give)$/) { for my $field (qw/OldValue NewValue/) { my $user = RT::User->new( RT->SystemUser ); @@ -2065,19 +2104,45 @@ sub Serialize { if ($store{OldValue}) { my $base = RT::URI->new( $self->CurrentUser ); $base->FromURI( $store{OldValue} ); - $store{OldValue} = \($base->Object->UID) if $base->Resolver and $base->Object; + if ($base->Resolver && (my $object = $base->Object)) { + if ($args{serializer}->Observe(object => $object)) { + $store{OldValue} = \($object->UID); + } + elsif ($args{serializer}{HyperlinkUnmigrated}) { + $store{OldValue} = $base->AsHREF; + } + else { + $store{OldValue} = "(not migrated)"; + } + } } } elsif ($type eq "AddLink") { if ($store{NewValue}) { my $base = RT::URI->new( $self->CurrentUser ); $base->FromURI( $store{NewValue} ); - $store{NewValue} = \($base->Object->UID) if $base->Resolver and $base->Object; + if ($base->Resolver && (my $object = $base->Object)) { + if ($args{serializer}->Observe(object => $object)) { + $store{NewValue} = \($object->UID); + } + elsif ($args{serializer}{HyperlinkUnmigrated}) { + $store{NewValue} = $base->AsHREF; + } + else { + $store{NewValue} = "(not migrated)"; + } + } } } elsif ($type eq "Set" and $store{Field} eq "Queue") { for my $field (qw/OldValue NewValue/) { my $queue = RT::Queue->new( RT->SystemUser ); $queue->Load( $store{$field} ); - $store{$field} = \($queue->UID); + if ($args{serializer}->Observe(object => $queue)) { + $store{$field} = \($queue->UID); + } + else { + $store{$field} = "$RT::Organization: " . $queue->Name . " (not migrated)"; + + } } } elsif ($type =~ /^(Add|Open|Resolve)Reminder$/) { my $ticket = RT::Ticket->new( RT->SystemUser );