X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FREST%2F1.0%2FForms%2Fuser%2Fdefault;h=54ceb654b00bbae6caa4a77dd0d7521dff2d0d36;hp=0461547685e254d5b44776a5250da0b77021406c;hb=44dd00a3ff974a17999e86e64488e996edc71e3c;hpb=45d35d5739d05e602bc317739485693e0e9ff0b5 diff --git a/rt/share/html/REST/1.0/Forms/user/default b/rt/share/html/REST/1.0/Forms/user/default index 046154768..54ceb654b 100755 --- a/rt/share/html/REST/1.0/Forms/user/default +++ b/rt/share/html/REST/1.0/Forms/user/default @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -51,17 +51,25 @@ $id $format => 's' $changes => {} +$fields => undef <%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;