Bug 29387: Stringify exceptions for other background job modules
[koha-ffzg.git] / catalogue / detail.pl
index 2495352..bc28f29 100755 (executable)
@@ -39,7 +39,7 @@ use C4::Reserves;
 use C4::Serials qw( CountSubscriptionFromBiblionumber SearchSubscriptions GetLatestSerials );
 use C4::XISBN qw( get_xisbns );
 use C4::External::Amazon qw( get_amazon_tld );
-use C4::Search qw( z3950_search_args enabled_staff_search_views );
+use C4::Search qw( z3950_search_args enabled_staff_search_views new_record_from_zebra );
 use C4::Tags qw( get_tags );
 use C4::XSLT qw( XSLTParse4Display );
 use Koha::DateUtils qw( format_sqldatetime );
@@ -123,22 +123,6 @@ my $fw           = GetFrameworkCode($biblionumber);
 my $showallitems = $query->param('showallitems');
 my $marcflavour  = C4::Context->preference("marcflavour");
 
-{
-    # XSLT processing of some stuff
-
-    $template->param(
-        XSLTDetailsDisplay => '1',
-        XSLTBloc => XSLTParse4Display(
-            {
-                biblionumber   => $biblionumber,
-                record         => $record,
-                xsl_syspref    => "XSLTDetailsDisplay",
-                fix_amps       => 1,
-            }
-        ),
-    );
-}
-
 $template->param( 'SpineLabelShowPrintOnBibDetails' => C4::Context->preference("SpineLabelShowPrintOnBibDetails") );
 
 # Catch the exception as Koha::Biblio::Metadata->record can explode if the MARCXML is invalid
@@ -213,16 +197,20 @@ foreach my $subscription (@subscriptions) {
 
 # Get component parts details
 my $showcomp = C4::Context->preference('ShowComponentRecords');
+my $show_analytics;
 if ( $showcomp eq 'both' || $showcomp eq 'staff' ) {
-    if ( my $components = $biblio->get_marc_components(300) ) {
+    if ( my $components = $biblio->get_marc_components(C4::Context->preference('MaxComponentRecords')) ) {
+        $show_analytics = 1 if @{$components}; # just show link when having results
+        $template->param( analytics_error => 1 ) if grep { $_->message eq 'component_search' } @{$biblio->messages};
         my $parts;
         for my $part ( @{$components} ) {
-            $part = MARC::Record->new_from_xml( $part, 'UTF-8' );
+            $part = C4::Search::new_record_from_zebra( 'biblioserver', $part );
+            my $id = Koha::SearchEngine::Search::extract_biblionumber( $part );
 
             push @{$parts},
               XSLTParse4Display(
                 {
-                    biblionumber => $biblionumber,
+                    biblionumber => $id,
                     record       => $part,
                     xsl_syspref  => "XSLTResultsDisplay",
                     fix_amps     => 1,
@@ -230,9 +218,26 @@ if ( $showcomp eq 'both' || $showcomp eq 'staff' ) {
               );
         }
         $template->param( ComponentParts => $parts );
+        $template->param( ComponentPartsQuery => $biblio->get_components_query );
     }
+} else { # check if we should show analytics anyway
+    $show_analytics = 1 if @{$biblio->get_marc_components(1)}; # count matters here, results does not
+    $template->param( analytics_error => 1 ) if grep { $_->message eq 'component_search' } @{$biblio->messages};
 }
 
+# XSLT processing of some stuff
+my $xslt_variables = { show_analytics_link => $show_analytics };
+$template->param(
+    XSLTDetailsDisplay => '1',
+    XSLTBloc => XSLTParse4Display({
+        biblionumber   => $biblionumber,
+        record         => $record,
+        xsl_syspref    => "XSLTDetailsDisplay",
+        fix_amps       => 1,
+        xslt_variables => $xslt_variables,
+    }),
+);
+
 # Get acquisition details
 if ( C4::Context->preference('AcquisitionDetails') ) {
     my $orders = Koha::Acquisition::Orders->search(
@@ -429,14 +434,14 @@ my $some_private_shelves = Koha::Virtualshelves->get_some_shelves(
     {
         borrowernumber => $borrowernumber,
         add_allowed    => 1,
-        category       => 1,
+        public         => 0,
     }
 );
 my $some_public_shelves = Koha::Virtualshelves->get_some_shelves(
     {
         borrowernumber => $borrowernumber,
         add_allowed    => 1,
-        category       => 2,
+        public         => 1,
     }
 );
 
@@ -516,7 +521,7 @@ if (C4::Context->preference("virtualshelves") ) {
     my $shelves = Koha::Virtualshelves->search(
         {
             biblionumber => $biblionumber,
-            category => 2,
+            public => 1,
         },
         {
             join => 'virtualshelfcontents',