From: Paul Poulain <[email protected]>

Signed-off-by: Chris Cormack <[email protected]>
---
 C4/Record.pm |   49 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/C4/Record.pm b/C4/Record.pm
index c5727f3..b0640ca 100644
--- a/C4/Record.pm
+++ b/C4/Record.pm
@@ -462,26 +462,37 @@ sub marcrecord2csv {
                }
            }
            push (@fieldstab, join($subfieldseparator, @tmpfields));            
-       # Or a field
-       } else {
-           my @fields = ($record->field($marcfield));
-           my $authvalues = GetKohaAuthorisedValuesFromField($marcfield, 
undef, $frameworkcode, undef);
-
-           my @valuesarray;
-           foreach (@fields) {
-               my $value;
-
-               # Getting authorised value
-               $value = defined $authvalues->{$_->as_string} ? 
$authvalues->{$_->as_string} : $_->as_string;
-
-               # Field processing
-               eval $fieldprocessing if ($fieldprocessing);
+           # Or a field
 
-               push @valuesarray, $value;
-           }
-           push (@fieldstab, join($fieldseparator, @valuesarray)); 
-        }
-    };
+        } else {
+            my @fields = ( $record->field($marcfield) );
+            my $authvalues = GetKohaAuthorisedValuesFromField( $marcfield, 
undef, $frameworkcode, undef );
+
+            my @valuesarray;
+            foreach (@fields) {
+                my $value;
+
+               # If it is a control field
+               if ($_->is_control_field) {
+                   $value = defined $authvalues->{$_->as_string} ? 
$authvalues->{$_->as_string} : $_->as_string;
+               } else {
+                   # If it is a field, we gather all subfields, joined by the 
subfield separator
+                   my @subvaluesarray;
+                   my @subfields = $_->subfields;
+                   foreach my $subfield (@subfields) {
+                       push (@subvaluesarray, defined 
$authvalues->{$subfield->[1]} ? $authvalues->{$subfield->[1]} : $subfield->[1]);
+                   }
+                   $value = join ($subfieldseparator, @subvaluesarray);
+               }
+
+                # Field processing
+                eval $fieldprocessing if ($fieldprocessing);
+
+                push @valuesarray, $value;
+            }
+            push( @fieldstab, join( $fieldseparator, @valuesarray ) );
+        }
+    }
 
     $csv->combine(@fieldstab);
     $output .= $csv->string() . "\n";
-- 
1.7.4.1

_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to