|
Lines 1105-1147
sub GetMarcSubfieldStructure {
Link Here
|
| 1105 |
|
1105 |
|
| 1106 |
=head2 GetMarcFromKohaField |
1106 |
=head2 GetMarcFromKohaField |
| 1107 |
|
1107 |
|
| 1108 |
($MARCfield,$MARCsubfield)=GetMarcFromKohaField($kohafield,$frameworkcode); |
1108 |
( $field,$subfield ) = GetMarcFromKohaField( $kohafield ); |
|
|
1109 |
@fields = GetMarcFromKohaField( $kohafield ); |
| 1110 |
$field = GetMarcFromKohaField( $kohafield ); |
| 1109 |
|
1111 |
|
| 1110 |
Returns the MARC fields & subfields mapped to the koha field |
1112 |
Returns the MARC fields & subfields mapped to $kohafield. |
| 1111 |
for the given frameworkcode or default framework if $frameworkcode is missing |
1113 |
Since the Default framework is considered as authoritative for such |
|
|
1114 |
mappings, the former frameworkcode parameter is obsoleted. |
| 1115 |
|
| 1116 |
In list context all mappings are returned; there can be multiple |
| 1117 |
mappings. Note that in the above example you could miss a second |
| 1118 |
mappings in the first call. |
| 1119 |
In scalar context only the field tag of the first mapping is returned. |
| 1112 |
|
1120 |
|
| 1113 |
=cut |
1121 |
=cut |
| 1114 |
|
1122 |
|
| 1115 |
sub GetMarcFromKohaField { |
1123 |
sub GetMarcFromKohaField { |
| 1116 |
my ( $kohafield, $frameworkcode ) = @_; |
1124 |
my ( $kohafield ) = @_; |
| 1117 |
return (0, undef) unless $kohafield; |
1125 |
return unless $kohafield; |
| 1118 |
my $mss = GetMarcSubfieldStructure( $frameworkcode ); |
1126 |
# The next call uses the Default framework since it is AUTHORITATIVE |
|
|
1127 |
# for all Koha to MARC mappings. |
| 1128 |
my $mss = GetMarcSubfieldStructure( '' ); # Do not change framework |
| 1119 |
my @retval; |
1129 |
my @retval; |
| 1120 |
foreach( @{ $mss->{$kohafield} } ) { |
1130 |
foreach( @{ $mss->{$kohafield} } ) { |
| 1121 |
push @retval, $_->{tagfield}, $_->{tagsubfield}; |
1131 |
push @retval, $_->{tagfield}, $_->{tagsubfield}; |
| 1122 |
} |
1132 |
} |
| 1123 |
return wantarray ? @retval : $retval[0]; |
1133 |
return wantarray ? @retval : ( @retval ? $retval[0] : undef ); |
| 1124 |
} |
1134 |
} |
| 1125 |
|
1135 |
|
| 1126 |
=head2 GetMarcSubfieldStructureFromKohaField |
1136 |
=head2 GetMarcSubfieldStructureFromKohaField |
| 1127 |
|
1137 |
|
| 1128 |
my $subfield_structure = &GetMarcSubfieldStructureFromKohaField($kohafield, $frameworkcode); |
1138 |
my $str = GetMarcSubfieldStructureFromKohaField( $kohafield ); |
| 1129 |
|
|
|
| 1130 |
Returns a hashref where keys are marc_subfield_structure column names for the |
| 1131 |
row where kohafield=$kohafield for the given framework code. |
| 1132 |
In list context returns a list of those hashrefs in case duplicate Koha to |
| 1133 |
MARC mappings exist. |
| 1134 |
|
1139 |
|
| 1135 |
$frameworkcode is optional. If not given, then the default framework is used. |
1140 |
Returns marc subfield structure information for $kohafield. |
|
|
1141 |
The Default framework is used, since it is authoritative for kohafield |
| 1142 |
mappings. |
| 1143 |
In list context returns a list of all hashrefs, since there may be |
| 1144 |
multiple mappings. In scalar context the first hashref is returned. |
| 1136 |
|
1145 |
|
| 1137 |
=cut |
1146 |
=cut |
| 1138 |
|
1147 |
|
| 1139 |
sub GetMarcSubfieldStructureFromKohaField { |
1148 |
sub GetMarcSubfieldStructureFromKohaField { |
| 1140 |
my ( $kohafield, $frameworkcode ) = @_; |
1149 |
my ( $kohafield ) = @_; |
| 1141 |
|
1150 |
|
| 1142 |
return unless $kohafield; |
1151 |
return unless $kohafield; |
| 1143 |
|
1152 |
|
| 1144 |
my $mss = GetMarcSubfieldStructure( $frameworkcode ); |
1153 |
# The next call uses the Default framework since it is AUTHORITATIVE |
|
|
1154 |
# for all Koha to MARC mappings. |
| 1155 |
my $mss = GetMarcSubfieldStructure(''); # Do not change framework |
| 1145 |
return unless $mss->{$kohafield}; |
1156 |
return unless $mss->{$kohafield}; |
| 1146 |
return wantarray ? @{$mss->{$kohafield}} : $mss->{$kohafield}->[0]; |
1157 |
return wantarray ? @{$mss->{$kohafield}} : $mss->{$kohafield}->[0]; |
| 1147 |
} |
1158 |
} |
|
Lines 2140-2163
sub GetFrameworkCode {
Link Here
|
| 2140 |
|
2151 |
|
| 2141 |
=head2 TransformKohaToMarc |
2152 |
=head2 TransformKohaToMarc |
| 2142 |
|
2153 |
|
| 2143 |
$record = TransformKohaToMarc( $hash ) |
2154 |
$record = TransformKohaToMarc( $hash [, $params ] ) |
| 2144 |
|
2155 |
|
| 2145 |
This function builds partial MARC::Record from a hash |
2156 |
This function builds a (partial) MARC::Record from a hash. |
| 2146 |
Hash entries can be from biblio or biblioitems. |
2157 |
Hash entries can be from biblio, biblioitems or items. |
|
|
2158 |
The params hash includes the parameter no_split used in C4::Items. |
| 2147 |
|
2159 |
|
| 2148 |
This function is called in acquisition module, to create a basic catalogue |
2160 |
This function is called in acquisition module, to create a basic catalogue |
| 2149 |
entry from user entry |
2161 |
entry from user entry. |
| 2150 |
|
2162 |
|
| 2151 |
=cut |
2163 |
=cut |
| 2152 |
|
2164 |
|
| 2153 |
|
2165 |
|
| 2154 |
sub TransformKohaToMarc { |
2166 |
sub TransformKohaToMarc { |
| 2155 |
my ( $hash, $frameworkcode, $params ) = @_; |
2167 |
my ( $hash, $params ) = @_; |
| 2156 |
my $record = MARC::Record->new(); |
2168 |
my $record = MARC::Record->new(); |
| 2157 |
SetMarcUnicodeFlag( $record, C4::Context->preference("marcflavour") ); |
2169 |
SetMarcUnicodeFlag( $record, C4::Context->preference("marcflavour") ); |
| 2158 |
# NOTE: Many older calls do not include a frameworkcode. In that case |
2170 |
|
| 2159 |
# we default to Default framework. |
2171 |
# In the next call we use the Default framework, since it is considered |
| 2160 |
my $mss = GetMarcSubfieldStructure( $frameworkcode//'' ); |
2172 |
# authoritative for Koha to Marc mappings. |
|
|
2173 |
my $mss = GetMarcSubfieldStructure( '' ); # do not change framework |
| 2161 |
my $tag_hr = {}; |
2174 |
my $tag_hr = {}; |
| 2162 |
while ( my ($kohafield, $value) = each %$hash ) { |
2175 |
while ( my ($kohafield, $value) = each %$hash ) { |
| 2163 |
foreach my $fld ( @{ $mss->{$kohafield} } ) { |
2176 |
foreach my $fld ( @{ $mss->{$kohafield} } ) { |
|
Lines 2542-2560
sub TransformHtmlToMarc {
Link Here
|
| 2542 |
|
2555 |
|
| 2543 |
=head2 TransformMarcToKoha |
2556 |
=head2 TransformMarcToKoha |
| 2544 |
|
2557 |
|
| 2545 |
$result = TransformMarcToKoha( $record, $frameworkcode, $limit ) |
2558 |
$result = TransformMarcToKoha( $record, undef, $limit ) |
| 2546 |
|
2559 |
|
| 2547 |
Extract data from a MARC bib record into a hashref representing |
2560 |
Extract data from a MARC bib record into a hashref representing |
| 2548 |
Koha biblio, biblioitems, and items fields. |
2561 |
Koha biblio, biblioitems, and items fields. |
| 2549 |
|
2562 |
|
| 2550 |
If passed an undefined record will log the error and return an empty |
2563 |
If passed an undefined record will log the error and return an empty |
| 2551 |
hash_ref |
2564 |
hash_ref. |
| 2552 |
|
2565 |
|
| 2553 |
=cut |
2566 |
=cut |
| 2554 |
|
2567 |
|
| 2555 |
sub TransformMarcToKoha { |
2568 |
sub TransformMarcToKoha { |
| 2556 |
my ( $record, $frameworkcode, $limit_table ) = @_; |
2569 |
my ( $record, $frameworkcode, $limit_table ) = @_; |
| 2557 |
$frameworkcode //= q{}; |
2570 |
# FIXME Parameter $frameworkcode is obsolete and will be removed |
| 2558 |
$limit_table //= q{}; |
2571 |
$limit_table //= q{}; |
| 2559 |
|
2572 |
|
| 2560 |
my $result = {}; |
2573 |
my $result = {}; |
|
Lines 2568-2580
sub TransformMarcToKoha {
Link Here
|
| 2568 |
%tables = ( items => 1 ); |
2581 |
%tables = ( items => 1 ); |
| 2569 |
} |
2582 |
} |
| 2570 |
|
2583 |
|
| 2571 |
my $mss = GetMarcSubfieldStructure( $frameworkcode ); |
2584 |
# The next call acknowledges Default as the authoritative framework |
|
|
2585 |
# for Koha to MARC mappings. |
| 2586 |
my $mss = GetMarcSubfieldStructure(''); # Do not change framework |
| 2572 |
foreach my $kohafield ( keys %{ $mss } ) { |
2587 |
foreach my $kohafield ( keys %{ $mss } ) { |
| 2573 |
my ( $table, $column ) = split /[.]/, $kohafield, 2; |
2588 |
my ( $table, $column ) = split /[.]/, $kohafield, 2; |
| 2574 |
next unless $tables{$table}; |
2589 |
next unless $tables{$table}; |
| 2575 |
my $val = TransformMarcToKohaOneField( |
2590 |
my $val = TransformMarcToKohaOneField( $kohafield, $record ); |
| 2576 |
$kohafield, $record, $frameworkcode, |
|
|
| 2577 |
); |
| 2578 |
next if !defined $val; |
2591 |
next if !defined $val; |
| 2579 |
my $key = _disambiguate( $table, $column ); |
2592 |
my $key = _disambiguate( $table, $column ); |
| 2580 |
$result->{$key} = $val; |
2593 |
$result->{$key} = $val; |
|
Lines 2623-2637
sub _disambiguate {
Link Here
|
| 2623 |
|
2636 |
|
| 2624 |
=head2 TransformMarcToKohaOneField |
2637 |
=head2 TransformMarcToKohaOneField |
| 2625 |
|
2638 |
|
| 2626 |
$val = TransformMarcToKohaOneField( 'biblio.title', $marc, $frameworkcode ); |
2639 |
$val = TransformMarcToKohaOneField( 'biblio.title', $marc ); |
|
|
2640 |
|
| 2641 |
Note: The authoritative Default framework is used implicitly. |
| 2627 |
|
2642 |
|
| 2628 |
=cut |
2643 |
=cut |
| 2629 |
|
2644 |
|
| 2630 |
sub TransformMarcToKohaOneField { |
2645 |
sub TransformMarcToKohaOneField { |
| 2631 |
my ( $kohafield, $marc, $frameworkcode ) = @_; |
2646 |
my ( $kohafield, $marc ) = @_; |
| 2632 |
|
2647 |
|
| 2633 |
my ( @rv, $retval ); |
2648 |
my ( @rv, $retval ); |
| 2634 |
my @mss = GetMarcSubfieldStructureFromKohaField($kohafield, $frameworkcode); |
2649 |
my @mss = GetMarcSubfieldStructureFromKohaField($kohafield); |
| 2635 |
foreach my $fldhash ( @mss ) { |
2650 |
foreach my $fldhash ( @mss ) { |
| 2636 |
my $tag = $fldhash->{tagfield}; |
2651 |
my $tag = $fldhash->{tagfield}; |
| 2637 |
my $sub = $fldhash->{tagsubfield}; |
2652 |
my $sub = $fldhash->{tagsubfield}; |