X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=fs_selfservice%2FFS-SelfService%2FSelfService%2FXMLRPC.pm;h=59c8756f866a5ab39f8f054179d67df391ced8ed;hp=4e0d3e90962caa77df6c6d29835fc86a5f6e1fab;hb=14164a8a09f3bf1ccbb59a1a94ea90231cffadd8;hpb=4ecf0133faca10a1e959fd0eeb285ce4f9cae212 diff --git a/fs_selfservice/FS-SelfService/SelfService/XMLRPC.pm b/fs_selfservice/FS-SelfService/SelfService/XMLRPC.pm index 4e0d3e909..59c8756f8 100644 --- a/fs_selfservice/FS-SelfService/SelfService/XMLRPC.pm +++ b/fs_selfservice/FS-SelfService/SelfService/XMLRPC.pm @@ -26,19 +26,51 @@ L, L,L { 'invoice_pdf' => 'base64', }, + 'legacy_invoice_pdf' => { 'invoice_pdf' => 'base64', }, + 'skin_info' => { 'logo' => 'base64', + 'title_left_image' => 'base64', + 'title_right_image' => 'base64', + 'menu_top_image' => 'base64', + 'menu_body_image' => 'base64', + 'menu_bottom_image' => 'base64', + }, + 'invoice_logo' => { 'logo' => 'base64', }, +); + sub AUTOLOAD { my $call = $AUTOLOAD; $call =~ s/^FS::SelfService::XMLRPC:://; + if (exists($FS::SelfService::autoload{$call})) { + shift; #discard package name; + $call = "FS::SelfService::$call"; + no strict 'refs'; - &{$call}(@_); + + my $return = &{$call}(@_); + + if ( exists($typefix{$call}) ) { + my $typefix = $typefix{$call}; + foreach my $field ( grep exists($return->{$_}), keys %$typefix ) { + my $type = $typefix->{$field}; + $return->{$field} = XMLRPC::Data->value($return->{$field}) + ->type($type); + } + } + + $return; + }else{ die "No such procedure: $call"; }