From 2244c3f0dcd501eeb703bb0e452621dc960e0c2b Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Wed, 5 Sep 2012 14:00:20 -0400
Subject: [PATCH] Use Search Manager in OAI server.

---
 .../src/VuFind/Controller/OaiController.php   |  1 +
 module/VuFind/src/VuFind/OAI/Server.php       | 26 +++++++++++--------
 module/VuFind/src/VuFind/OAI/Server/Auth.php  | 10 ++++---
 3 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/module/VuFind/src/VuFind/Controller/OaiController.php b/module/VuFind/src/VuFind/Controller/OaiController.php
index f5ed437591e..a8bc183c923 100644
--- a/module/VuFind/src/VuFind/Controller/OaiController.php
+++ b/module/VuFind/src/VuFind/Controller/OaiController.php
@@ -97,6 +97,7 @@ class OaiController extends AbstractBase
         // Build OAI response or die trying:
         try {
             $server = new $serverClass(
+                $this->getSearchManager(),
                 $baseURL, $this->getRequest()->getQuery()->toArray()
             );
             $xml = $server->getResponse();
diff --git a/module/VuFind/src/VuFind/OAI/Server.php b/module/VuFind/src/VuFind/OAI/Server.php
index 917761621f5..200ecc4d3ce 100644
--- a/module/VuFind/src/VuFind/OAI/Server.php
+++ b/module/VuFind/src/VuFind/OAI/Server.php
@@ -63,14 +63,20 @@ class Server
     protected $earliestDatestamp = '2000-01-01T00:00:00Z';
     protected $adminEmail;
 
+    // Search manager:
+    protected $searchManager;
+
     /**
      * Constructor
      *
-     * @param string $baseURL The base URL for the OAI server
-     * @param array  $params  The incoming OAI-PMH parameters (i.e. $_GET)
+     * @param \VuFind\Search\Manager $sm      Search manager for retrieving records
+     * @param string                 $baseURL The base URL for the OAI server
+     * @param array                  $params  The incoming OAI-PMH parameters
+     * (i.e. $_GET)
      */
-    public function __construct($baseURL, $params)
+    public function __construct(\VuFind\Search\Manager $sm, $baseURL, $params)
     {
+        $this->searchManager = $sm;
         $this->baseURL = $baseURL;
         $this->params = isset($params) && is_array($params) ? $params : array();
         $this->initializeMetadataFormats(); // Load details on supported formats
@@ -501,10 +507,9 @@ class Server
         // we'll assume that this list is short enough to load in a single response;
         // it may be necessary to implement a resumption token mechanism if this
         // proves not to be the case:
-        $paramsClass = 'VuFind\Search\\' . $this->searchClassId . '\Params';
-        $params = new $paramsClass();
-        $resultsClass = 'VuFind\Search\\' . $this->searchClassId . '\Results';
-        $results = new $resultsClass($params);
+        $this->searchManager->setSearchClassId($this->searchClassId);
+        $params = $this->searchManager->getParams();
+        $results = $this->searchManager->getResults($params);
         try {
             $facets = $results->getFullFieldFacets(array($this->setField));
         } catch (\Exception $e) {
@@ -557,8 +562,8 @@ class Server
         $set = ''
     ) {
         // Set up search parameters:
-        $paramsClass = 'VuFind\Search\\' . $this->searchClassId . '\Params';
-        $params = new $paramsClass();
+        $this->searchManager->setSearchClassId($this->searchClassId);
+        $params = $this->searchManager->getParams();
         $params->setLimit($limit);
         $params->getOptions()->disableHighlighting();
         $params->getOptions()->spellcheckEnabled(false);
@@ -579,8 +584,7 @@ class Server
         }
 
         // Perform a Solr search:
-        $resultsClass = 'VuFind\Search\\' . $this->searchClassId . '\Results';
-        $results = new $resultsClass($params);
+        $results = $this->searchManager->getResults($params);
         $results->overrideStartRecord($offset + 1);
 
         // Return our results:
diff --git a/module/VuFind/src/VuFind/OAI/Server/Auth.php b/module/VuFind/src/VuFind/OAI/Server/Auth.php
index cfb8945086d..8f66da1e651 100644
--- a/module/VuFind/src/VuFind/OAI/Server/Auth.php
+++ b/module/VuFind/src/VuFind/OAI/Server/Auth.php
@@ -44,12 +44,14 @@ class Auth extends Base
     /**
      * Constructor
      *
-     * @param string $baseURL The base URL for the OAI server
-     * @param array  $params  The incoming OAI-PMH parameters (i.e. $_GET)
+     * @param \VuFind\Search\Manager $sm      Search manager for retrieving records
+     * @param string                 $baseURL The base URL for the OAI server
+     * @param array                  $params  The incoming OAI-PMH parameters
+     * (i.e. $_GET)
      */
-    public function __construct($baseURL, $params)
+    public function __construct(\VuFind\Search\Manager $sm, $baseURL, $params)
     {
-        parent::__construct($baseURL, $params);
+        parent::__construct($sm, $baseURL, $params);
         $this->core = 'authority';
         $this->searchClassId = 'SolrAuth';
     }
-- 
GitLab