X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=catalogue%2FMARCdetail.pl;h=8b32935c78c020bd916d4a77379d71e8f1e6eab7;hb=7b5c8cbf079725381341cea5494717d58735ca9b;hp=c11bdf3ed13504602a7d84ebbe4edbd99aa26b63;hpb=e20270fec4f6d34f01050bea4c5765d5b3c4ed33;p=koha.git diff --git a/catalogue/MARCdetail.pl b/catalogue/MARCdetail.pl index c11bdf3ed1..8b32935c78 100755 --- a/catalogue/MARCdetail.pl +++ b/catalogue/MARCdetail.pl @@ -5,18 +5,18 @@ # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . =head1 NAME @@ -45,11 +45,12 @@ the items attached to the biblio use strict; #use warnings; FIXME - Bug 2505 +use CGI qw ( -utf8 ); +use HTML::Entities; use C4::Auth; use C4::Context; use C4::Output; -use CGI qw ( -utf8 ); use C4::Koha; use MARC::Record; use C4::Biblio; @@ -59,10 +60,15 @@ use C4::Members; # to use GetMember use C4::Serials; #uses getsubscriptionsfrombiblionumber GetSubscriptionsFromBiblionumber use C4::Search; # enabled_staff_search_views +use Koha::Biblios; +use Koha::BiblioFrameworks; + +use List::MoreUtils qw( uniq ); my $query = new CGI; my $dbh = C4::Context->dbh; my $biblionumber = $query->param('biblionumber'); +$biblionumber = HTML::Entities::encode($biblionumber); my $frameworkcode = $query->param('frameworkcode'); $frameworkcode = GetFrameworkCode( $biblionumber ) unless ($frameworkcode); my $popup = @@ -94,6 +100,7 @@ if ( not defined $record ) { exit; } +my $biblio_object = Koha::Biblios->find( $biblionumber ); # FIXME Should replace $biblio my $tagslib = &GetMarcStructure(1,$frameworkcode); my $biblio = GetBiblioData($biblionumber); @@ -108,28 +115,17 @@ if($query->cookie("holdfor")){ } #count of item linked -my $itemcount = GetItemsCount($biblionumber); +my $itemcount = $biblio_object->items->count; $template->param( count => $itemcount, bibliotitle => $biblio->{title}, ); -# Getting the list of all frameworks -# get framework list -my $frameworks = getframeworks; -my @frameworkcodeloop; -foreach my $thisframeworkcode ( keys %$frameworks ) { - my %row = ( - value => $thisframeworkcode, - frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'}, - ); - if ($frameworkcode eq $thisframeworkcode){ - $row{'selected'}= 1; - } - push @frameworkcodeloop, \%row; -} -$template->param( frameworkcodeloop => \@frameworkcodeloop, ); +my $frameworks = Koha::BiblioFrameworks->search( {}, { order_by => ['frameworktext'] } ); +$template->param( + frameworks => $frameworks, + frameworkcode => $frameworkcode, +); # fill arrays my @loop_data = (); -my $tag; # loop through each tab 0 through 9 for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { @@ -259,55 +255,39 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { my @fields = $record->fields(); my %witness ; #---- stores the list of subfields used at least once, with the "meaning" of the code -my @big_array; +my @item_subfield_codes; +my @item_loop; my $norequests = 1; foreach my $field (@fields) { next if ( $field->tag() < 10 ); my @subf = $field->subfields; - my %this_row; + my $item; # loop through each subfield for my $i ( 0 .. $#subf ) { next if ( $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{tab} ne 10 ); next if ( $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{hidden} =~ /-7|-4|-3|-2|2|3|5|8/); + push @item_subfield_codes, $subf[$i][0]; $witness{ $subf[$i][0] } = $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{lib}; - $this_row{ $subf[$i][0] } = GetAuthorisedValueDesc( $field->tag(), + $item->{ $subf[$i][0] } = GetAuthorisedValueDesc( $field->tag(), $subf[$i][0], $subf[$i][1], '', $tagslib) || $subf[$i][1]; $norequests = 0 if $subf[$i][1] ==0 and $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{kohafield} eq 'items.notforloan'; } - if (%this_row) { - push( @big_array, \%this_row ); - } + push @item_loop, $item if $item; } my ($holdingbrtagf,$holdingbrtagsubf) = &GetMarcFromKohaField("items.holdingbranch",$frameworkcode); -@big_array = sort {$a->{$holdingbrtagsubf} cmp $b->{$holdingbrtagsubf}} @big_array; - -#fill big_row with missing datas -foreach my $subfield_code ( keys(%witness) ) { - for ( my $i = 0 ; $i <= $#big_array ; $i++ ) { - $big_array[$i]{$subfield_code} = " " - unless ( $big_array[$i]{$subfield_code} ); - } -} - -# now, construct template ! -my @item_value_loop; -my @header_value_loop; -for ( my $i = 0 ; $i <= $#big_array ; $i++ ) { - my $items_data; - foreach my $subfield_code ( keys(%witness) ) { - $items_data .= "" . $big_array[$i]{$subfield_code} . ""; +@item_loop = sort {$a->{$holdingbrtagsubf} cmp $b->{$holdingbrtagsubf}} @item_loop; + +@item_subfield_codes = uniq @item_subfield_codes; +# fill item info +my @item_header_loop; +for my $subfield_code ( @item_subfield_codes ) { + push @item_header_loop, $witness{$subfield_code}; + for my $item_data ( @item_loop ) { + $item_data->{$subfield_code} ||= " " } - my %row_data; - $row_data{item_value} = $items_data; - push( @item_value_loop, \%row_data ); -} -foreach my $subfield_code ( keys(%witness) ) { - my %header_value; - $header_value{header_value} = $witness{$subfield_code}; - push( @header_value_loop, \%header_value ); } my $subscriptionscount = CountSubscriptionFromBiblionumber($biblionumber); @@ -322,16 +302,17 @@ if ($subscriptionscount) { } $template->param ( - norequests => $norequests, - item_loop => \@item_value_loop, - item_header_loop => \@header_value_loop, + norequests => $norequests, + item_loop => \@item_loop, + item_header_loop => \@item_header_loop, + item_subfield_codes => \@item_subfield_codes, biblionumber => $biblionumber, popup => $popup, hide_marc => C4::Context->preference('hide_marc'), marcview => 1, z3950_search_params => C4::Search::z3950_search_args($biblio), C4::Search::enabled_staff_search_views, - searchid => $query->param('searchid'), + searchid => scalar $query->param('searchid'), ); my @allorders_using_biblio = GetOrdersByBiblionumber ($biblionumber);