diff --git a/module/VuFind/src/VuFind/Controller/MyResearchController.php b/module/VuFind/src/VuFind/Controller/MyResearchController.php index a71a6456bbd477c0ab91b799bffee75eef289afa..d3503b55387a436bead8de5603899245ce37ea9f 100644 --- a/module/VuFind/src/VuFind/Controller/MyResearchController.php +++ b/module/VuFind/src/VuFind/Controller/MyResearchController.php @@ -744,7 +744,7 @@ class MyResearchController extends AbstractBase ->getResults()->getRecord($current['id']); } catch (RecordMissingException $e) { $factory = $this->getServiceLocator()->get('RecordDriverPluginManager'); - $record = clone($factory->get('Missing')); + $record = $factory->get('Missing'); $record->setRawData( array('id' => isset($current['id']) ? $current['id'] : null) ); diff --git a/module/VuFind/src/VuFind/Record/Loader.php b/module/VuFind/src/VuFind/Record/Loader.php index 853eb850161355b847e25419057842abcd1db504..6ed4c6040fd2800c48b2817fadba05dc86270c8f 100644 --- a/module/VuFind/src/VuFind/Record/Loader.php +++ b/module/VuFind/src/VuFind/Record/Loader.php @@ -134,7 +134,7 @@ class Loader implements ServiceLocatorAwareInterface $fields['id'] = $details['id']; $factory = $this->getServiceLocator() ->get('RecordDriverPluginManager'); - $retVal[$i] = clone($factory->get('Missing')); + $retVal[$i] = $factory->get('Missing'); $retVal[$i]->setRawData($fields); $retVal[$i]->setResourceSource($details['source']); } diff --git a/module/VuFind/src/VuFind/RecordDriver/PluginManager.php b/module/VuFind/src/VuFind/RecordDriver/PluginManager.php index 6c61443e1c0952373b45d967523be2f13185f7e7..bd4e63a20bfde09cffe9108538d5efcf4cca6584 100644 --- a/module/VuFind/src/VuFind/RecordDriver/PluginManager.php +++ b/module/VuFind/src/VuFind/RecordDriver/PluginManager.php @@ -38,6 +38,23 @@ namespace VuFind\RecordDriver; */ class PluginManager extends \VuFind\ServiceManager\AbstractPluginManager { + /** + * Constructor + * + * Make sure table gateways are properly initialized. + * + * @param null|ConfigInterface $configuration Configuration settings (optional) + */ + public function __construct( + \Zend\ServiceManager\ConfigInterface $configuration = null + ) { + parent::__construct($configuration); + + // Record drivers are not meant to be shared -- every time we retrieve one, + // we are building a brand new object. + $this->setShareByDefault(false); + } + /** * Return the name of the base class or interface that plug-ins must conform * to. diff --git a/module/VuFind/src/VuFind/Search/Solr/Results.php b/module/VuFind/src/VuFind/Search/Solr/Results.php index 3e5b0bf6ed2c7f40d2b1bf6e84892ffa347aaf2f..1e9e6a280a3842e22ec966961f4f032a39d6e1e9 100644 --- a/module/VuFind/src/VuFind/Search/Solr/Results.php +++ b/module/VuFind/src/VuFind/Search/Solr/Results.php @@ -543,7 +543,7 @@ class Results extends BaseResults $recordType = $factory->has($key) ? $key : 'SolrDefault'; // Build the object: - $driver = clone($factory->get($recordType)); + $driver = $factory->get($recordType); $driver->setRawData($data); return $driver; } diff --git a/module/VuFind/src/VuFind/Search/SolrAuth/Results.php b/module/VuFind/src/VuFind/Search/SolrAuth/Results.php index d391bc9793e1368fe04351c893cf6e8f75a45768..35fb26ebb19300e5efcdf7adf3cac6da36be9607 100644 --- a/module/VuFind/src/VuFind/Search/SolrAuth/Results.php +++ b/module/VuFind/src/VuFind/Search/SolrAuth/Results.php @@ -64,7 +64,7 @@ class Results extends \VuFind\Search\Solr\Results protected function initRecordDriver($data) { $factory = $this->getServiceLocator()->get('RecordDriverPluginManager'); - $driver = clone($factory->get('SolrAuth')); + $driver = $factory->get('SolrAuth'); $driver->setRawData($data); return $driver; } diff --git a/module/VuFind/src/VuFind/Search/SolrReserves/Results.php b/module/VuFind/src/VuFind/Search/SolrReserves/Results.php index 104bcef35dd49ac3d70ec5fa987b6223a2cd4ddc..0b3038b7d5bf8bd214bad2f562cf8232d80808eb 100644 --- a/module/VuFind/src/VuFind/Search/SolrReserves/Results.php +++ b/module/VuFind/src/VuFind/Search/SolrReserves/Results.php @@ -66,7 +66,7 @@ class Results extends \VuFind\Search\Solr\Results protected function initRecordDriver($data) { $factory = $this->getServiceLocator()->get('RecordDriverPluginManager'); - $driver = clone($factory->get('SolrReserves')); + $driver = $factory->get('SolrReserves'); $driver->setRawData($data); return $driver; } diff --git a/module/VuFind/src/VuFind/Search/Summon/Results.php b/module/VuFind/src/VuFind/Search/Summon/Results.php index 8bf28e69283bef4978b1c60aae684fca880eacf4..efe1dce981f8d439418ac5b724b6ad9e237e93b6 100644 --- a/module/VuFind/src/VuFind/Search/Summon/Results.php +++ b/module/VuFind/src/VuFind/Search/Summon/Results.php @@ -161,7 +161,7 @@ class Results extends BaseResults protected function initRecordDriver($data) { $factory = $this->getServiceLocator()->get('RecordDriverPluginManager'); - $driver = clone($factory->get('Summon')); + $driver = $factory->get('Summon'); $driver->setRawData($data); return $driver; } diff --git a/module/VuFind/src/VuFind/Search/WorldCat/Results.php b/module/VuFind/src/VuFind/Search/WorldCat/Results.php index f5cd79d3ee2fc2d78db46b24d0ddcb1db2b45a9a..bd219419d7c3fab5b75ecbf4309263ede18d5401 100644 --- a/module/VuFind/src/VuFind/Search/WorldCat/Results.php +++ b/module/VuFind/src/VuFind/Search/WorldCat/Results.php @@ -125,7 +125,7 @@ class Results extends BaseResults protected function initRecordDriver($data) { $factory = $this->getServiceLocator()->get('RecordDriverPluginManager'); - $driver = clone($factory->get('WorldCat')); + $driver = $factory->get('WorldCat'); $driver->setRawData($data); return $driver; }