bug 8768 correct an error in ItemType.t
[koha.git] / catalogue / detail.pl
index 580949d..f2ad4eb 100755 (executable)
@@ -35,8 +35,11 @@ use C4::Serials;
 use C4::XISBN qw(get_xisbns get_biblionumber_from_isbn);
 use C4::External::Amazon;
 use C4::Search;                # enabled_staff_search_views
+use C4::Tags qw(get_tags);
 use C4::VirtualShelves;
 use C4::XSLT;
+use C4::Images;
+use Koha::DateUtils;
 
 # use Smart::Comments;
 
@@ -82,10 +85,11 @@ my $marcflavour  = C4::Context->preference("marcflavour");
 # XSLT processing of some stuff
 if (C4::Context->preference("XSLTDetailsDisplay") ) {
     $template->param('XSLTDetailsDisplay' =>'1',
-        'XSLTBloc' => XSLTParse4Display($biblionumber, $record, 'Detail','intranet') );
+        'XSLTBloc' => XSLTParse4Display($biblionumber, $record, "XSLTDetailsDisplay") );
 }
 
 $template->param( 'SpineLabelShowPrintOnBibDetails' => C4::Context->preference("SpineLabelShowPrintOnBibDetails") );
+$template->param( ocoins => GetCOinSBiblio($record) );
 
 # some useful variables for enhanced content;
 # in each case, we're grabbing the first value we find in
@@ -138,7 +142,7 @@ my ( $holdcount, $holds ) = GetReservesFromBiblionumber($biblionumber,1);
 
 #coping with subscriptions
 my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber);
