From fc0e2fb575e757672934207a42186756848ab16b Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Tue, 26 Feb 2013 12:09:17 -0500
Subject: [PATCH] Decoupled resolver drivers from config reader.

---
 module/VuFind/config/module.config.php        | 20 +++++++++++++++----
 .../VuFind/src/VuFind/Resolver/Connection.php |  1 -
 .../VuFind/src/VuFind/Resolver/Driver/Ezb.php | 15 +++++++++-----
 .../VuFind/src/VuFind/Resolver/Driver/Sfx.php | 14 ++++++++-----
 .../VuFind/Resolver/Driver/Threesixtylink.php | 15 +++++++++-----
 5 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/module/VuFind/config/module.config.php b/module/VuFind/config/module.config.php
index a4fb642671b..06cccce9507 100644
--- a/module/VuFind/config/module.config.php
+++ b/module/VuFind/config/module.config.php
@@ -556,10 +556,22 @@ $config = array(
             ),
             'resolver_driver' => array(
                 'abstract_factories' => array('VuFind\Resolver\Driver\PluginFactory'),
-                'invokables' => array(
-                    '360link' => 'VuFind\Resolver\Driver\Threesixtylink',
-                    'ezb' => 'VuFind\Resolver\Driver\Ezb',
-                    'sfx' => 'VuFind\Resolver\Driver\Sfx',
+                'factories' => array(
+                    '360link' => function ($sm) {
+                        return new \VuFind\Resolver\Driver\Threesixtylink(
+                            \VuFind\Config\Reader::getConfig()->OpenURL->url
+                        );
+                    },
+                    'ezb' => function ($sm) {
+                        return new \VuFind\Resolver\Driver\Ezb(
+                            \VuFind\Config\Reader::getConfig()->OpenURL->url
+                        );
+                    },
+                    'sfx' => function ($sm) {
+                        return new \VuFind\Resolver\Driver\Sfx(
+                            \VuFind\Config\Reader::getConfig()->OpenURL->url
+                        );
+                    },
                 ),
                 'aliases' => array(
                     'threesixtylink' => '360link',
diff --git a/module/VuFind/src/VuFind/Resolver/Connection.php b/module/VuFind/src/VuFind/Resolver/Connection.php
index ee22d7bb3c8..a1d404231a6 100644
--- a/module/VuFind/src/VuFind/Resolver/Connection.php
+++ b/module/VuFind/src/VuFind/Resolver/Connection.php
@@ -29,7 +29,6 @@
  * @link     http://vufind.org/wiki/vufind2:link_resolver_drivers Wiki
  */
 namespace VuFind\Resolver;
-use VuFind\Config\Reader as ConfigReader;
 
 /**
  * Resolver Connection Class
diff --git a/module/VuFind/src/VuFind/Resolver/Driver/Ezb.php b/module/VuFind/src/VuFind/Resolver/Driver/Ezb.php
index 5c4a7516eb8..19e951bfbd3 100644
--- a/module/VuFind/src/VuFind/Resolver/Driver/Ezb.php
+++ b/module/VuFind/src/VuFind/Resolver/Driver/Ezb.php
@@ -31,7 +31,7 @@
  * @link     http://vufind.org/wiki/vufind2:link_resolver_drivers Wiki
  */
 namespace VuFind\Resolver\Driver;
-use DOMDocument, DOMXpath, VuFind\Config\Reader as ConfigReader;
+use DOMDocument, DOMXpath;
 
 /**
  * EZB Link Resolver Driver
@@ -44,16 +44,21 @@ use DOMDocument, DOMXpath, VuFind\Config\Reader as ConfigReader;
  */
 class Ezb implements DriverInterface
 {
+    /**
+     * Base URL for link resolver
+     *
+     * @var string
+     */
     protected $baseUrl;
 
     /**
      * Constructor
+     *
+     * @param string $baseUrl Base URL for link resolver
      */
-    public function __construct()
+    public function __construct($baseUrl)
     {
-        // Load Configuration for this Module
-        $config = ConfigReader::getConfig();
-        $this->baseUrl = $config->OpenURL->url;
+        $this->baseUrl = $baseUrl;
     }
 
     /**
diff --git a/module/VuFind/src/VuFind/Resolver/Driver/Sfx.php b/module/VuFind/src/VuFind/Resolver/Driver/Sfx.php
index 62f4469deb4..586a4da6c47 100644
--- a/module/VuFind/src/VuFind/Resolver/Driver/Sfx.php
+++ b/module/VuFind/src/VuFind/Resolver/Driver/Sfx.php
@@ -29,7 +29,6 @@
  * @link     http://vufind.org/wiki/vufind2:link_resolver_drivers Wiki
  */
 namespace VuFind\Resolver\Driver;
-use VuFind\Config\Reader as ConfigReader;
 
 /**
  * SFX Link Resolver Driver
@@ -42,16 +41,21 @@ use VuFind\Config\Reader as ConfigReader;
  */
 class Sfx implements DriverInterface
 {
+    /**
+     * Base URL for link resolver
+     *
+     * @var string
+     */
     protected $baseUrl;
 
     /**
      * Constructor
+     *
+     * @param string $baseUrl Base URL for link resolver
      */
-    public function __construct()
+    public function __construct($baseUrl)
     {
-        // Load Configuration for this Module
-        $config = ConfigReader::getConfig();
-        $this->baseUrl = $config->OpenURL->url;
+        $this->baseUrl = $baseUrl;
     }
 
     /**
diff --git a/module/VuFind/src/VuFind/Resolver/Driver/Threesixtylink.php b/module/VuFind/src/VuFind/Resolver/Driver/Threesixtylink.php
index 7395682dc39..a2688bd9d3b 100644
--- a/module/VuFind/src/VuFind/Resolver/Driver/Threesixtylink.php
+++ b/module/VuFind/src/VuFind/Resolver/Driver/Threesixtylink.php
@@ -28,7 +28,7 @@
  * @link     http://vufind.org/wiki/vufind2:link_resolver_drivers Wiki
  */
 namespace VuFind\Resolver\Driver;
-use DOMDocument, DOMXpath, VuFind\Config\Reader as ConfigReader;
+use DOMDocument, DOMXpath;
 
 /**
  * 360Link Link Resolver Driver
@@ -41,16 +41,21 @@ use DOMDocument, DOMXpath, VuFind\Config\Reader as ConfigReader;
  */
 class Threesixtylink implements DriverInterface
 {
+    /**
+     * Base URL for link resolver
+     *
+     * @var string
+     */
     protected $baseUrl;
 
     /**
      * Constructor
+     *
+     * @param string $baseUrl Base URL for link resolver
      */
-    public function __construct()
+    public function __construct($baseUrl)
     {
-        // Load Configuration for this Module
-        $config = ConfigReader::getConfig();
-        $this->baseUrl = $config->OpenURL->url;
+        $this->baseUrl = $baseUrl;
     }
 
     /**
-- 
GitLab