From c1201c22acfc9f54ef084e3f7367bf5cff7bcfed Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 16 Aug 2006 14:35:10 +0000 Subject: [PATCH] making cstore a xact so we call the read db on user create/update git-svn-id: svn://svn.open-ils.org/ILS/trunk@5531 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/perlmods/OpenILS/Application/Actor.pm | 127 +++++++++++++++------ 1 file changed, 90 insertions(+), 37 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm b/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm index 1a506938cc..12a4485f13 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm @@ -255,23 +255,24 @@ sub update_patron { -__PACKAGE__->register_method( - method => "user_retrieve_fleshed_by_id", - api_name => "open-ils.actor.user.fleshed.retrieve",); - -sub user_retrieve_fleshed_by_id { - my( $self, $client, $user_session, $user_id ) = @_; - - my( $requestor, $target, $evt ) = $apputils-> - checkses_requestor( $user_session, $user_id, 'VIEW_USER' ); - return $evt if $evt; - - return flesh_user($user_id); -} +#__PACKAGE__->register_method( +# method => "user_retrieve_fleshed_by_id", +# api_name => "open-ils.actor.user.fleshed.retrieve",); +# +#sub user_retrieve_fleshed_by_id { +# my( $self, $client, $user_session, $user_id ) = @_; +# +# my( $requestor, $target, $evt ) = $apputils-> +# checkses_requestor( $user_session, $user_id, 'VIEW_USER' ); +# return $evt if $evt; +# +# return flesh_user($user_id); +#} # fleshes: card, cards, address, addresses, stat_cat_entries, standing_penalties # XXX DEPRECATE ME +=head old sub __flesh_user { my $id = shift; my $session = shift; @@ -345,32 +346,19 @@ sub __flesh_user { return $user; } +=cut -sub flesh_user { - my $id = shift; - my $e = new_editor(); - my $user = $e->retrieve_actor_user( - [ - $id, - { - "flesh" => 1, - "flesh_fields" => { - "au" => [ - "cards", - "card", - "standing_penalties", - "addresses", - "billing_address", - "mailing_address", - "stat_cat_entries" - ] - } - } - ] - ) or return $e->event; - $user->clear_passwd(); - return $user; +sub flesh_user { + my $id = shift; + return new_flesh_user($id, [ + "cards", + "card", + "standing_penalties", + "addresses", + "billing_address", + "mailing_address", + "stat_cat_entries" ] ); } @@ -2450,5 +2438,70 @@ sub trim_tree { } + +__PACKAGE__->register_method( + method => "user_retrieve_fleshed_by_id", + api_name => "open-ils.actor.user.fleshed.retrieve",); + +sub user_retrieve_fleshed_by_id { + my( $self, $client, $auth, $user_id, $fields ) = @_; + my $e = new_editor(authtoken => $auth); + return $e->event unless $e->checkauth; + return $e->event unless $e->allowed('VIEW_USER'); + $fields ||= [ + "cards", + "card", + "standing_penalties", + "addresses", + "billing_address", + "mailing_address", + "stat_cat_entries" ]; + return new_flesh_user($user_id, $fields, $e); +} + + +sub new_flesh_user { + + my $id = shift; + my $fields = shift || []; + my $e = shift || new_editor(xact=>1); + + my $user = $e->retrieve_actor_user( + [ + $id, + { + "flesh" => 1, + "flesh_fields" => { "au" => $fields } + } + ] + ) or return $e->event; + + + if( grep { $_ eq 'addresses' } @$fields ) { + + $user->addresses([]) unless @{$user->addresses}; + + if( ref $user->billing_address ) { + unless( grep { $user->billing_address->id == $_->id } @{$user->addresses} ) { + push( @{$user->addresses}, $user->billing_address ); + } + } + + if( ref $user->mailing_address ) { + unless( grep { $user->mailing_address->id == $_->id } @{$user->addresses} ) { + push( @{$user->addresses}, $user->mailing_address ); + } + } + } + + $user->clear_passwd(); + return $user; +} + + + + + + 1; -- 2.11.0