Bug 13757: (QA followup) Filter out non-editable params before storing
authorTomas Cohen Arazi <tomascohen@theke.io>
Wed, 22 Mar 2017 21:51:48 +0000 (18:51 -0300)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 24 Mar 2017 18:45:22 +0000 (18:45 +0000)
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
opac/opac-memberentry.pl

index 670c11d..d62d89c 100755 (executable)
@@ -607,30 +607,35 @@ sub ParsePatronAttributes {
     my @codes  = $cgi->multi_param('patron_attribute_code');
     my @values = $cgi->multi_param('patron_attribute_value');
 
+    my @editable_attribute_types
+        = map { $_->code } Koha::Patron::Attribute::Types->search({ opac_editable => 1 });
+
     my $ea = each_array( @codes, @values );
     my @attributes;
 
     my $delete_candidates = {};
 
     while ( my ( $code, $value ) = $ea->() ) {
-        if ( !defined($value) or $value eq '' ) {
-            $delete_candidates->{$code} = 1
-                unless $delete_candidates->{$code};
-        }
-        else {
-            # we've got a value
-            push @attributes, { code => $code, value => $value };
+        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, value => $value };
 
-            # 'code' is no longer a delete candidate
-            delete $delete_candidates->{$code};
+                # 'code' is no longer a delete candidate
+                delete $delete_candidates->{$code}
+                    if defined $delete_candidates->{$code};
+            }
         }
     }
 
     foreach my $code ( keys %{$delete_candidates} ) {
-        if (Koha::Patron::Attributes->search(
-                { borrowernumber => $borrowernumber, code => $code }
-            )->count > 0
-            )
+        if ( Koha::Patron::Attributes->search({
+                borrowernumber => $borrowernumber, code => $code })->count > 0 )
         {
             push @attributes, { code => $code, value => '' }
                 unless any { $_->{code} eq $code } @attributes;