- # traverse through record
- MARCFIELD: foreach my $field ( $record->fields() ) {
- my $tag = $field->tag();
- next MARCFIELD unless exists $inverted_field_map->{$tag};
- if ( $field->is_control_field() ) {
- my $kohafields = $inverted_field_map->{$tag}->{list};
- ENTRY: foreach my $entry ( @{$kohafields} ) {
- my ( $subfield, $table, $column ) = @{$entry};
- my $value = $field->data;
- next ENTRY unless exists $tables{$table};
- next ENTRY if !$value;
- my $key = _disambiguate( $table, $column );
- if ( $result->{$key} ) {
- $result->{$key} .= " | " . $value
- unless $result->{$key} eq $value;
- } else {
- $result->{$key} = $value;
- }
- }
- } else {
-
- # deal with subfields
- MARCSUBFIELD: foreach my $sf ( $field->subfields() ) {
- my $code = $sf->[0];
- next MARCSUBFIELD unless exists $inverted_field_map->{$tag}->{sfs}->{$code};
- my $value = $sf->[1];
- SFENTRY: foreach my $entry ( @{ $inverted_field_map->{$tag}->{sfs}->{$code} } ) {
- my ( $table, $column ) = @{$entry};
- next SFENTRY unless exists $tables{$table};
- next SFENTRY if !$value;
- my $key = _disambiguate( $table, $column );
- if ( $result->{$key} ) {
- $result->{$key} .= " | " . $value
- unless $result->{$key} eq $value;
- } else {
- $result->{$key} = $value;
- }
- }
- }
- }
- }
-
- # modify copyrightdate to keep only the 1st year found
- if ( exists $result->{'copyrightdate'} ) {
- my $temp = $result->{'copyrightdate'};
- $temp =~ m/c(\d\d\d\d)/;
- if ( $temp =~ m/c(\d\d\d\d)/ and $1 > 0 ) { # search cYYYY first
- $result->{'copyrightdate'} = $1;
- } else { # if no cYYYY, get the 1st date.
- $temp =~ m/(\d\d\d\d)/;
- $result->{'copyrightdate'} = $1;
- }
- }
-
- # modify publicationyear to keep only the 1st year found
- if ( exists $result->{'publicationyear'} ) {
- my $temp = $result->{'publicationyear'};
- if ( $temp =~ m/c(\d\d\d\d)/ and $1 > 0 ) { # search cYYYY first
- $result->{'publicationyear'} = $1;
- } else { # if no cYYYY, get the 1st date.
- $temp =~ m/(\d\d\d\d)/;
- $result->{'publicationyear'} = $1;
- }
- }
-
- return $result;
-}
-
-sub _get_inverted_marc_field_map {
- my ( $frameworkcode ) = @_;
- my $field_map = {};
- my $mss = GetMarcSubfieldStructure( $frameworkcode );
-