Bugzilla – Attachment 148083 Details for
Bug 33167
Cleanup staff interface catalog details page
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33167: Add 'host_items' param to Koha::Biblio->items
Bug-33167-Add-hostitems-param-to-KohaBiblio-items.patch (text/plain), 3.73 KB, created by
Nick Clemens (kidclamp)
on 2023-03-10 16:16:38 UTC
(
hide
)
Description:
Bug 33167: Add 'host_items' param to Koha::Biblio->items
Filename:
MIME Type:
Creator:
Nick Clemens (kidclamp)
Created:
2023-03-10 16:16:38 UTC
Size:
3.73 KB
patch
obsolete
>From f0b7c8532f121185e4b2406424e8e47ab8d9aa40 Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Fri, 10 Mar 2023 12:37:49 +0000 >Subject: [PATCH] Bug 33167: Add 'host_items' param to Koha::Biblio->items > >This patch adds an option to the $biblio->items method to allow >retrieving the items and analytic items for a record. This is intended >to allow fetching a single Items object, and related object, rather than >having to fetch the items, and the host items, and push them together > >To test: >1 - prove -v t/db_dependent/Koha/Biblio.t >--- > Koha/Biblio.pm | 35 +++++++++++++++++++++++++++-------- > t/db_dependent/Koha/Biblio.t | 14 +++++++++++++- > 2 files changed, 40 insertions(+), 9 deletions(-) > >diff --git a/Koha/Biblio.pm b/Koha/Biblio.pm >index 6f74ce9741..0e06a14fa0 100644 >--- a/Koha/Biblio.pm >+++ b/Koha/Biblio.pm >@@ -429,11 +429,17 @@ Returns the related Koha::Items object for this biblio > =cut > > sub items { >- my ($self) = @_; >+ my ($self,$params) = @_; > > my $items_rs = $self->_result->items; > >- return Koha::Items->_new_from_dbic( $items_rs ); >+ return Koha::Items->_new_from_dbic( $items_rs ) unless $params->{host_items}; >+ >+ my $host_itemnumbers = $self->_host_itemnumbers(); >+ my $params = { -or => [biblionumber => $self->id] }; >+ push @{$params->{'-or'}}, itemnumber => { -in => $host_itemnumbers } if $host_itemnumbers; >+ >+ return Koha::Items->search($params); > } > > =head3 host_items >@@ -450,12 +456,25 @@ sub host_items { > return Koha::Items->new->empty > unless C4::Context->preference('EasyAnalyticalRecords'); > >+ my $host_itemnumbers = $self->_host_itemnumbers; >+ >+ return Koha::Items->search( { itemnumber => { -in => $host_itemnumbers } } ); >+} >+ >+=head3 _host_itemnumbers >+ >+my $host_itemnumber = $biblio->_host_itemnumbers(); >+ >+Return the itemnumbers for analytical items on this record >+ >+=cut >+ >+sub _host_itemnumbers { >+ my ($self) = @_; >+ > my $marcflavour = C4::Context->preference("marcflavour"); > my $analyticfield = '773'; >- if ( $marcflavour eq 'MARC21' ) { >- $analyticfield = '773'; >- } >- elsif ( $marcflavour eq 'UNIMARC' ) { >+ if ( $marcflavour eq 'UNIMARC' ) { > $analyticfield = '461'; > } > my $marc_record = $self->metadata->record; >@@ -463,10 +482,10 @@ sub host_items { > foreach my $field ( $marc_record->field($analyticfield) ) { > push @itemnumbers, $field->subfield('9'); > } >- >- return Koha::Items->search( { itemnumber => { -in => \@itemnumbers } } ); >+ return \@itemnumbers; > } > >+ > =head3 itemtype > > my $itemtype = $biblio->itemtype(); >diff --git a/t/db_dependent/Koha/Biblio.t b/t/db_dependent/Koha/Biblio.t >index 188625e113..d47ce86ff4 100755 >--- a/t/db_dependent/Koha/Biblio.t >+++ b/t/db_dependent/Koha/Biblio.t >@@ -804,7 +804,7 @@ subtest 'get_marc_notes() UNIMARC tests' => sub { > }; > > subtest 'host_items() tests' => sub { >- plan tests => 6; >+ plan tests => 7; > > $schema->storage->txn_begin; > >@@ -840,6 +840,18 @@ subtest 'host_items() tests' => sub { > is( ref($host_items), 'Koha::Items' ); > is( $host_items->count, 0 ); > >+ subtest 'test host_items param in items()' => sub { >+ plan tests => 4; >+ >+ my $items = $biblio->items; >+ is( $items->count, 1, "Without host_items param we only get the items on the biblio"); >+ $items = $biblio->items({ host_items => 1 }); >+ is( $items->count, 3, "With param host_items we get the biblio items plus analytics"); >+ is( ref($items), 'Koha::Items', "We correctly get an Items object"); >+ is_deeply( [ $items->get_column('itemnumber') ], >+ [ $item_1->itemnumber, $host_item_1->itemnumber, $host_item_2->itemnumber ] ); >+ }; >+ > $schema->storage->txn_rollback; > }; > >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 33167
:
148029
|
148082
|
148083
|
148084
|
148085
|
148431
|
148432
|
148433
|
148434
|
149677
|
149704
|
150075
|
150076