Bug 29387: Stringify exceptions for other background job modules
[koha-ffzg.git] / catalogue / detail.pl
index cd186c3..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
@@ -211,6 +195,48 @@ foreach my $subscription (@subscriptions) {
     push @subs, \%cell;
 }
 
+# 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(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 = C4::Search::new_record_from_zebra( 'biblioserver', $part );
+            my $id = Koha::SearchEngine::Search::extract_biblionumber( $part );
+
+            push @{$parts},
+              XSLTParse4Display(
+                {
+                    biblionumber => $id,
+                    record       => $part,
+                    xsl_syspref  => "XSLTResultsDisplay",
+                    fix_amps     => 1,
+                }
+              );
+        }
+        $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') ) {
@@ -408,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,
     }
 );
 
@@ -495,7 +521,7 @@ if (C4::Context->preference("virtualshelves") ) {
     my $shelves = Koha::Virtualshelves->search(
         {
             biblionumber => $biblionumber,
-            category => 2,
+            public => 1,
         },
         {
             join => 'virtualshelfcontents',