Bug 15263: (follow-up) XSLT display fetches sysprefs for every result processed
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 10 Mar 2016 14:47:36 +0000 (14:47 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Wed, 4 May 2016 13:40:34 +0000 (13:40 +0000)
Set variables ($sysxml, $xslfilename, $lang) if they are not passed to
the subroutine. This happens from catalogue/detail.pl,
opac/opac-shelves.pl, opac/opac-tags.pl and virtualshelves/shelves.pl.

Signed-off-by: Mirko Tietgen <mirko@abunchofthings.net>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
C4/Search.pm
C4/XSLT.pm

index 017d172..b33eed4 100644 (file)
@@ -1887,7 +1887,7 @@ sub searchResults {
     my $xslsyspref = $interface . "XSLTResultsDisplay";
     my $xslfile = C4::Context->preference($xslsyspref);
     my $lang = C4::Languages::getlanguage();
-    my ($sysxml) = C4::XSLT::_get_xslt_sysprefs();
+    my $sysxml = C4::XSLT::get_xslt_sysprefs();
 
     # loop through all of the records we've retrieved
     for ( my $i = $offset ; $i <= $times - 1 ; $i++ ) {
@@ -2218,7 +2218,7 @@ sub searchResults {
         # XSLT processing of some stuff
         # we fetched the sysprefs already before the loop through all retrieved record!
         if (!$scan && $xslfile) {
-            $oldbiblio->{XSLTResultsRecord} = XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, $xslsyspref, 1, \@hiddenitems, $sysxml, $xslfile);
+            $oldbiblio->{XSLTResultsRecord} = XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, $xslsyspref, 1, \@hiddenitems, $sysxml, $xslfile, $lang);
         # the last parameter tells Koha to clean up the problematic ampersand entities that Zebra outputs
         }
 
index e74a742..a2bbaab 100644 (file)
@@ -160,7 +160,7 @@ sub _get_best_default_xslt_filename {
     return $xslfilename;
 }
 
-sub _get_xslt_sysprefs {
+sub get_xslt_sysprefs {
     my $sysxml = "<sysprefs>\n";
     foreach my $syspref ( qw/ hidelostitems OPACURLOpenInNewWindow
                               DisplayOPACiconsXSLT URLLinkText viewISBD
@@ -188,11 +188,14 @@ sub _get_xslt_sysprefs {
 
 sub XSLTParse4Display {
     my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items, $sysxml, $xslfilename, $lang ) = @_;
-    #my $xslfilename = C4::Context->preference($xslsyspref);
+
+    $sysxml ||= C4::Context->preference($xslsyspref);
+    $xslfilename ||= C4::Context->preference($xslsyspref);
+    $lang ||= C4::Languages::getlanguage();
+
     if ( $xslfilename =~ /^\s*"?default"?\s*$/i ) {
         my $htdocs;
         my $theme;
-        # my $lang = C4::Languages::getlanguage();
         my $xslfile;
         if ($xslsyspref eq "XSLTDetailsDisplay") {
             $htdocs  = C4::Context->config('intrahtdocs');
@@ -219,7 +222,6 @@ sub XSLTParse4Display {
     }
 
     if ( $xslfilename =~ m/\{langcode\}/ ) {
-        my $lang = C4::Languages::getlanguage();
         $xslfilename =~ s/\{langcode\}/$lang/;
     }