From 99a88a3ac8779ef4e8b24c4d1fd82eaa16afcb97 Mon Sep 17 00:00:00 2001
From: Ere Maijala <ere.maijala@helsinki.fi>
Date: Mon, 26 Nov 2018 11:19:57 +0200
Subject: [PATCH] Make it possible to include parameters in the OpenURL
 resolver base URL.

---
 module/VuFind/src/VuFind/Resolver/Driver/AbstractBase.php | 5 ++++-
 module/VuFind/src/VuFind/Resolver/Driver/Redi.php         | 2 +-
 module/VuFind/src/VuFind/Resolver/Driver/Sfx.php          | 5 +++--
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/module/VuFind/src/VuFind/Resolver/Driver/AbstractBase.php b/module/VuFind/src/VuFind/Resolver/Driver/AbstractBase.php
index cdff08a703a..9119a8fd6d2 100644
--- a/module/VuFind/src/VuFind/Resolver/Driver/AbstractBase.php
+++ b/module/VuFind/src/VuFind/Resolver/Driver/AbstractBase.php
@@ -68,7 +68,10 @@ abstract class AbstractBase implements DriverInterface
      */
     public function getResolverUrl($openURL)
     {
-        return $this->baseUrl . '?' . $openURL;
+        $url = $this->baseUrl;
+        $url .= strpos($url, '?') === false ? '?' : '&';
+        $url .= $openURL;
+        return $url;
     }
 
     /**
diff --git a/module/VuFind/src/VuFind/Resolver/Driver/Redi.php b/module/VuFind/src/VuFind/Resolver/Driver/Redi.php
index 6d4290d1525..f240f5cbe41 100644
--- a/module/VuFind/src/VuFind/Resolver/Driver/Redi.php
+++ b/module/VuFind/src/VuFind/Resolver/Driver/Redi.php
@@ -81,7 +81,7 @@ class Redi extends AbstractBase
      */
     public function fetchLinks($openURL)
     {
-        $url = $this->baseUrl . '?' . $openURL;
+        $url = $this->getResolverUrl($openURL);
         $feed = $this->httpClient->setUri($url)->send()->getBody();
         return $feed;
     }
diff --git a/module/VuFind/src/VuFind/Resolver/Driver/Sfx.php b/module/VuFind/src/VuFind/Resolver/Driver/Sfx.php
index 8d89d6d8f3f..c1995c9dd8d 100644
--- a/module/VuFind/src/VuFind/Resolver/Driver/Sfx.php
+++ b/module/VuFind/src/VuFind/Resolver/Driver/Sfx.php
@@ -72,8 +72,9 @@ class Sfx extends AbstractBase
     public function fetchLinks($openURL)
     {
         // Make the call to SFX and load results
-        $url = $this->baseUrl .
-            '?sfx.response_type=multi_obj_detailed_xml&svc.fulltext=yes&' . $openURL;
+        $url = $this->getResolverUrl(
+            'sfx.response_type=multi_obj_detailed_xml&svc.fulltext=yes&' . $openURL
+        );
         $feed = $this->httpClient->setUri($url)->send()->getBody();
         return $feed;
     }
-- 
GitLab