From eb6f89db1c03b32f05b30c083c728c55124754c6 Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Thu, 20 Dec 2012 11:31:06 -0500
Subject: [PATCH] Hooked up VuFindHttp module.

---
 config/application.config.php                 |  2 +-
 module/VuFind/config/module.config.php        | 16 +++++++++++
 .../src/VuFind/ServiceManager/Initializer.php | 27 ++++++++++++++++---
 3 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/config/application.config.php b/config/application.config.php
index d9711965ab3..c7800de4654 100644
--- a/config/application.config.php
+++ b/config/application.config.php
@@ -1,7 +1,7 @@
 <?php
 $config = array(
     'modules' => array(
-        'VuFind',
+        'VuFindHttp', 'VuFind',
     ),
     'module_listener_options' => array( 
         'config_glob_paths'    => array(
diff --git a/module/VuFind/config/module.config.php b/module/VuFind/config/module.config.php
index 40337b43aab..a62331b7bea 100644
--- a/module/VuFind/config/module.config.php
+++ b/module/VuFind/config/module.config.php
@@ -409,6 +409,17 @@ $config = array(
             'VuFind\DbAdapter' => function ($sm) {
                 return \VuFind\Db\AdapterFactory::getAdapter();
             },
+            'VuFind\Http' => function ($sm) {
+                $config = \VuFind\Config\Reader::getConfig();
+                $options = array();
+                if (isset($config->Proxy->host)) {
+                    $options['proxy_host'] = $config->Proxy->host;
+                    if (isset($config->Proxy->port)) {
+                        $options['proxy_port'] = $config->Proxy->port;
+                    }
+                }
+                return new \VuFindHttp\HttpService($options);
+            },
             'VuFind\ILSConnection' => function ($sm) {
                 $catalog = new \VuFind\ILS\Connection();
                 return $catalog
@@ -498,6 +509,11 @@ $config = array(
         ),
     ),
     'translator' => array(),
+    'view_helpers' => array(
+        'initializers' => array(
+            array('VuFind\ServiceManager\Initializer', 'initZendPlugin'),
+        ),
+    ),
     'view_manager' => array(
         'display_not_found_reason' => APPLICATION_ENV == 'development',
         'display_exceptions'       => APPLICATION_ENV == 'development',
diff --git a/module/VuFind/src/VuFind/ServiceManager/Initializer.php b/module/VuFind/src/VuFind/ServiceManager/Initializer.php
index cd45e97f3bf..5d93a939a25 100644
--- a/module/VuFind/src/VuFind/ServiceManager/Initializer.php
+++ b/module/VuFind/src/VuFind/ServiceManager/Initializer.php
@@ -58,6 +58,28 @@ class Initializer
         if ($instance instanceof \VuFind\I18n\Translator\TranslatorAwareInterface) {
             $instance->setTranslator($sm->get('VuFind\Translator'));
         }
+        if ($instance instanceof \VuFindHttp\HttpServiceAwareInterface) {
+            $instance->setHttpService($sm->get('VuFind\Http'));
+        }
+        return $instance;
+    }
+
+    /**
+     * Given a Zend Framework Plugin Manager, initialize the instance.
+     *
+     * @param object                                     $instance Instance to
+     * initialize
+     * @param \Zend\ServiceManager\AbstractPluginManager $manager  Plugin manager
+     *
+     * @return object
+     */
+    public static function initZendPlugin($instance,
+        \Zend\ServiceManager\AbstractPluginManager $manager
+    ) {
+        $sm = $manager->getServiceLocator();
+        if (null !== $sm) {
+            static::initInstance($instance, $sm);
+        }
         return $instance;
     }
 
@@ -71,10 +93,7 @@ class Initializer
      */
     public static function initPlugin($instance, AbstractPluginManager $manager)
     {
-        $sm = $manager->getServiceLocator();
-        if (null !== $sm) {
-            static::initInstance($instance, $sm);
-        }
+        static::initZendPlugin($instance, $manager);
         if (method_exists($instance, 'setPluginManager')) {
             $instance->setPluginManager($manager);
         }
-- 
GitLab