diff options
Diffstat (limited to 'rt/share/html/REST/1.0/Forms/user/default')
-rwxr-xr-x | rt/share/html/REST/1.0/Forms/user/default | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/rt/share/html/REST/1.0/Forms/user/default b/rt/share/html/REST/1.0/Forms/user/default index 227fc81..53d0e28 100755 --- a/rt/share/html/REST/1.0/Forms/user/default +++ b/rt/share/html/REST/1.0/Forms/user/default @@ -51,17 +51,25 @@ $id $format => 's' $changes => {} +$fields => undef </%ARGS> <%perl> my @comments; my ($c, $o, $k, $e) = ("", [], {}, 0); my %data = %$changes; my $user = RT::User->new($session{CurrentUser}); -my @fields = qw(RealName NickName Gecos Organization Address1 Address2 City - State Zip Country HomePhone WorkPhone MobilePhone PagerPhone - FreeformContactInfo Comments Signature Lang EmailEncoding - WebEncoding ExternalContactInfoId ContactInfoSystem - ExternalAuthId AuthSystem Privileged Disabled); + +my @fields = + qw(Name EmailAddress RealName NickName Gecos Organization Address1 + Address2 City State Zip Country HomePhone WorkPhone MobilePhone PagerPhone + FreeformContactInfo Comments Signature Lang EmailEncoding + WebEncoding ExternalContactInfoId ContactInfoSystem + ExternalAuthId AuthSystem Privileged Disabled); + +if ( $fields && %$fields ) { + @fields = grep { exists $fields->{ lc $_ } } @fields; +} + my %fields = map { lc $_ => $_ } @fields; if ($id ne 'new') { @@ -117,19 +125,38 @@ if (keys %data == 0) { my @data; push @data, [ id => "user/".$user->Id ]; - push @data, [ Name => $user->Name ]; - push @data, [ Password => '********' ]; - push @data, [ EmailAddress => $user->EmailAddress ]; - foreach my $key (@fields) { - my $val = $user->$key; + unless ( $fields && %$fields && !exists $fields->{'password'} ) { + push @data, [ Password => '********' ]; + } - if ( (defined ($format) && $format eq 'l') || (defined $val && $val ne '')) { + for my $key (@fields) { + my $val = $user->$key; + if ( ( $fields && exists $fields->{ lc $key } ) + || ( defined $format && $format eq 'l' ) + || ( defined $val && $val ne '' ) ) + { $key = "ContactInfo" if $key eq 'FreeformContactInfo'; push @data, [ $key => $val ]; } } + # Custom fields + my $CustomFields = $user->CustomFields; + while ( my $CustomField = $CustomFields->Next() ) { + # show cf unless there are specified fields that don't include it + next + unless ( !%$fields + || exists $fields->{ lc "CF-" . $CustomField->Name } ); + next unless $CustomField->CurrentUserHasRight('SeeCustomField'); + my $CFvalues = $user->CustomFieldValues( $CustomField->Id ); + my @CFvalues; + while ( my $CFvalue = $CFvalues->Next() ) { + push @CFvalues, $CFvalue->Content; + } + push @data, [ "CF-" . $CustomField->Name => \@CFvalues ]; + } + my %k = map {@$_} @data; $o = [ map {$_->[0]} @data ]; $k = \%k; |