Lines 1109-1151
sub GetMarcSubfieldStructure {
Link Here
|
1109 |
|
1109 |
|
1110 |
=head2 GetMarcFromKohaField |
1110 |
=head2 GetMarcFromKohaField |
1111 |
|
1111 |
|
1112 |
($MARCfield,$MARCsubfield)=GetMarcFromKohaField($kohafield,$frameworkcode); |
1112 |
( $field,$subfield ) = GetMarcFromKohaField( $kohafield ); |
|
|
1113 |
@fields = GetMarcFromKohaField( $kohafield ); |
1114 |
$field = GetMarcFromKohaField( $kohafield ); |
1113 |
|
1115 |
|
1114 |
Returns the MARC fields & subfields mapped to the koha field |
1116 |
Returns the MARC fields & subfields mapped to $kohafield. |
1115 |
for the given frameworkcode or default framework if $frameworkcode is missing |
1117 |
Since the Default framework is considered as authoritative for such |
|
|
1118 |
mappings, the former frameworkcode parameter is obsoleted. |
1119 |
|
1120 |
In list context all mappings are returned; there can be multiple |
1121 |
mappings. Note that in the above example you could miss a second |
1122 |
mappings in the first call. |
1123 |
In scalar context only the field tag of the first mapping is returned. |
1116 |
|
1124 |
|
1117 |
=cut |
1125 |
=cut |
1118 |
|
1126 |
|
1119 |
sub GetMarcFromKohaField { |
1127 |
sub GetMarcFromKohaField { |
1120 |
my ( $kohafield, $frameworkcode ) = @_; |
1128 |
my ( $kohafield ) = @_; |
1121 |
return (0, undef) unless $kohafield; |
1129 |
return unless $kohafield; |
1122 |
my $mss = GetMarcSubfieldStructure( $frameworkcode ); |
1130 |
# The next call uses the Default framework since it is AUTHORITATIVE |
|
|
1131 |
# for all Koha to MARC mappings. |
1132 |
my $mss = GetMarcSubfieldStructure( '' ); # Do not change framework |
1123 |
my @retval; |
1133 |
my @retval; |
1124 |
foreach( @{ $mss->{$kohafield} } ) { |
1134 |
foreach( @{ $mss->{$kohafield} } ) { |
1125 |
push @retval, $_->{tagfield}, $_->{tagsubfield}; |
1135 |
push @retval, $_->{tagfield}, $_->{tagsubfield}; |
1126 |
} |
1136 |
} |
1127 |
return wantarray ? @retval : $retval[0]; |
1137 |
return wantarray ? @retval : ( @retval ? $retval[0] : undef ); |
1128 |
} |
1138 |
} |
1129 |
|
1139 |
|
1130 |
=head2 GetMarcSubfieldStructureFromKohaField |
1140 |
=head2 GetMarcSubfieldStructureFromKohaField |
1131 |
|
1141 |
|
1132 |
my $subfield_structure = &GetMarcSubfieldStructureFromKohaField($kohafield, $frameworkcode); |
1142 |
my $str = GetMarcSubfieldStructureFromKohaField( $kohafield ); |
1133 |
|
|
|
1134 |
Returns a hashref where keys are marc_subfield_structure column names for the |
1135 |
row where kohafield=$kohafield for the given framework code. |
1136 |
In list context returns a list of those hashrefs in case duplicate Koha to |
1137 |
MARC mappings exist. |
1138 |
|
1143 |
|
1139 |
$frameworkcode is optional. If not given, then the default framework is used. |
1144 |
Returns marc subfield structure information for $kohafield. |
|
|
1145 |
The Default framework is used, since it is authoritative for kohafield |
1146 |
mappings. |
1147 |
In list context returns a list of all hashrefs, since there may be |
1148 |
multiple mappings. In scalar context the first hashref is returned. |
1140 |
|
1149 |
|
1141 |
=cut |
1150 |
=cut |
1142 |
|
1151 |
|
1143 |
sub GetMarcSubfieldStructureFromKohaField { |
1152 |
sub GetMarcSubfieldStructureFromKohaField { |
1144 |
my ( $kohafield, $frameworkcode ) = @_; |
1153 |
my ( $kohafield ) = @_; |
1145 |
|
1154 |
|
1146 |
return unless $kohafield; |
1155 |
return unless $kohafield; |
1147 |
|
1156 |
|
1148 |
my $mss = GetMarcSubfieldStructure( $frameworkcode ); |
1157 |
# The next call uses the Default framework since it is AUTHORITATIVE |
|
|
1158 |
# for all Koha to MARC mappings. |
1159 |
my $mss = GetMarcSubfieldStructure(''); # Do not change framework |
1149 |
return unless $mss->{$kohafield}; |
1160 |
return unless $mss->{$kohafield}; |
1150 |
return wantarray ? @{$mss->{$kohafield}} : $mss->{$kohafield}->[0]; |
1161 |
return wantarray ? @{$mss->{$kohafield}} : $mss->{$kohafield}->[0]; |
1151 |
} |
1162 |
} |
Lines 2158-2181
sub GetFrameworkCode {
Link Here
|
2158 |
|
2169 |
|
2159 |
=head2 TransformKohaToMarc |
2170 |
=head2 TransformKohaToMarc |
2160 |
|
2171 |
|
2161 |
$record = TransformKohaToMarc( $hash ) |
2172 |
$record = TransformKohaToMarc( $hash [, $params ] ) |
2162 |
|
2173 |
|
2163 |
This function builds partial MARC::Record from a hash |
2174 |
This function builds a (partial) MARC::Record from a hash. |
2164 |
Hash entries can be from biblio or biblioitems. |
2175 |
Hash entries can be from biblio, biblioitems or items. |
|
|
2176 |
The params hash includes the parameter no_split used in C4::Items. |
2165 |
|
2177 |
|
2166 |
This function is called in acquisition module, to create a basic catalogue |
2178 |
This function is called in acquisition module, to create a basic catalogue |
2167 |
entry from user entry |
2179 |
entry from user entry. |
2168 |
|
2180 |
|
2169 |
=cut |
2181 |
=cut |
2170 |
|
2182 |
|
2171 |
|
2183 |
|
2172 |
sub TransformKohaToMarc { |
2184 |
sub TransformKohaToMarc { |
2173 |
my ( $hash, $frameworkcode, $params ) = @_; |
2185 |
my ( $hash, $params ) = @_; |
2174 |
my $record = MARC::Record->new(); |
2186 |
my $record = MARC::Record->new(); |
2175 |
SetMarcUnicodeFlag( $record, C4::Context->preference("marcflavour") ); |
2187 |
SetMarcUnicodeFlag( $record, C4::Context->preference("marcflavour") ); |
2176 |
# NOTE: Many older calls do not include a frameworkcode. In that case |
2188 |
|
2177 |
# we default to Default framework. |
2189 |
# In the next call we use the Default framework, since it is considered |
2178 |
my $mss = GetMarcSubfieldStructure( $frameworkcode//'' ); |
2190 |
# authoritative for Koha to Marc mappings. |
|
|
2191 |
my $mss = GetMarcSubfieldStructure( '' ); # do not change framework |
2179 |
my $tag_hr = {}; |
2192 |
my $tag_hr = {}; |
2180 |
while ( my ($kohafield, $value) = each %$hash ) { |
2193 |
while ( my ($kohafield, $value) = each %$hash ) { |
2181 |
foreach my $fld ( @{ $mss->{$kohafield} } ) { |
2194 |
foreach my $fld ( @{ $mss->{$kohafield} } ) { |
Lines 2560-2578
sub TransformHtmlToMarc {
Link Here
|
2560 |
|
2573 |
|
2561 |
=head2 TransformMarcToKoha |
2574 |
=head2 TransformMarcToKoha |
2562 |
|
2575 |
|
2563 |
$result = TransformMarcToKoha( $record, $frameworkcode, $limit ) |
2576 |
$result = TransformMarcToKoha( $record, undef, $limit ) |
2564 |
|
2577 |
|
2565 |
Extract data from a MARC bib record into a hashref representing |
2578 |
Extract data from a MARC bib record into a hashref representing |
2566 |
Koha biblio, biblioitems, and items fields. |
2579 |
Koha biblio, biblioitems, and items fields. |
2567 |
|
2580 |
|
2568 |
If passed an undefined record will log the error and return an empty |
2581 |
If passed an undefined record will log the error and return an empty |
2569 |
hash_ref |
2582 |
hash_ref. |
2570 |
|
2583 |
|
2571 |
=cut |
2584 |
=cut |
2572 |
|
2585 |
|
2573 |
sub TransformMarcToKoha { |
2586 |
sub TransformMarcToKoha { |
2574 |
my ( $record, $frameworkcode, $limit_table ) = @_; |
2587 |
my ( $record, $frameworkcode, $limit_table ) = @_; |
2575 |
$frameworkcode //= q{}; |
2588 |
# FIXME Parameter $frameworkcode is obsolete and will be removed |
2576 |
$limit_table //= q{}; |
2589 |
$limit_table //= q{}; |
2577 |
|
2590 |
|
2578 |
my $result = {}; |
2591 |
my $result = {}; |
Lines 2586-2598
sub TransformMarcToKoha {
Link Here
|
2586 |
%tables = ( items => 1 ); |
2599 |
%tables = ( items => 1 ); |
2587 |
} |
2600 |
} |
2588 |
|
2601 |
|
2589 |
my $mss = GetMarcSubfieldStructure( $frameworkcode ); |
2602 |
# The next call acknowledges Default as the authoritative framework |
|
|
2603 |
# for Koha to MARC mappings. |
2604 |
my $mss = GetMarcSubfieldStructure(''); # Do not change framework |
2590 |
foreach my $kohafield ( keys %{ $mss } ) { |
2605 |
foreach my $kohafield ( keys %{ $mss } ) { |
2591 |
my ( $table, $column ) = split /[.]/, $kohafield, 2; |
2606 |
my ( $table, $column ) = split /[.]/, $kohafield, 2; |
2592 |
next unless $tables{$table}; |
2607 |
next unless $tables{$table}; |
2593 |
my $val = TransformMarcToKohaOneField( |
2608 |
my $val = TransformMarcToKohaOneField( $kohafield, $record ); |
2594 |
$kohafield, $record, $frameworkcode, |
|
|
2595 |
); |
2596 |
next if !defined $val; |
2609 |
next if !defined $val; |
2597 |
my $key = _disambiguate( $table, $column ); |
2610 |
my $key = _disambiguate( $table, $column ); |
2598 |
$result->{$key} = $val; |
2611 |
$result->{$key} = $val; |
Lines 2641-2655
sub _disambiguate {
Link Here
|
2641 |
|
2654 |
|
2642 |
=head2 TransformMarcToKohaOneField |
2655 |
=head2 TransformMarcToKohaOneField |
2643 |
|
2656 |
|
2644 |
$val = TransformMarcToKohaOneField( 'biblio.title', $marc, $frameworkcode ); |
2657 |
$val = TransformMarcToKohaOneField( 'biblio.title', $marc ); |
|
|
2658 |
|
2659 |
Note: The authoritative Default framework is used implicitly. |
2645 |
|
2660 |
|
2646 |
=cut |
2661 |
=cut |
2647 |
|
2662 |
|
2648 |
sub TransformMarcToKohaOneField { |
2663 |
sub TransformMarcToKohaOneField { |
2649 |
my ( $kohafield, $marc, $frameworkcode ) = @_; |
2664 |
my ( $kohafield, $marc ) = @_; |
2650 |
|
2665 |
|
2651 |
my ( @rv, $retval ); |
2666 |
my ( @rv, $retval ); |
2652 |
my @mss = GetMarcSubfieldStructureFromKohaField($kohafield, $frameworkcode); |
2667 |
my @mss = GetMarcSubfieldStructureFromKohaField($kohafield); |
2653 |
foreach my $fldhash ( @mss ) { |
2668 |
foreach my $fldhash ( @mss ) { |
2654 |
my $tag = $fldhash->{tagfield}; |
2669 |
my $tag = $fldhash->{tagfield}; |
2655 |
my $sub = $fldhash->{tagsubfield}; |
2670 |
my $sub = $fldhash->{tagsubfield}; |