|
Lines 136-144
if ( $op eq 'show' ) {
Link Here
|
| 136 |
my $patron_attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id); |
136 |
my $patron_attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id); |
| 137 |
my @patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']})->as_list; |
137 |
my @patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['description']})->as_list; |
| 138 |
while ( my $attr_type = $patron_attribute_types->next ) { |
138 |
while ( my $attr_type = $patron_attribute_types->next ) { |
| 139 |
# TODO Repeatable attributes are not correctly managed and can cause data lost. |
|
|
| 140 |
# This should be implemented. |
| 141 |
next if $attr_type->repeatable; |
| 142 |
next if $attr_type->unique_id; # Don't display patron attributes that must be unqiue |
139 |
next if $attr_type->unique_id; # Don't display patron attributes that must be unqiue |
| 143 |
my $options = $attr_type->authorised_value_category |
140 |
my $options = $attr_type->authorised_value_category |
| 144 |
? GetAuthorisedValues( $attr_type->authorised_value_category ) |
141 |
? GetAuthorisedValues( $attr_type->authorised_value_category ) |
|
Lines 357-365
if ( $op eq 'do' ) {
Link Here
|
| 357 |
|
354 |
|
| 358 |
delete $infos->{password_expiration_date} unless $logged_in_user->is_superlibrarian; |
355 |
delete $infos->{password_expiration_date} unless $logged_in_user->is_superlibrarian; |
| 359 |
|
356 |
|
| 360 |
my @attributes = $input->multi_param('patron_attributes'); |
|
|
| 361 |
my @attr_values = $input->multi_param('patron_attributes_value'); |
| 362 |
|
| 363 |
my @errors; |
357 |
my @errors; |
| 364 |
my @borrowernumbers = $input->multi_param('borrowernumber'); |
358 |
my @borrowernumbers = $input->multi_param('borrowernumber'); |
| 365 |
# For each borrower selected |
359 |
# For each borrower selected |
|
Lines 398-430
if ( $op eq 'do' ) {
Link Here
|
| 398 |
} |
392 |
} |
| 399 |
|
393 |
|
| 400 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
394 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
| 401 |
my $i=0; |
395 |
my @attributes = $input->multi_param('patron_attributes'); |
| 402 |
for ( @attributes ) { |
396 |
my @attr_values = $input->multi_param('patron_attributes_value'); |
| 403 |
next unless $_; |
397 |
my $attributes; |
| 404 |
my $attribute; |
398 |
my $i = 0; |
| 405 |
$attribute->{code} = $_; |
399 |
for my $code ( @attributes ) { |
| 406 |
$attribute->{attribute} = $attr_values[$i]; |
400 |
push @{ $attributes->{$code}->{values} }, shift @attr_values; # Handling repeatables |
| 407 |
my $attr_type = Koha::Patron::Attribute::Types->find($_); |
401 |
$attributes->{$code}->{disabled} = grep { $_ eq sprintf("attr%s_value", ++$i) } @disabled; |
|
|
402 |
} |
| 403 |
|
| 404 |
for my $code ( keys %$attributes ) { |
| 405 |
my $attr_type = Koha::Patron::Attribute::Types->find($code); |
| 408 |
# If this borrower is not in the category of this attribute, we don't want to modify this attribute |
406 |
# If this borrower is not in the category of this attribute, we don't want to modify this attribute |
| 409 |
++$i and next if $attr_type->category_code and $attr_type->category_code ne $patron->categorycode; |
407 |
next if $attr_type->category_code and $attr_type->category_code ne $patron->categorycode; |
| 410 |
my $valuename = "attr" . $i . "_value"; |
408 |
|
| 411 |
if ( grep { $_ eq $valuename } @disabled ) { |
409 |
if ( $attributes->{$code}->{disabled} ) { |
| 412 |
# The attribute is disabled, we remove it for this borrower ! |
410 |
# The attribute is disabled, we remove it for this borrower ! |
| 413 |
eval { |
411 |
eval { |
| 414 |
$patron->get_extended_attribute($attribute->{code})->delete; |
412 |
$patron->get_extended_attribute($code)->delete; |
| 415 |
}; |
413 |
}; |
| 416 |
push @errors, { error => $@ } if $@; |
414 |
push @errors, { error => $@ } if $@; |
| 417 |
} else { |
415 |
} else { |
| 418 |
eval { |
416 |
eval { |
| 419 |
# Note: |
417 |
$patron->extended_attributes->search({'me.code' => $code})->filter_by_branch_limitations->delete; |
| 420 |
# We should not need to filter by branch, but stay on the safe side |
418 |
$patron->add_extended_attribute({ code => $code, attribute => $_ }) for @{$attributes->{$code}->{values}}; |
| 421 |
# Repeatable are not supported so we can do that - TODO |
|
|
| 422 |
$patron->extended_attributes->search({'me.code' => $attribute->{code}})->filter_by_branch_limitations->delete; |
| 423 |
$patron->add_extended_attribute($attribute); |
| 424 |
}; |
419 |
}; |
| 425 |
push @errors, { error => $@ } if $@; |
420 |
push @errors, { error => $@ } if $@; |
| 426 |
} |
421 |
} |
| 427 |
$i++; |
|
|
| 428 |
} |
422 |
} |
| 429 |
} |
423 |
} |
| 430 |
$op = "show_results"; # We have process modifications, the user want to view its |
424 |
$op = "show_results"; # We have process modifications, the user want to view its |
| 431 |
- |
|
|