Bug 37305: Remove C4::Biblio::prepare_host_field

This patch updates the only use of prepare_host_field to use the well
tested Koha::Biblio->generate_marc_host_field method instead and then
removes the aforementioned prepare_host_field method from C4::Biblio.

Test plan
1) Ensure the "enhanced workflow" for creating analytics still functions
   as expected.

Sponsored-by: Open Fifth <https://openfifth.co.uk>
Signed-off-by: Heather Hernandez <flyingendpaper@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 3e627d7a77)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
This commit is contained in:
Martin Renvoize 2024-07-17 11:04:47 +01:00 committed by Paul Derscheid
parent ac2ca31d87
commit a5949e7575
No known key found for this signature in database
GPG Key ID: C25F9FD44CED595B
2 changed files with 2 additions and 138 deletions

View File

@ -62,7 +62,6 @@ BEGIN {
TransformMarcToKoha
TransformHtmlToMarc
TransformHtmlToXml
prepare_host_field
);
# Internal functions
@ -2998,141 +2997,6 @@ sub ModBiblioMarc {
return $biblionumber;
}
=head2 prepare_host_field
$marcfield = prepare_host_field( $hostbiblioitem, $marcflavour );
Generate the host item entry for an analytic child entry
=cut
sub prepare_host_field {
my ( $hostbiblio, $marcflavour ) = @_;
$marcflavour ||= C4::Context->preference('marcflavour');
my $biblio = Koha::Biblios->find($hostbiblio);
my $host = $biblio->metadata->record;
# unfortunately as_string does not 'do the right thing'
# if field returns undef
my %sfd;
my $field;
my $host_field;
if ( $marcflavour eq 'MARC21' ) {
if ( $field = $host->field('100') || $host->field('110') || $host->field('11') ) {
my $s = $field->as_string('ab');
if ($s) {
$sfd{a} = $s;
}
}
if ( $field = $host->field('245') ) {
my $s = $field->as_string('a');
if ($s) {
$sfd{t} = $s;
}
}
if ( $field = $host->field('260') ) {
my $s = $field->as_string('abc');
if ($s) {
$sfd{d} = $s;
}
}
if ( $field = $host->field('240') ) {
my $s = $field->as_string();
if ($s) {
$sfd{b} = $s;
}
}
if ( $field = $host->field('022') ) {
my $s = $field->as_string('a');
if ($s) {
$sfd{x} = $s;
}
}
if ( $field = $host->field('020') ) {
my $s = $field->as_string('a');
if ($s) {
$sfd{z} = $s;
}
}
if ( $field = $host->field('001') ) {
$sfd{w} = $field->data(),;
}
$host_field = MARC::Field->new( 773, '0', ' ', %sfd );
return $host_field;
} elsif ( $marcflavour eq 'UNIMARC' ) {
#author
if ( $field = $host->field('700') || $host->field('710') || $host->field('720') ) {
my $s = $field->as_string('ab');
if ($s) {
$sfd{a} = $s;
}
}
#title
if ( $field = $host->field('200') ) {
my $s = $field->as_string('a');
if ($s) {
$sfd{t} = $s;
}
}
#place of publicaton
if ( $field = $host->field('210') ) {
my $s = $field->as_string('a');
if ($s) {
$sfd{c} = $s;
}
}
#date of publication
if ( $field = $host->field('210') ) {
my $s = $field->as_string('d');
if ($s) {
$sfd{d} = $s;
}
}
#edition statement
if ( $field = $host->field('205') ) {
my $s = $field->as_string();
if ($s) {
$sfd{e} = $s;
}
}
#URL
if ( $field = $host->field('856') ) {
my $s = $field->as_string('u');
if ($s) {
$sfd{u} = $s;
}
}
#ISSN
if ( $field = $host->field('011') ) {
my $s = $field->as_string('a');
if ($s) {
$sfd{x} = $s;
}
}
#ISBN
if ( $field = $host->field('010') ) {
my $s = $field->as_string('a');
if ($s) {
$sfd{y} = $s;
}
}
if ( $field = $host->field('001') ) {
$sfd{0} = $field->data(),;
}
$host_field = MARC::Field->new( 461, '0', ' ', %sfd );
return $host_field;
}
return;
}
=head2 UpdateTotalIssues
UpdateTotalIssues($biblionumber, $increase, [$value])

View File

@ -33,7 +33,6 @@ use C4::Biblio qw(
GetMarcStructure
GetUsedMarcStructure
ModBiblio
prepare_host_field
PrepHostMarcField
TransformHtmlToMarc
ApplyMarcOverlayRules
@ -646,7 +645,8 @@ if ($parentbiblio) {
my $marcflavour = C4::Context->preference('marcflavour');
$record = MARC::Record->new();
SetMarcUnicodeFlag( $record, $marcflavour );
my $hostfield = prepare_host_field( $parentbiblio, $marcflavour );
my $parent = Koha::Biblios->find($parentbiblio);
my $hostfield = $parent->generate_marc_host_field;
if ($hostfield) {
$record->append_fields($hostfield);
}