use Koha::Database;
use Koha::Exceptions::Patron::Modification;
+use Koha::Patron::Attribute;
+use Koha::Patron::Attributes;
use Koha::Patron::Modifications;
-# TODO: Remove once Koha::Patron::Attribute(s) is implemented
-use C4::Members::Attributes qw( SetBorrowerAttributes );
use JSON;
+use List::MoreUtils qw( uniq );
use Try::Tiny;
use base qw(Koha::Object);
my ($self) = @_;
my $data = $self->unblessed();
+ my $extended_attributes;
delete $data->{timestamp};
delete $data->{verification_token};
# Take care of extended attributes
if ( $self->extended_attributes ) {
- our $extended_attributes
+ $extended_attributes
= try { decode_json( $self->extended_attributes ) }
catch {
Koha::Exceptions::Patron::Modification::InvalidData->throw(
try {
$patron->store();
- # Take care of extended attributes
- if ( $self->extended_attributes ) {
- my $extended_attributes
- = decode_json( $self->extended_attributes );
- SetBorrowerAttributes( $patron->borrowernumber,
- $extended_attributes );
+ # Deal with attributes
+ my @codes
+ = uniq( map { $_->{code} } @{$extended_attributes} );
+ foreach my $code (@codes) {
+ map { $_->delete } Koha::Patron::Attributes->search(
+ { borrowernumber => $patron->borrowernumber,
+ code => $code
+ }
+ );
+ }
+ foreach my $attr ( @{$extended_attributes} ) {
+ Koha::Patron::Attribute->new(
+ { borrowernumber => $patron->borrowernumber,
+ code => $attr->{code},
+ attribute => $attr->{value}
+ }
+ )->store;
}
}
catch {
}
-
-
=head3 type
=cut
use C4::Output;
use C4::Context;
use C4::Members;
-use C4::Members::Attributes qw( GetBorrowerAttributes );
use Koha::Patron::Attributes;
use Koha::Patron::Modifications;
foreach my $pm (@$pending_modifications) {
$borrowers->{ $pm->{borrowernumber} }
= GetMember( borrowernumber => $pm->{borrowernumber} );
- my $patron_attributes = Koha::Patron::Attributes->search(
+ my @patron_attributes
+ = grep { $_->opac_editable }
+ Koha::Patron::Attributes->search(
{ borrowernumber => $pm->{borrowernumber} } );
$borrowers->{ $pm->{'borrowernumber'} }->{extended_attributes}
- = $patron_attributes;
+ = \@patron_attributes;
}
$template->param(