diff --git a/module/VuFind/src/VuFind/Controller/OaiController.php b/module/VuFind/src/VuFind/Controller/OaiController.php index f5ed437591eb868afa9085b2f0bf15bc45c7ca42..a8bc183c9231d9e2cbb4c94c48d0171d10bb08c2 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 917761621f54a8a2253632a5bc9783aaa189d161..200ecc4d3ce098ebf978edcc40349589e918d29b 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 cfb8945086d195df78d0c5c5390db4ee3486ec75..8f66da1e6516c6509a20b8ea032edf9108cf1483 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'; }