From 79f8de229fa526d0a6916eeb9af09788bc541a57 Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Wed, 24 Oct 2012 14:02:49 -0400 Subject: [PATCH] Switched to dependency injection for cleaner WorldCatIdentities/WorldCatTerms recommendation modules. --- module/VuFind/config/module.config.php | 14 ++++++-- .../VuFind/Recommend/WorldCatIdentities.php | 35 ++++++++++++++++--- .../src/VuFind/Recommend/WorldCatTerms.php | 35 ++++++++++++++++--- 3 files changed, 74 insertions(+), 10 deletions(-) diff --git a/module/VuFind/config/module.config.php b/module/VuFind/config/module.config.php index c555ad3c36b..ff5c5b6636c 100644 --- a/module/VuFind/config/module.config.php +++ b/module/VuFind/config/module.config.php @@ -201,6 +201,18 @@ $config = array( ), 'recommend_plugin_manager' => array( 'abstract_factories' => array('VuFind\Recommend\PluginFactory'), + 'factories' => array( + 'worldcatidentities' => function ($sm) { + return new \VuFind\Recommend\WorldCatIdentities( + $sm->getServiceLocator()->get('VuFind\WorldCatUtils') + ); + }, + 'worldcatterms' => function ($sm) { + return new \VuFind\Recommend\WorldCatTerms( + $sm->getServiceLocator()->get('VuFind\WorldCatUtils') + ); + }, + ), 'invokables' => array( 'authorfacets' => 'VuFind\Recommend\AuthorFacets', 'authorinfo' => 'VuFind\Recommend\AuthorInfo', @@ -219,8 +231,6 @@ $config = array( 'summonresults' => 'VuFind\Recommend\SummonResults', 'switchtype' => 'VuFind\Recommend\SwitchType', 'topfacets' => 'VuFind\Recommend\TopFacets', - 'worldcatidentities' => 'VuFind\Recommend\WorldCatIdentities', - 'worldcatterms' => 'VuFind\Recommend\WorldCatTerms', ), ), 'recorddriver_plugin_manager' => array( diff --git a/module/VuFind/src/VuFind/Recommend/WorldCatIdentities.php b/module/VuFind/src/VuFind/Recommend/WorldCatIdentities.php index 3bf0c5d7f48..d07c3cf03b8 100644 --- a/module/VuFind/src/VuFind/Recommend/WorldCatIdentities.php +++ b/module/VuFind/src/VuFind/Recommend/WorldCatIdentities.php @@ -26,6 +26,7 @@ * @link http://vufind.org/wiki/building_a_recommendations_module Wiki */ namespace VuFind\Recommend; +use VuFind\Connection\WorldCatUtils; /** * WorldCatIdentities Recommendations Module @@ -38,11 +39,39 @@ namespace VuFind\Recommend; * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @link http://vufind.org/wiki/building_a_recommendations_module Wiki */ -class WorldCatIdentities extends AbstractSearchManagerAwareModule +class WorldCatIdentities implements RecommendInterface { + /** + * Search results object + * + * @var \VuFind\Search\Base\Results + */ protected $searchObject; + + /** + * Configuration settings + * + * @var array + */ protected $settings; + /** + * WorldCat utilities wrapper object. + * + * @var WorldCatUtils + */ + protected $worldCatUtils; + + /** + * Constructor + * + * @param WorldCatUtils $wcu WorldCat utilities object + */ + public function __construct(WorldCatUtils $wcu) + { + $this->worldCatUtils = $wcu; + } + /** * setConfig * @@ -105,8 +134,6 @@ class WorldCatIdentities extends AbstractSearchManagerAwareModule $lookfor = isset($search[0]['lookfor']) ? $search[0]['lookfor'] : ''; // Get terminology information: - return $this->getServiceLocator()->getServiceLocator() - ->get('VuFind\WorldCatUtils') - ->getRelatedIdentities($lookfor); + return $this->worldCatUtils->getRelatedIdentities($lookfor); } } \ No newline at end of file diff --git a/module/VuFind/src/VuFind/Recommend/WorldCatTerms.php b/module/VuFind/src/VuFind/Recommend/WorldCatTerms.php index decab0b9fea..07dfd42d1fc 100644 --- a/module/VuFind/src/VuFind/Recommend/WorldCatTerms.php +++ b/module/VuFind/src/VuFind/Recommend/WorldCatTerms.php @@ -26,6 +26,7 @@ * @link http://vufind.org/wiki/building_a_recommendations_module Wiki */ namespace VuFind\Recommend; +use VuFind\Connection\WorldCatUtils; /** * WorldCatTerms Recommendations Module @@ -38,11 +39,39 @@ namespace VuFind\Recommend; * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @link http://vufind.org/wiki/building_a_recommendations_module Wiki */ -class WorldCatTerms extends AbstractSearchManagerAwareModule +class WorldCatTerms implements RecommendInterface { + /** + * Search results object + * + * @var \VuFind\Search\Base\Results + */ protected $searchObject; + + /** + * Vocabulary to use. + * + * @var string + */ protected $vocab = 'lcsh'; + /** + * WorldCat utilities wrapper object. + * + * @var WorldCatUtils + */ + protected $worldCatUtils; + + /** + * Constructor + * + * @param WorldCatUtils $wcu WorldCat utilities object + */ + public function __construct(WorldCatUtils $wcu) + { + $this->worldCatUtils = $wcu; + } + /** * setConfig * @@ -106,9 +135,7 @@ class WorldCatTerms extends AbstractSearchManagerAwareModule $lookfor = isset($search[0]['lookfor']) ? $search[0]['lookfor'] : ''; // Get terminology information: - $wc = $this->getServiceLocator()->getServiceLocator() - ->get('VuFind\WorldCatUtils'); - $terms = $wc->getRelatedTerms($lookfor, $this->vocab); + $terms = $this->worldCatUtils->getRelatedTerms($lookfor, $this->vocab); // Wipe out any empty or unexpected sections of the related terms array; // this will make it easier to only display content in the template if -- GitLab