- push @attributes, { code => $code, value => $value, password => $password };
+ while ( my ( $code, $value ) = $ea->() ) {
+ if ( any { $_ eq $code } @editable_attribute_types ) {
+ # It is an editable attribute
+ if ( !defined($value) or $value eq '' ) {
+ $delete_candidates->{$code} = 1
+ unless $delete_candidates->{$code};
+ }
+ else {
+ # we've got a value
+ push @attributes, { code => $code, attribute => $value };
+
+ # 'code' is no longer a delete candidate
+ delete $delete_candidates->{$code}
+ if defined $delete_candidates->{$code};
+ }
+ }
+ }
+
+ foreach my $code ( keys %{$delete_candidates} ) {
+ if ( not $borrowernumber # self-registration
+ || Koha::Patron::Attributes->search({
+ borrowernumber => $borrowernumber, code => $code })->count > 0 )
+ {
+ push @attributes, { code => $code, attribute => '' }
+ unless any { $_->{code} eq $code } @attributes;
+ }