rt 4.2.16
[freeside.git] / rt / share / html / REST / 1.0 / Forms / user / default
index 227fc81..54ceb65 100755 (executable)
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
 %#                                          <sales@bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
 $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;