From 7aac8031a300fb9ca627d8f95f4d423147b6c317 Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 19 Mar 2008 13:45:46 +0000 Subject: [PATCH] ported org-settings update code to cstoreEditor git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_2@9078 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/perlmods/OpenILS/Application/Actor.pm | 47 ++++++++++++---------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm b/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm index cdc78fb1d9..f491c9c1bf 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm @@ -78,39 +78,42 @@ sub set_user_settings { } - __PACKAGE__->register_method( method => "set_ou_settings", api_name => "open-ils.actor.org_unit.settings.update", ); sub set_ou_settings { - my( $self, $client, $user_session, $ouid, $settings ) = @_; - - my( $staff, $evt ) = $apputils->checkses( $user_session ); - return $evt if $evt; - $evt = $apputils->check_perms( $staff->id, $ouid, 'UPDATE_ORG_SETTING' ); - return $evt if $evt; - - my @params; - for my $set (keys %$settings) { + my( $self, $client, $auth, $org_id, $settings ) = @_; - my $json = OpenSRF::Utils::JSON->perl2JSON($$settings{$set}); - $logger->activity("updating org_unit.setting: $ouid : $set : $json"); + my $e = new_editor(authtoken => $auth, xact => 1); + return $e->die_event unless $e->checkauth; + return $e->die_event unless $e->allowed('UPDATE_ORG_SETTING', $org_id); - push( @params, - { org_unit => $ouid, name => $set }, - { value => $json } ); - } + for my $name (keys %$settings) { + my $val = $$settings{$name}; + my $set = $e->search_actor_org_unit_setting({org_unit => $org_id, name => $name})->[0]; - my $ses = $U->start_db_session(); - my $stat = $ses->request( - 'open-ils.storage.direct.actor.org_unit_setting.merge', @params )->gather(1); - $U->commit_db_session($ses); + if(defined $val) { + $val = OpenSRF::Utils::JSON->perl2JSON($val); + if($set) { + $set->value($val); + $e->update_actor_org_unit_setting($set) or return $e->die_event; + } else { + $set = Fieldmapper::actor::org_unit_setting->new; + $set->org_unit($org_id); + $set->name($name); + $set->value($val); + $e->create_actor_org_unit_setting($set) or return $e->die_event; + } + } elsif($set) { + $e->delete_actor_org_unit_setting($set) or return $e->die_event; + } + } - return $stat; + $e->commit; + return 1; } - my $fetch_user_settings; my $fetch_ou_settings; -- 2.11.0