- $borrowers->{ $pm->{borrowernumber} }
- = GetMember( borrowernumber => $pm->{borrowernumber} );
- my @patron_attributes
- = grep { $_->opac_editable }
- Koha::Patron::Attributes->search(
- { borrowernumber => $pm->{borrowernumber} } );
- $borrowers->{ $pm->{'borrowernumber'} }->{extended_attributes}
- = \@patron_attributes;
+
+ my @modified_atypes = uniq( map { $_->code } @{ $pm->{extended_attributes} } );
+ my $modified_attributes;
+
+ foreach my $type (@modified_atypes) {
+ my $type_obj = Koha::Patron::Attribute::Types->find($type);
+ my @before = Koha::Patron::Attributes->search(
+ { borrowernumber => $pm->{borrowernumber}, code => $type } );
+ my @after = grep { $_->code eq $type } @{ $pm->{extended_attributes} };
+ push @{$modified_attributes}, { type => $type_obj, before => \@before, after => \@after };
+ }
+
+ $borrowers->{ $pm->{borrowernumber} } = Koha::Patrons->find($pm->{borrowernumber})->unblessed;
+ $borrowers->{ $pm->{borrowernumber} }->{modified_attributes} = $modified_attributes;