From 091d6c513bcbee224ff06477e79be48cea7fe825 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 4 Jan 2017 10:30:47 +0100 Subject: [PATCH] Bug 17843: Replace C4::Koha::getitemtypeinfo with Koha::ItemTypes The C4::Koha::getitemtypeinfo subroutine did the almost same job as GetItemTypes. On top of that it returned the imageurl value processed by C4::Koha::getitemtypeimagelocation. This value is only used from the 2 [opac-]shelves.pl scripts. Then it's better not retrieve it only when we need it. Test plan: Play with the different scripts touched by this patch and focus on item types. The same description as prior to this patch must be displayed. Note that sometimes it is not the translated description which is displayed, but that should be fixed on another bug report. Indeed we do not expect this patch to change any behaviors. Signed-off-by: Lari Taskula Signed-off-by: Marcel de Rooy --- C4/Biblio.pm | 4 +++- Koha/Template/Plugin/ItemTypes.pm | 6 +----- acqui/orderreceive.pl | 5 +++-- catalogue/getitem-ajax.pl | 5 +++-- circ/transferstoreceive.pl | 5 +++-- circ/waitingreserves.pl | 5 +++-- members/summary-print.pl | 6 +++--- opac/opac-browser.pl | 1 - opac/opac-search.pl | 3 ++- opac/opac-shelves.pl | 9 +++++---- opac/opac-tags_subject.pl | 1 - svc/checkouts | 5 +++-- svc/holds | 5 +++-- t/db_dependent/Koha.t | 8 +------- virtualshelves/shelves.pl | 9 +++++---- 15 files changed, 38 insertions(+), 39 deletions(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index d52d7807af..80ca362928 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -44,6 +44,7 @@ use Koha::Acquisition::Currencies; use Koha::Biblio::Metadata; use Koha::Biblio::Metadatas; use Koha::Holds; +use Koha::ItemTypes; use Koha::SearchEngine; use Koha::Libraries; @@ -1629,7 +1630,8 @@ sub GetAuthorisedValueDesc { #---- itemtypes if ( $tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "itemtypes" ) { - return getitemtypeinfo($value)->{translated_description}; + my $itemtype = Koha::ItemTypes->find( $value ); + return $itemtype ? $itemtype->translated_description : q||; } #---- "true" authorized value diff --git a/Koha/Template/Plugin/ItemTypes.pm b/Koha/Template/Plugin/ItemTypes.pm index 449a491669..74ccacc653 100644 --- a/Koha/Template/Plugin/ItemTypes.pm +++ b/Koha/Template/Plugin/ItemTypes.pm @@ -22,15 +22,11 @@ use Modern::Perl; use Template::Plugin; use base qw( Template::Plugin ); -use C4::Koha; use Koha::ItemTypes; sub GetDescription { my ( $self, $itemtype ) = @_; - - $itemtype = C4::Koha::getitemtypeinfo( $itemtype ); - return $itemtype->{translated_description}; - + return Koha::ItemTypes->find( $itemtype )->translated_description; } sub Get { diff --git a/acqui/orderreceive.pl b/acqui/orderreceive.pl index 837a117b52..752beba2f8 100755 --- a/acqui/orderreceive.pl +++ b/acqui/orderreceive.pl @@ -75,6 +75,7 @@ use C4::Koha; use Koha::Acquisition::Booksellers; use Koha::DateUtils qw( dt_from_string ); +use Koha::ItemTypes; my $input = new CGI; @@ -144,8 +145,8 @@ if ($AcqCreateItem eq 'receiving') { $descriptions = Koha::AuthorisedValues->get_description_by_koha_field({frameworkcode => $fw, kohafield => 'items.materials', authorised_value => $item->{materials} }); $item->{materials} = $descriptions->{lib} // ''; - my $itemtype = getitemtypeinfo($item->{itype}); - $item->{itemtype} = $itemtype->{description}; + my $itemtype = Koha::ItemsTypes->find( $item->{itype} ); + $item->{itemtype} = $itemtype->description; # FIXME Should not it be translated_description? push @items, $item; } $template->param(items => \@items); diff --git a/catalogue/getitem-ajax.pl b/catalogue/getitem-ajax.pl index 99814dc1a7..10df69ef75 100755 --- a/catalogue/getitem-ajax.pl +++ b/catalogue/getitem-ajax.pl @@ -29,6 +29,7 @@ use C4::Output; use Koha::Libraries; use Koha::AuthorisedValues; +use Koha::ItemTypes; my $cgi = new CGI; @@ -71,8 +72,8 @@ if($itemnumber) { $descriptions = Koha::AuthorisedValues->get_description_by_koha_field({ frameworkcode => $fw, kohafield => 'items.materials', authorised_value => $item->{materials} }); $item->{materials} = $descriptions->{lib} // ''; - my $itemtype = getitemtypeinfo($item->{itype}); - $item->{itemtype} = $itemtype->{description}; + my $itemtype = Koha::ItemTypes->find( $item->{itype} ); + $item->{itemtype} = $itemtype->description; # FIXME Should not it be translated_description? } my $json_text = to_json( $item, { utf8 => 1 } ); diff --git a/circ/transferstoreceive.pl b/circ/transferstoreceive.pl index bf1a756e29..60bcd8bf77 100755 --- a/circ/transferstoreceive.pl +++ b/circ/transferstoreceive.pl @@ -36,6 +36,7 @@ use Date::Calc qw( use C4::Koha; use C4::Reserves; use Koha::Items; +use Koha::ItemTypes; use Koha::Libraries; use Koha::DateUtils; use Koha::BiblioFrameworks; @@ -89,10 +90,10 @@ while ( my $library = $libraries->next ) { $getransf{'diff'} = $diff; } my $gettitle = GetBiblioFromItemNumber( $num->{'itemnumber'} ); - my $itemtypeinfo = getitemtypeinfo( (C4::Context->preference('item-level_itypes')) ? $gettitle->{'itype'} : $gettitle->{'itemtype'} ); + my $itemtype = Koha::ItemTypes->find( (C4::Context->preference('item-level_itypes')) ? $gettitle->{'itype'} : $gettitle->{'itemtype'} ); $getransf{'datetransfer'} = $num->{'datesent'}; - $getransf{'itemtype'} = $itemtypeinfo ->{'description'}; + $getransf{'itemtype'} = $itemtype->description; # FIXME Should not it be translated_description? foreach (qw(title author biblionumber itemnumber barcode homebranch holdingbranch itemcallnumber)) { $getransf{$_} = $gettitle->{$_}; } diff --git a/circ/waitingreserves.pl b/circ/waitingreserves.pl index af41394739..f781869e47 100755 --- a/circ/waitingreserves.pl +++ b/circ/waitingreserves.pl @@ -37,6 +37,7 @@ use C4::Reserves; use C4::Koha; use Koha::DateUtils; use Koha::BiblioFrameworks; +use Koha::ItemTypes; my $input = new CGI; @@ -104,12 +105,12 @@ foreach my $num (@getreserves) { # fix up item type for display $gettitle->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $gettitle->{'itype'} : $gettitle->{'itemtype'}; my $getborrower = GetMember(borrowernumber => $num->{'borrowernumber'}); - my $itemtypeinfo = getitemtypeinfo( $gettitle->{'itemtype'} ); # using the fixed up itype/itemtype + my $itemtype = Koha::ItemTypes->find( $gettitle->{'itemtype'} ); # using the fixed up itype/itemtype $getreserv{'waitingdate'} = $num->{'waitingdate'}; my ( $expire_year, $expire_month, $expire_day ) = split (/-/, $num->{'expirationdate'}); my $calcDate = Date_to_Days( $expire_year, $expire_month, $expire_day ); - $getreserv{'itemtype'} = $itemtypeinfo->{'description'}; + $getreserv{'itemtype'} = $itemtype->description; # FIXME Should not it be translated_description? $getreserv{'title'} = $gettitle->{'title'}; $getreserv{'subtitle'} = GetRecordValue('subtitle', GetMarcBiblio($gettitle->{'biblionumber'}), GetFrameworkCode($gettitle->{'biblionumber'})); $getreserv{'biblionumber'} = $gettitle->{'biblionumber'}; diff --git a/members/summary-print.pl b/members/summary-print.pl index 14df30f9f8..2d5eb478de 100755 --- a/members/summary-print.pl +++ b/members/summary-print.pl @@ -22,11 +22,11 @@ use CGI; use C4::Auth; use C4::Output; use C4::Members; -use C4::Koha qw( getitemtypeinfo ); use C4::Circulation qw( GetIssuingCharges ); use C4::Reserves; use C4::Items; use Koha::Holds; +use Koha::ItemTypes; my $input = CGI->new; my $borrowernumber = $input->param('borrowernumber'); @@ -94,8 +94,8 @@ sub build_issue_data { my ( $charge, $itemtype ) = GetIssuingCharges( $issue->{itemnumber}, $borrowernumber ); - my $itemtypeinfo = getitemtypeinfo($itemtype); - $row{'itemtype_description'} = $itemtypeinfo->{description}; + my $itemtype = Koha::ItemTypes->find( $itemtype ); + $row{'itemtype_description'} = $itemtype->description; #FIXME Should not it be translated_description $row{'charge'} = sprintf( "%.2f", $charge ); diff --git a/opac/opac-browser.pl b/opac/opac-browser.pl index 64abf2189e..b2e8a60dc8 100755 --- a/opac/opac-browser.pl +++ b/opac/opac-browser.pl @@ -32,7 +32,6 @@ use C4::Context; use C4::Output; use CGI qw ( -utf8 ); use C4::Biblio; -use C4::Koha; # use getitemtypeinfo my $query = new CGI; diff --git a/opac/opac-search.pl b/opac/opac-search.pl index 7b10ac3bef..76b24f3fc7 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -52,6 +52,7 @@ use C4::Tags qw(get_tags); use C4::SocialData; use C4::External::OverDrive; +use Koha::ItemTypes; use Koha::LibraryCategories; use Koha::Ratings; use Koha::Virtualshelves; @@ -225,7 +226,7 @@ my $itemtypes = GetItemTypesCategorized; # add translated_description to itemtypes foreach my $itemtype ( keys %{$itemtypes} ) { # Itemtypes search categories don't have (yet) translated descriptions, they are auth values (and could still have no descriptions too BZ 18400) - my $translated_description = getitemtypeinfo( $itemtype, 'opac' )->{translated_description}; + my $translated_description = Koha::ItemTypes->find( $itemtype )->translated_description; $itemtypes->{$itemtype}->{translated_description} = $translated_description || $itemtypes->{$itemtype}->{description} || q{}; } diff --git a/opac/opac-shelves.pl b/opac/opac-shelves.pl index cfe5a50942..b608657474 100755 --- a/opac/opac-shelves.pl +++ b/opac/opac-shelves.pl @@ -30,6 +30,7 @@ use C4::Tags qw( get_tags ); use C4::XSLT; use Koha::Biblioitems; +use Koha::ItemTypes; use Koha::Virtualshelves; use Koha::RecordProcessor; @@ -283,10 +284,10 @@ if ( $op eq 'view' ) { my $marcflavour = C4::Context->preference("marcflavour"); my $itemtype = Koha::Biblioitems->search({ biblionumber => $content->biblionumber })->next->itemtype; - my $itemtypeinfo = getitemtypeinfo( $itemtype, 'opac' ); - $this_item->{imageurl} = $itemtypeinfo->{imageurl}; - $this_item->{description} = $itemtypeinfo->{description}; - $this_item->{notforloan} = $itemtypeinfo->{notforloan}; + $itemtype = Koha::ItemTypes->find( $itemtype ); + $this_item->{imageurl} = C4::Koha::getitemtypeimagelocation( 'opac', $itemtype->imageurl ); + $this_item->{description} = $itemtype->description; #FIXME Should not it be translated_description? + $this_item->{notforloan} = $itemtype->notforloan; $this_item->{'coins'} = GetCOinSBiblio($record); $this_item->{'subtitle'} = GetRecordValue( 'subtitle', $record, GetFrameworkCode( $biblionumber ) ); $this_item->{'normalized_upc'} = GetNormalizedUPC( $record, $marcflavour ); diff --git a/opac/opac-tags_subject.pl b/opac/opac-tags_subject.pl index 590e7a55af..e5e182b685 100755 --- a/opac/opac-tags_subject.pl +++ b/opac/opac-tags_subject.pl @@ -32,7 +32,6 @@ use C4::Context; use C4::Output; use CGI qw ( -utf8 ); use C4::Biblio; -use C4::Koha; # use getitemtypeinfo my $query = new CGI; diff --git a/svc/checkouts b/svc/checkouts index 0b0d3291a2..d8d6156942 100755 --- a/svc/checkouts +++ b/svc/checkouts @@ -31,6 +31,7 @@ use C4::Context; use Koha::AuthorisedValues; use Koha::DateUtils; +use Koha::ItemTypes; my $input = new CGI; @@ -148,7 +149,7 @@ while ( my $c = $sth->fetchrow_hashref() ) { my ( $renewals_count, $renewals_allowed, $renewals_remaining ) = GetRenewCount( $c->{borrowernumber}, $c->{itemnumber} ); - my $itemtype = C4::Koha::getitemtypeinfo( $item_level_itypes ? $c->{itype} : $c->{itemtype} ); + my $itemtype = Koha::ItemTypes->find( $item_level_itypes ? $c->{itype} : $c->{itemtype} ); my $location; if ( $c->{location} ) { my $av = Koha::AuthorisedValues->search({ category => 'LOC', authorised_value => $c->{location} }); @@ -170,7 +171,7 @@ while ( my $c = $sth->fetchrow_hashref() ) { author => $c->{author}, barcode => $c->{barcode}, itemtype => $item_level_itypes ? $c->{itype} : $c->{itemtype}, - itemtype_description => $itemtype->{translated_description}, + itemtype_description => $itemtype->translated_description, location => $location, homebranch => $c->{homebranch}, itemnotes => $c->{itemnotes}, diff --git a/svc/holds b/svc/holds index c1a5a9a83c..4642356ced 100755 --- a/svc/holds +++ b/svc/holds @@ -30,6 +30,7 @@ use C4::Context; use Koha::DateUtils; use Koha::Holds; +use Koha::ItemTypes; use Koha::Libraries; my $input = new CGI; @@ -75,8 +76,8 @@ while ( my $h = $holds_rs->next() ) { my $itemtype_limit; if ( $h->itemtype ) { - my $itemtype = C4::Koha::getitemtypeinfo( $h->itemtype ); - $itemtype_limit = $itemtype->{translated_description}; + my $itemtype = Koha::ItemTypes->find( $h->itemtype ); + $itemtype_limit = $itemtype->translated_description; } my $libraries = Koha::Libraries->search({}, { order_by => ['branchname'] })->unblessed; diff --git a/t/db_dependent/Koha.t b/t/db_dependent/Koha.t index 258289d3b8..64bb045cde 100644 --- a/t/db_dependent/Koha.t +++ b/t/db_dependent/Koha.t @@ -5,7 +5,7 @@ use Modern::Perl; use DateTime::Format::MySQL; -use Test::More tests => 7; +use Test::More tests => 6; use t::lib::TestBuilder; @@ -157,12 +157,6 @@ subtest 'Authorized Values Tests' => sub { }; -subtest 'Itemtype info Tests' => sub { - like ( getitemtypeinfo( $itype_1->{itemtype} )->{'imageurl'}, qr/intranet-tmpl/, 'getitemtypeinfo on unspecified interface returns intranet imageurl (legacy behavior)' ); - like ( getitemtypeinfo( $itype_1->{itemtype}, 'intranet')->{'imageurl'}, qr/intranet-tmpl/, 'getitemtypeinfo on "intranet" interface returns intranet imageurl' ); - like ( getitemtypeinfo( $itype_1->{itemtype}, 'opac')->{'imageurl'}, qr/opac-tmpl/, 'getitemtypeinfo on "opac" interface returns opac imageurl' ); -}; - ### test for C4::Koha->GetDailyQuote() SKIP: { diff --git a/virtualshelves/shelves.pl b/virtualshelves/shelves.pl index 75f33fa3ef..a868c24604 100755 --- a/virtualshelves/shelves.pl +++ b/virtualshelves/shelves.pl @@ -29,6 +29,7 @@ use C4::XSLT; use Koha::Biblios; use Koha::Biblioitems; +use Koha::ItemTypes; use Koha::CsvProfiles; use Koha::Virtualshelves; @@ -247,14 +248,14 @@ if ( $op eq 'view' ) { my $marcflavour = C4::Context->preference("marcflavour"); my $itemtype = Koha::Biblioitems->search({ biblionumber => $content->biblionumber })->next->itemtype; - my $itemtypeinfo = getitemtypeinfo( $itemtype, 'intranet' ); + $itemtype = Koha::ItemTypes->find( $itemtype ); my $biblio = Koha::Biblios->find( $content->biblionumber ); $this_item->{title} = $biblio->title; $this_item->{author} = $biblio->author; $this_item->{dateadded} = $content->dateadded; - $this_item->{imageurl} = $itemtypeinfo->{imageurl}; - $this_item->{description} = $itemtypeinfo->{description}; - $this_item->{notforloan} = $itemtypeinfo->{notforloan}; + $this_item->{imageurl} = C4::Koha::getitemtypeimagelocation( 'intranet', $itemtype->imageurl ); + $this_item->{description} = $itemtype->description; #FIXME Should not it be translated_description + $this_item->{notforloan} = $itemtype->notforloan; $this_item->{'coins'} = GetCOinSBiblio($record); $this_item->{'subtitle'} = GetRecordValue( 'subtitle', $record, GetFrameworkCode( $biblionumber ) ); $this_item->{'normalized_upc'} = GetNormalizedUPC( $record, $marcflavour ); -- 2.39.5