From: Galen Charlton Date: Wed, 3 Aug 2016 19:38:14 +0000 (-0400) Subject: teach ML about staged user settings X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=bb42674c4176aa022d429a7188b5a972f0a395b9;p=working%2FEvergreen.git teach ML about staged user settings Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor/Stage.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor/Stage.pm index 8f094b7204..c8be3212c2 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor/Stage.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor/Stage.pm @@ -13,7 +13,8 @@ __PACKAGE__->register_method ( api_name => 'open-ils.actor.user.stage.create', signature => { desc => q/ - Creates a new pending user account including addresses and statcats. + Creates a new pending user account including addresses, statcats, and + settings. Users are added to staging tables pending staff review. /, params => [ @@ -21,6 +22,7 @@ __PACKAGE__->register_method ( {desc => 'Mailing address. Optional', type => 'object', class => 'stgma'}, {desc => 'Billing address. Optional', type => 'object', class => 'stgba'}, {desc => 'Statcats. Optional. This is an array of "stgsc" objects', type => 'array'}, + {desc => 'Settings. Optional. This is an array of "stgs" objects', type => 'array'}, ], return => { desc => 'username on success, Event on error', @@ -31,7 +33,7 @@ __PACKAGE__->register_method ( ); sub create_user_stage { - my($self, $conn, $user, $mail_addr, $bill_addr, $statcats) = @_; # more? + my($self, $conn, $user, $mail_addr, $bill_addr, $statcats, $settings) = @_; # more? return OpenILS::Event->new('BAD_PARAMS') unless $user; return 0 unless $U->ou_ancestor_setting_value($user->home_ou, 'opac.allow_pending_user'); @@ -64,6 +66,13 @@ sub create_user_stage { } } + if($settings) { + foreach (@$settings) { + $_->usrname($uname); + $e->create_staging_setting_stage($_) or return $e->die_event; + } + } + $e->commit; $conn->respond_complete($uname); @@ -111,7 +120,8 @@ sub flesh_user_stage { billing_addresses => $e->search_staging_billing_address_stage({usrname => $user->usrname}), mailing_addresses => $e->search_staging_mailing_address_stage({usrname => $user->usrname}), cards => $e->search_staging_card_stage({usrname => $user->usrname}), - statcats => $e->search_staging_statcat_stage({usrname => $user->usrname}) + statcats => $e->search_staging_statcat_stage({usrname => $user->usrname}), + settings => $e->search_staging_setting_stage({usrname => $user->usrname}), }; } @@ -171,6 +181,10 @@ sub delete_user_stage { $e->delete_staging_statcat_stage($statcat) or return $e->die_event; } + for my $setting (@{$data->{settings}}) { + $e->delete_staging_setting_stage($setting) or return $e->die_event; + } + $e->commit; return 1; }