- $self->{'user'} = shift;
- Scalar::Util::weaken($self->{'user'}) if (ref($self->{'user'}) &&
- $self->{'user'} == $self );
+ my $current_user = $_[0];
+ if ( ref $current_user eq 'RT::User' ) {
+ $self->{'user'} = new RT::CurrentUser;
+ $self->{'user'}->Load( $current_user->id );
+ } else {
+ $self->{'user'} = $current_user;
+ }
+ # We need to weaken the CurrentUser ($self->{'user'}) reference
+ # if the object in question is the currentuser object.
+ # This avoids memory leaks.
+ Scalar::Util::weaken($self->{'user'})
+ if ref $self->{'user'} && $self->{'user'} == $self;