-my @subscriptions       = GetSubscriptions( $dat->{title}, $dat->{issn}, $biblionumber );
+my @subscriptions       = GetSubscriptions( $dat->{title}, $dat->{issn}, undef, $biblionumber );
 my @subs;
 
 foreach my $subscription (@subscriptions) {
@@ -168,12 +172,14 @@ $dat->{'hiddencount'} = scalar @all_items + @hostitems - scalar @items;
 
 my $shelflocations = GetKohaAuthorisedValues('items.location', $fw);
 my $collections    = GetKohaAuthorisedValues('items.ccode'   , $fw);
+my $copynumbers    = GetKohaAuthorisedValues('items.copynumber', $fw);
 my (@itemloop, %itemfields);
 my $norequests = 1;
 my $authvalcode_items_itemlost = GetAuthValCode('items.itemlost',$fw);
 my $authvalcode_items_damaged  = GetAuthValCode('items.damaged', $fw);
 
 my $analytics_flag;
+my $materials_flag; # set this if the items have anything in the materials field
 foreach my $item (@items) {
 
     $item->{homebranch}        = GetBranchName($item->{homebranch});
@@ -188,19 +194,23 @@ foreach my $item (@items) {
     $item->{imageurl} = defined $item->{itype} ? getitemtypeimagelocation('intranet', $itemtypes->{ $item->{itype} }{imageurl})
                                                : '';
 
-       foreach (qw(datedue datelastseen onloan)) {
+       foreach (qw(datelastseen onloan)) {
                $item->{$_} = format_date($item->{$_});
-       }
+    }
+    $item->{datedue} = format_sqldatetime($item->{datedue});
     # item damaged, lost, withdrawn loops
     $item->{itemlostloop} = GetAuthorisedValues($authvalcode_items_itemlost, $item->{itemlost}) if $authvalcode_items_itemlost;
     if ($item->{damaged}) {
         $item->{itemdamagedloop} = GetAuthorisedValues($authvalcode_items_damaged, $item->{damaged}) if $authvalcode_items_damaged;
     }
     #get shelf location and collection code description if they are authorised value.
+    # same thing for copy number
     my $shelfcode = $item->{'location'};
     $item->{'location'} = $shelflocations->{$shelfcode} if ( defined( $shelfcode ) && defined($shelflocations) && exists( $shelflocations->{$shelfcode} ) );
     my $ccode = $item->{'ccode'};
     $item->{'ccode'} = $collections->{$ccode} if ( defined( $ccode ) && defined($collections) && exists( $collections->{$ccode} ) );
+    my $copynumber = $item->{'copynumber'};
+    $item->{'copynumber'} = $copynumbers->{$copynumber} if ( defined($copynumber) && defined($copynumbers) && exists( $copynumbers->{$copynumber} ) );
     foreach (qw(ccode enumchron copynumber itemnotes uri)) {
         $itemfields{$_} = 1 if ( $item->{$_} );
     }
@@ -251,7 +261,9 @@ foreach my $item (@items) {
                $analytics_flag=1;
                $item->{countanalytics} = $countanalytics;
        }
-
+    if ($item->{'materials'} ne ''){
+       $materials_flag = 1;
+    }
     push @itemloop, $item;
 }
 
@@ -276,6 +288,7 @@ $template->param(
         hostrecords         => $hostrecords,
        analytics_flag  => $analytics_flag,
        C4::Search::enabled_staff_search_views,
+        materials       => $materials_flag,
 );
 
 if (C4::Context->preference("AlternateHoldingsField") && scalar @items == 0) {
@@ -312,7 +325,7 @@ foreach ( keys %{$dat} ) {
 
 # does not work: my %views_enabled = map { $_ => 1 } $template->query(loop => 'EnableViews');
 # method query not found?!?!
-
+$template->param( AmazonTld => get_amazon_tld() ) if ( C4::Context->preference("AmazonCoverImages"));
 $template->param(
     itemloop        => \@itemloop,
     biblionumber        => $biblionumber,
@@ -339,44 +352,10 @@ if (C4::Context->preference("FRBRizeEditions")==1) {
     };
     if ($@) { warn "XISBN Failed $@"; }
 }
-if ( C4::Context->preference("AmazonEnabled") == 1 ) {
-    $template->param( AmazonTld => get_amazon_tld() );
-    my $amazon_reviews  = C4::Context->preference("AmazonReviews");
-    my $amazon_similars = C4::Context->preference("AmazonSimilarItems");
-    my @services;
-    if ( $amazon_reviews ) {
-        $template->param( AmazonReviews => 1 );
-        push( @services, 'EditorialReview' );
-    }
-    if ( $amazon_similars ) {
-        $template->param( AmazonSimilarItems => 1 );
-        push( @services, 'Similarities' );
-    }
-    my $amazon_details = &get_amazon_details( $isbn, $record, $marcflavour, \@services );
-    if ( $amazon_similars ) {
-        my $similar_products_exist;
-        my @similar_products;
-        for my $similar_product (@{$amazon_details->{Items}->{Item}->[0]->{SimilarProducts}->{SimilarProduct}}) {
-            # do we have any of these isbns in our collection?
-            my $similar_biblionumbers = get_biblionumber_from_isbn($similar_product->{ASIN});
-            # verify that there is at least one similar item
-                   if (scalar(@$similar_biblionumbers)){            
-                           $similar_products_exist++ if ($similar_biblionumbers && $similar_biblionumbers->[0]);
-                push @similar_products, +{ similar_biblionumbers => $similar_biblionumbers, title => $similar_product->{Title}, ASIN => $similar_product->{ASIN}  };
-            }
-        }
-        $template->param( AmazonSimilarItems       => $similar_products_exist );
-        $template->param( AMAZON_SIMILAR_PRODUCTS  => \@similar_products      );
-    }
-    if ( $amazon_reviews ) {
-        my $item = $amazon_details->{Items}->{Item}->[0];
-        my $editorial_reviews = \@{ $item->{EditorialReviews}->{EditorialReview} };
-        #my $customer_reviews  = \@{$amazon_details->{Items}->{Item}->[0]->{CustomerReviews}->{Review}};
-        #my $average_rating = $amazon_details->{Items}->{Item}->[0]->{CustomerReviews}->{AverageRating} || 0;
-        #$template->param( amazon_average_rating    => $average_rating * 20    );
-        #$template->param( AMAZON_CUSTOMER_REVIEWS  => $customer_reviews       );
-        $template->param( AMAZON_EDITORIAL_REVIEWS => $editorial_reviews      );
-    }
+
+if ( C4::Context->preference("LocalCoverImages") == 1 ) {
+    my @images = ListImagesForBiblio($biblionumber);
+    $template->{VARS}->{localimages} = \@images;
 }
 
 # Get OPAC URL
@@ -384,4 +363,16 @@ if (C4::Context->preference('OPACBaseURL')){
      $template->param( OpacUrl => C4::Context->preference('OPACBaseURL') );
 }
 
+# Displaying tags
+
+my $tag_quantity;
+if (C4::Context->preference('TagsEnabled') and $tag_quantity = C4::Context->preference('TagsShowOnDetail')) {
+    $template->param(
+        TagsEnabled => 1,
+        TagsShowOnDetail => $tag_quantity
+    );
+    $template->param(TagLoop => get_tags({biblionumber=>$biblionumber, approved=>1,
+                                'sort'=>'-weight', limit=>$tag_quantity}));
+}
+
 output_html_with_http_headers $query, $cookie, $template->output;