X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FXSLT.pm;h=bf2647ab74dd7d0883f56e58cf6e576b486e3698;hb=102b1ca4bf3b1721f496417473643ff951c13833;hp=364d6a130a501d6231b0e4b3333e95d463a30f60;hpb=df97814f3034a3d5015546c4eca21f08ae951e37;p=koha.git diff --git a/C4/XSLT.pm b/C4/XSLT.pm index 364d6a130a..bf2647ab74 100644 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -24,12 +24,13 @@ package C4::XSLT; use Modern::Perl; use C4::Context; -use C4::Branch; use C4::Items; use C4::Koha; use C4::Biblio; use C4::Circulation; use C4::Reserves; +use Koha::AuthorisedValues; +use Koha::ItemTypes; use Koha::XSLT_Handler; use Koha::Libraries; @@ -67,7 +68,7 @@ Is only used in this module currently. sub transformMARCXML4XSLT { my ($biblionumber, $record) = @_; my $frameworkcode = GetFrameworkCode($biblionumber) || ''; - my $tagslib = &GetMarcStructure(1,$frameworkcode); + my $tagslib = &GetMarcStructure(1, $frameworkcode, { unsafe => 1 }); my @fields; # FIXME: wish there was a better way to handle exceptions eval { @@ -179,7 +180,7 @@ sub get_xslt_sysprefs { # singleBranchMode was a system preference, but no longer is # we can retain it here for compatibility - my $singleBranchMode = Koha::Libraries->search->count == 1; + my $singleBranchMode = Koha::Libraries->search->count == 1 ? 1 : 0; $sysxml .= "$singleBranchMode\n"; $sysxml .= "\n"; @@ -273,12 +274,14 @@ sub buildKohaItemsNamespace { @items = grep { !$hi{$_->{itemnumber}} } @items; } - my $shelflocations = GetKohaAuthorisedValues('items.location',GetFrameworkCode($biblionumber), 'opac'); - my $ccodes = GetKohaAuthorisedValues('items.ccode',GetFrameworkCode($biblionumber), 'opac'); + my $shelflocations = + { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => GetFrameworkCode($biblionumber), kohafield => 'items.location' } ) }; + my $ccodes = + { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => GetFrameworkCode($biblionumber), kohafield => 'items.ccode' } ) }; my %branches = map { $_->branchcode => $_->branchname } Koha::Libraries->search({}, { order_by => 'branchname' }); - my $itemtypes = GetItemTypes(); + my $itemtypes = { map { $_->{itemtype} => $_ } @{ Koha::ItemTypes->search->unblessed } }; my $location = ""; my $ccode = ""; my $xml = ''; @@ -289,12 +292,12 @@ sub buildKohaItemsNamespace { my $reservestatus = C4::Reserves::GetReserveStatus( $item->{itemnumber} ); - if ( $itemtypes->{ $item->{itype} }->{notforloan} || $item->{notforloan} || $item->{onloan} || $item->{withdrawn} || $item->{itemlost} || $item->{damaged} || + if ( ( $item->{itype} && $itemtypes->{ $item->{itype} }->{notforloan} ) || $item->{notforloan} || $item->{onloan} || $item->{withdrawn} || $item->{itemlost} || $item->{damaged} || (defined $transfertwhen && $transfertwhen ne '') || $item->{itemnotforloan} || (defined $reservestatus && $reservestatus eq "Waiting") ){ if ( $item->{notforloan} < 0) { $status = "On order"; } - if ( $item->{itemnotforloan} > 0 || $item->{notforloan} > 0 || $itemtypes->{ $item->{itype} }->{notforloan} == 1 ) { + if ( $item->{itemnotforloan} && $item->{itemnotforloan} > 0 || $item->{notforloan} && $item->{notforloan} > 0 || $item->{itype} && $itemtypes->{ $item->{itype} }->{notforloan} && $itemtypes->{ $item->{itype} }->{notforloan} == 1 ) { $status = "reference"; } if ($item->{onloan}) { @@ -323,14 +326,16 @@ sub buildKohaItemsNamespace { $location = $item->{location}? xml_escape($shelflocations->{$item->{location}}||$item->{location}):''; $ccode = $item->{ccode}? xml_escape($ccodes->{$item->{ccode}}||$item->{ccode}):''; my $itemcallnumber = xml_escape($item->{itemcallnumber}); + my $stocknumber = $item->{stocknumber}? xml_escape($item->{stocknumber}):''; $xml .= "" . "$homebranch" . "$holdingbranch" . "$location" . "$ccode" - . "$status" + . "".( $status // q{} )."" . "$itemcallnumber" + . "$stocknumber" . ""; } $xml = "".$xml."";