|
Lines 117-125
if ( $op eq 'show' ) {
Link Here
|
| 117 |
my $patron_attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id); |
117 |
my $patron_attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id); |
| 118 |
my @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']}); |
118 |
my @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']}); |
| 119 |
while ( my $attr_type = $patron_attribute_types->next ) { |
119 |
while ( my $attr_type = $patron_attribute_types->next ) { |
| 120 |
# TODO Repeatable attributes are not correctly managed and can cause data lost. |
|
|
| 121 |
# This should be implemented. |
| 122 |
next if $attr_type->repeatable; |
| 123 |
next if $attr_type->unique_id; # Don't display patron attributes that must be unqiue |
120 |
next if $attr_type->unique_id; # Don't display patron attributes that must be unqiue |
| 124 |
my $options = $attr_type->authorised_value_category |
121 |
my $options = $attr_type->authorised_value_category |
| 125 |
? GetAuthorisedValues( $attr_type->authorised_value_category ) |
122 |
? GetAuthorisedValues( $attr_type->authorised_value_category ) |
|
Lines 333-341
if ( $op eq 'do' ) {
Link Here
|
| 333 |
$infos->{$field} = dt_from_string($infos->{$field}) if $infos->{$field}; |
330 |
$infos->{$field} = dt_from_string($infos->{$field}) if $infos->{$field}; |
| 334 |
} |
331 |
} |
| 335 |
|
332 |
|
| 336 |
my @attributes = $input->multi_param('patron_attributes'); |
|
|
| 337 |
my @attr_values = $input->multi_param('patron_attributes_value'); |
| 338 |
|
| 339 |
my @errors; |
333 |
my @errors; |
| 340 |
my @borrowernumbers = $input->multi_param('borrowernumber'); |
334 |
my @borrowernumbers = $input->multi_param('borrowernumber'); |
| 341 |
# For each borrower selected |
335 |
# For each borrower selected |
|
Lines 373-405
if ( $op eq 'do' ) {
Link Here
|
| 373 |
} |
367 |
} |
| 374 |
|
368 |
|
| 375 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
369 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
| 376 |
my $i=0; |
370 |
my @attributes = $input->multi_param('patron_attributes'); |
| 377 |
for ( @attributes ) { |
371 |
my @attr_values = $input->multi_param('patron_attributes_value'); |
| 378 |
next unless $_; |
372 |
my $attributes; |
| 379 |
my $attribute; |
373 |
my $i = 0; |
| 380 |
$attribute->{code} = $_; |
374 |
for my $code ( @attributes ) { |
| 381 |
$attribute->{attribute} = $attr_values[$i]; |
375 |
push @{ $attributes->{$code}->{values} }, shift @attr_values; # Handling repeatables |
| 382 |
my $attr_type = Koha::Patron::Attribute::Types->find($_); |
376 |
$attributes->{$code}->{disabled} = grep { $_ eq sprintf("attr%s_value", ++$i) } @disabled; |
|
|
377 |
} |
| 378 |
|
| 379 |
for my $code ( keys %$attributes ) { |
| 380 |
my $attr_type = Koha::Patron::Attribute::Types->find($code); |
| 383 |
# If this borrower is not in the category of this attribute, we don't want to modify this attribute |
381 |
# If this borrower is not in the category of this attribute, we don't want to modify this attribute |
| 384 |
++$i and next if $attr_type->category_code and $attr_type->category_code ne $patron->categorycode; |
382 |
next if $attr_type->category_code and $attr_type->category_code ne $patron->categorycode; |
| 385 |
my $valuename = "attr" . $i . "_value"; |
383 |
|
| 386 |
if ( grep { $_ eq $valuename } @disabled ) { |
384 |
if ( $attributes->{$code}->{disabled} ) { |
| 387 |
# The attribute is disabled, we remove it for this borrower ! |
385 |
# The attribute is disabled, we remove it for this borrower ! |
| 388 |
eval { |
386 |
eval { |
| 389 |
$patron->get_extended_attribute($attribute->{code})->delete; |
387 |
$patron->get_extended_attribute($code)->delete; |
| 390 |
}; |
388 |
}; |
| 391 |
push @errors, { error => $@ } if $@; |
389 |
push @errors, { error => $@ } if $@; |
| 392 |
} else { |
390 |
} else { |
| 393 |
eval { |
391 |
eval { |
| 394 |
# Note: |
392 |
$patron->extended_attributes->search({'me.code' => $code})->filter_by_branch_limitations->delete; |
| 395 |
# We should not need to filter by branch, but stay on the safe side |
393 |
$patron->add_extended_attribute({ code => $code, attribute => $_ }) for @{$attributes->{$code}->{values}}; |
| 396 |
# Repeatable are not supported so we can do that - TODO |
|
|
| 397 |
$patron->extended_attributes->search({'me.code' => $attribute->{code}})->filter_by_branch_limitations->delete; |
| 398 |
$patron->add_extended_attribute($attribute); |
| 399 |
}; |
394 |
}; |
| 400 |
push @errors, { error => $@ } if $@; |
395 |
push @errors, { error => $@ } if $@; |
| 401 |
} |
396 |
} |
| 402 |
$i++; |
|
|
| 403 |
} |
397 |
} |
| 404 |
} |
398 |
} |
| 405 |
$op = "show_results"; # We have process modifications, the user want to view its |
399 |
$op = "show_results"; # We have process modifications, the user want to view its |
| 406 |
- |
|
|