From 9ec1fb4fd91cc64cf4207da1a964037076d3d512 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Wed, 24 Sep 2014 17:01:00 +0200 Subject: [PATCH] Bug 12758: Add new module call in Koha::XSLT::Base Reviving a report back from 2014. The workaround is now moved to a separate helper module from another patch. Test plan: Test OPACXSLTDetailsDisplay with an https reference. You may try: https://library.rijksmuseum.nl/opac-tmpl/bootstrap/en/xslt/zztest.xsl If you flush and restart, the opac detail pages will contain the text 'This is my MARC record.'. NOTE: If you point to an xslt file over https that contains includes or imports, you will still get the error: Failed to load external entity. To address that, we need to extend the _resolve_includes sub. Signed-off-by: Marcel de Rooy Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Tomas Cohen Arazi --- Koha/XSLT/Base.pm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Koha/XSLT/Base.pm b/Koha/XSLT/Base.pm index 7b6134994f..cdadee741d 100644 --- a/Koha/XSLT/Base.pm +++ b/Koha/XSLT/Base.pm @@ -39,6 +39,9 @@ Koha::XSLT::Base - Facilitate use of XSLT transformations via the err attribute. Reloading XSLT files can be done with the refresh method. + The module refers to a (temporary) helper module Koha::XSLT::HTTPS that + resolves issues in libxml2/libxslt for https references. + =head1 METHODS =head2 new @@ -117,6 +120,7 @@ Koha::XSLT::Base - Facilitate use of XSLT transformations use Modern::Perl; use XML::LibXML; use XML::LibXSLT; +use Koha::XSLT::HTTPS; use Koha::XSLT::Security; use base qw(Class::Accessor); @@ -349,8 +353,11 @@ sub _load { } sub _load_xml_args { - my $self = shift; - return $_[1]? { 'string' => $_[1]//'' }: { 'location' => $_[0]//'' }; + my ( $self, $filename, $code ) = @_; + return Koha::XSLT::HTTPS->load($filename) if $filename && $filename =~ /^https/i; + # Workaround for current problems with https location in libxml2/libxslt + # Returns response like { string => SOME_CODE } + return $code ? { string => $code } : { location => $filename }; } # _set_error -- 2.39.5