From 70be5215ffa388192e2d8f35b0629d3a8d8934cd Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 17 Jul 2024 11:04:47 +0100 Subject: [PATCH] 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. --- C4/Biblio.pm | 129 --------------------------------------- cataloguing/addbiblio.pl | 4 +- 2 files changed, 2 insertions(+), 131 deletions(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 4b32ad43d52..246cd14f8b9 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -62,7 +62,6 @@ BEGIN { TransformMarcToKoha TransformHtmlToMarc TransformHtmlToXml - prepare_host_field ); # Internal functions @@ -2935,134 +2934,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]) diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl index 99c20580b51..afb4085fa8e 100755 --- a/cataloguing/addbiblio.pl +++ b/cataloguing/addbiblio.pl @@ -34,7 +34,6 @@ use C4::Biblio qw( GetMarcStructure GetUsedMarcStructure ModBiblio - prepare_host_field PrepHostMarcField TransformHtmlToMarc ApplyMarcOverlayRules @@ -648,7 +647,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); } -- 2.45.2