@@ -, +, @@ Koha::Biblio->get_openurl --- C4/Biblio.pm | 29 ----------------------------- C4/XSLT.pm | 3 +-- Koha/Biblio.pm | 29 +++++++++++++++++++++++++++++ t/db_dependent/Biblio.t | 6 +++--- 4 files changed, 33 insertions(+), 34 deletions(-) --- a/C4/Biblio.pm +++ a/C4/Biblio.pm @@ -1397,35 +1397,6 @@ sub GetCOinSBiblio { return $coins_value; } -=head2 GetOpenURLResolverURL - - my $url = C4::Biblio::GetOpenURLResolverURL($record); - - Takes MARC::Record and return url for OpenURL resolver set in OpenURLResolverURL - -=cut - -sub GetOpenURLResolverURL { - my ($record) = @_; - - my $coins = GetCOinSBiblio($record); - my $OpenURLResolverURL = C4::Context->preference('OpenURLResolverURL'); - - if ($OpenURLResolverURL) { - my $uri = URI->new($OpenURLResolverURL); - - if (not defined $uri->query) { - $OpenURLResolverURL .= '?'; - } else { - $OpenURLResolverURL .= '&'; - } - $OpenURLResolverURL .= $coins; - } - - return $OpenURLResolverURL; -} - - =head2 GetMarcPrice return the prices in accordance with the Marc format. --- a/C4/XSLT.pm +++ a/C4/XSLT.pm @@ -251,8 +251,7 @@ sub XSLTParse4Display { my $biblio = $biblio_object->biblioitem->unblessed; my @itypes = split( /\s/, C4::Context->preference('OPACOpenURLItemTypes') ); if (grep /^$biblio->{itemtype}$/, @itypes) { - $variables->{OpenURLResolverURL} = - C4::Biblio::GetOpenURLResolverURL($orig_record); + $variables->{OpenURLResolverURL} = $biblio_object->get_openurl; } } my $varxml = "\n"; --- a/Koha/Biblio.pm +++ a/Koha/Biblio.pm @@ -442,6 +442,35 @@ sub has_items_waiting_or_intransit { return 0; } +=head2 get_openurl + + my $biblio = Koha::Biblios->find( $biblionumber ); + my $url = $biblio->get_openurl; + + Takes MARC::Record and return url for OpenURL resolver set in OpenURLResolverURL + +=cut + +sub get_openurl { + my ( $self ) = @_; + + my $coins = C4::Biblio::GetCOinSBiblio( $self->metadata->record); + my $OpenURLResolverURL = C4::Context->preference('OpenURLResolverURL'); + + if ($OpenURLResolverURL) { + my $uri = URI->new($OpenURLResolverURL); + + if (not defined $uri->query) { + $OpenURLResolverURL .= '?'; + } else { + $OpenURLResolverURL .= '&'; + } + $OpenURLResolverURL .= $coins; + } + + return $OpenURLResolverURL; +} + =head3 type =cut --- a/t/db_dependent/Biblio.t +++ a/t/db_dependent/Biblio.t @@ -574,7 +574,7 @@ subtest 'MarcFieldForCreatorAndModifier' => sub { Koha::Caches->get_instance->clear_from_cache( "MarcSubfieldStructure-" ); $schema->storage->txn_rollback; -subtest 'GetCOinSBiblio and GetOpenURLResolverURL' => sub { +subtest 'GetCOinSBiblio and get_openurl' => sub { plan tests => 2; $schema->storage->txn_begin; @@ -595,9 +595,9 @@ subtest 'GetCOinSBiblio and GetOpenURLResolverURL' => sub { ); is( - C4::Biblio::GetOpenURLResolverURL($record), + $biblio->get_openurl, 'https://koha.example.com/?ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Title%201&rft.au=Author%201', - 'GetOpenURLResolverURL returned right URL' + 'Koha::Biblio->get_openurl returned right URL' ); $schema->storage->txn_rollback; --