From 585cb1dc0dd9f38c6a82bd5fb35ed3fa4f606e8b Mon Sep 17 00:00:00 2001 From: Fridolyn SOMERS Date: Thu, 6 Dec 2012 13:56:26 +0100 Subject: [PATCH] Bug 9223: Multiple values of AdvancedSearchTypes in suggestions --- C4/Koha.pm | 87 +++++++++++++++++++++++++++++------------------------------- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/C4/Koha.pm b/C4/Koha.pm index 3892468..16e7953 100644 --- a/C4/Koha.pm +++ b/C4/Koha.pm @@ -25,6 +25,7 @@ use strict; use C4::Context; use C4::Branch qw(GetBranchesCount); +use C4::ItemType; use Memoize; use DateTime; use DateTime::Format::MySQL; @@ -130,33 +131,23 @@ Returns a string with the name of the itemtype. =cut -sub GetSupportName{ - my ($codestring)=@_; - return if (! $codestring); - my $resultstring; - my $advanced_search_types = C4::Context->preference("AdvancedSearchTypes"); - if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') { - my $query = qq| - SELECT description - FROM itemtypes - WHERE itemtype=? - order by description - |; - my $sth = C4::Context->dbh->prepare($query); - $sth->execute($codestring); - ($resultstring)=$sth->fetchrow; - return $resultstring; - } else { - my $sth = - C4::Context->dbh->prepare( - "SELECT lib FROM authorised_values WHERE category = ? AND authorised_value = ?" - ); - $sth->execute( $advanced_search_types, $codestring ); - my $data = $sth->fetchrow_hashref; - return $$data{'lib'}; - } - +sub GetSupportName { + my $codestring = shift; + return '' unless $codestring; + my $advanced_search_types = C4::Context->preference("AdvancedSearchTypes") || 'itemtypes'; + for my $support_type ( split /\|/, $advanced_search_types ) { + if ( $support_type eq 'itemtypes' ) { + my $itemtype = getitemtypeinfo($codestring); + return $itemtype->{'description'} if $itemtype; + } + else { + my $lib = GetKohaAuthorisedValueLib( $support_type, $codestring ); + return $lib if $lib; + } + } + return ''; } + =head2 GetSupportList $itemtypes = &GetSupportList(); @@ -185,23 +176,29 @@ build a HTML select with the following code : =cut -sub GetSupportList{ - my $advanced_search_types = C4::Context->preference("AdvancedSearchTypes"); - if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') { - my $query = qq| - SELECT * - FROM itemtypes - order by description - |; - my $sth = C4::Context->dbh->prepare($query); - $sth->execute; - return $sth->fetchall_arrayref({}); - } else { - my $advsearchtypes = GetAuthorisedValues($advanced_search_types); - my @results= map {{itemtype=>$$_{authorised_value},description=>$$_{lib},imageurl=>$$_{imageurl}}} @$advsearchtypes; - return \@results; - } +sub GetSupportList { + my $advanced_search_types = C4::Context->preference("AdvancedSearchTypes") || 'itemtypes'; + my @all_supports; + for my $support_type ( split /\|/, $advanced_search_types ) { + my @supports; + if ( $support_type eq 'itemtypes' ) { + @supports = C4::ItemType->all; + } + else { + my $authorised_values = GetAuthorisedValues($support_type); + @supports = map { + { + itemtype => $_->{authorised_value}, + description => $_->{lib}, + imageurl => $_->{imageurl} + } + } @$authorised_values; + } + push @all_supports, @supports; + } + return \@all_supports; } + =head2 GetItemTypes $itemtypes = &GetItemTypes(); @@ -437,9 +434,9 @@ sub getitemtypeinfo { my $sth = $dbh->prepare("select * from itemtypes where itemtype=?"); $sth->execute($itemtype); my $res = $sth->fetchrow_hashref; - - $res->{imageurl} = getitemtypeimagelocation( 'intranet', $res->{imageurl} ); - + if ( $res ) { + $res->{imageurl} = getitemtypeimagelocation( 'intranet', $res->{imageurl} ); + } return $res; } -- 1.7.9.5