better serialization on debugging data, RT#7514
[freeside.git] / FS / FS / part_export / communigate_pro.pm
index 3ac0dfd..90e6977 100644 (file)
@@ -730,13 +730,7 @@ sub export_getsettings_svc_domain {
   foreach my $key ( grep ref($effective_settings->{$_}),
                     keys %$effective_settings )
   {
-    my $value = $effective_settings->{$key};
-    if ( ref($value) eq 'ARRAY' ) {
-      $effective_settings->{$key} = join(' ', @$value);
-    } else {
-      #XXX
-      warn "serializing ". ref($value). " for table display not yet handled";
-    }
+    $effective_settings->{$key} = _pretty( $effective_settings->{$key} );
   }
 
   %{$settingsref} = %$effective_settings;
@@ -819,13 +813,7 @@ sub export_getsettings_svc_acct {
   foreach my $key ( grep ref($effective_settings->{$_}),
                     keys %$effective_settings )
   {
-    my $value = $effective_settings->{$key};
-    if ( ref($value) eq 'ARRAY' ) {
-      $effective_settings->{$key} = join(' ', @$value);
-    } else {
-      #XXX
-      warn "serializing ". ref($value). " for table display not yet handled";
-    }
+    $effective_settings->{$key} = _pretty( $effective_settings->{$key} );
   }
 
   %{$settingsref} = %$effective_settings;
@@ -835,6 +823,22 @@ sub export_getsettings_svc_acct {
 
 }
 
+sub _pretty {
+  my $value = shift;
+  if ( ref($value) eq 'ARRAY' ) {
+    '['. join(' ', map { ref($_) ? _pretty($_) : $_ } @$value ). ']';
+  } elsif ( ref($value) eq 'HASH' ) {
+    '{'. join(', ',
+        map { my $v = $value->{$_};
+              "$_:". ( ref($v) ? _pretty($v) : $_ );
+            }
+            keys %$value
+    ). '}';
+  } else {
+    warn "serializing ". ref($value). " for table display not yet handled";
+  }
+}
+
 sub export_getsettings_svc_forward {
   my($self, $svc_forward, $settingsref, $defaultref ) = @_;