use C4::Debug;
use C4::Context;
-use C4::Members::Attributes;
-use C4::Members::AttributeTypes;
use C4::Members::Messaging;
use C4::Auth qw(checkpw_internal);
use Koha::Patrons;
return 0; # B2, D2
}
if (C4::Context->preference('ExtendedPatronAttributes') && $borrowernumber && ($config{update} ||$config{replicate})) {
- foreach my $attribute_type ( C4::Members::AttributeTypes::GetAttributeTypes() ) {
- my $code = $attribute_type->{code};
+ my $library_id = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
+ my $attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id);
+ while ( my $attribute_type = $attribute_types->next ) {
+ my $code = $attribute_type->code;
unless (exists($borrower{$code}) && $borrower{$code} !~ m/^\s*$/ ) {
next;
}
- if (C4::Members::Attributes::CheckUniqueness($code, $borrower{$code}, $borrowernumber)) {
- my $patron = Koha::Patrons->find($borrowernumber);
- if ( $patron ) { # Should not be needed, but we are in C4::Auth LDAP...
+ my $patron = Koha::Patrons->find($borrowernumber);
+ if ( $patron ) { # Should not be needed, but we are in C4::Auth LDAP...
+ eval {
my $attribute = Koha::Patron::Attribute->new({code => $code, attribute => $borrower{$code}});
- $patron->extended_attributes([$attribute]);
+ $patron->extended_attributes([$attribute->unblessed]);
+ };
+ if ($@) { # FIXME Test if Koha::Exceptions::Patron::Attribute::NonRepeatable
+ warn "ERROR_extended_unique_id_failed $code $borrower{$code}";
}
- } else {
- warn "ERROR_extended_unique_id_failed $code $borrower{$code}";
}
}
}
# skip extended patron attributes in 'borrowers' attribute update
my @keys = keys %$borrower;
if (C4::Context->preference('ExtendedPatronAttributes')) {
- foreach my $attribute_type ( C4::Members::AttributeTypes::GetAttributeTypes() ) {
- my $code = $attribute_type->{code};
+ my $library_id = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
+ my $attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id);
+ while ( my $attribute_type = $attribute_types->next ) {
+ my $code = $attribute_type->code;
@keys = grep { $_ ne $code } @keys;
$debug and printf STDERR "ignoring extended patron attribute '%s' in update_local()\n", $code;
}