From 107a7d86467b1c43c68315c689b6373cf975a4ad Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Fri, 18 Dec 2015 12:50:43 -0500 Subject: [PATCH] Removed WorldCatTerms recommendation module due to API shutdown. - See http://www.oclc.org/research/themes/data-science/termservices.html --- config/vufind/searches.ini | 6 - module/VuFind/config/module.config.php | 2 +- .../src/VuFind/Connection/WorldCatUtils.php | 134 ------------------ .../{WorldCatTerms.php => Deprecated.php} | 80 +---------- .../VuFind/src/VuFind/Recommend/Factory.php | 14 -- module/VuFind/tests/fixtures/worldcat/terms | Bin 4598 -> 0 bytes .../Connection/WorldCatUtilsTest.php | 15 -- .../Recommend/WorldCatTermsTest.php | 94 ------------ .../templates/Recommend/Deprecated.phtml | 2 + .../templates/Recommend/WorldCatTerms.phtml | 21 --- .../templates/Recommend/Deprecated.phtml | 2 + .../templates/Recommend/WorldCatTerms.phtml | 1 - 12 files changed, 12 insertions(+), 359 deletions(-) rename module/VuFind/src/VuFind/Recommend/{WorldCatTerms.php => Deprecated.php} (53%) delete mode 100644 module/VuFind/tests/fixtures/worldcat/terms delete mode 100644 module/VuFind/tests/unit-tests/src/VuFindTest/Recommend/WorldCatTermsTest.php create mode 100644 themes/bootstrap3/templates/Recommend/Deprecated.phtml delete mode 100644 themes/bootstrap3/templates/Recommend/WorldCatTerms.phtml create mode 100644 themes/jquerymobile/templates/Recommend/Deprecated.phtml delete mode 100644 themes/jquerymobile/templates/Recommend/WorldCatTerms.phtml diff --git a/config/vufind/searches.ini b/config/vufind/searches.ini index 29ec32cf92d..caa2c43310d 100644 --- a/config/vufind/searches.ini +++ b/config/vufind/searches.ini @@ -341,11 +341,6 @@ CallNumber = callnumber-sort ; WorldCatIdentities ; Use the WorldCat Identities API to find names and related subjects based ; on the current search. -; WorldCatTerms:[vocabulary] -; Use the WorldCat Terminologies API to find Library of Congress Subject -; Headings related to the current search. [vocabulary] is the vocabulary to -; use for recommendations; default is "lcsh" but other options include "fast", -; "mesh", etc. See http://tspilot.oclc.org/resources/ for details. ; ; Available modules recommended for use in the "no results" area: ; @@ -385,7 +380,6 @@ Author[] = AuthorFacets Author[] = SpellingSuggestions ;Author[] = WorldCatIdentities CallNumber[] = "TopFacets:ResultsTop" ; disable spelling in this context -;Subject[] = WorldCatTerms [NoResultsRecommendations] CallNumber[] = SwitchQuery::wildcard:truncatechar diff --git a/module/VuFind/config/module.config.php b/module/VuFind/config/module.config.php index 7ec0151d5db..247c4dfbfe8 100644 --- a/module/VuFind/config/module.config.php +++ b/module/VuFind/config/module.config.php @@ -427,7 +427,6 @@ $config = [ 'visualfacets' => 'VuFind\Recommend\Factory::getVisualFacets', 'webresults' => 'VuFind\Recommend\Factory::getWebResults', 'worldcatidentities' => 'VuFind\Recommend\Factory::getWorldCatIdentities', - 'worldcatterms' => 'VuFind\Recommend\Factory::getWorldCatTerms', ], 'invokables' => [ 'alphabrowselink' => 'VuFind\Recommend\AlphaBrowseLink', @@ -443,6 +442,7 @@ $config = [ 'summondatabasesdeferred' => 'VuFind\Recommend\SummonDatabasesDeferred', 'summonresultsdeferred' => 'VuFind\Recommend\SummonResultsDeferred', 'switchtype' => 'VuFind\Recommend\SwitchType', + 'worldcatterms' => 'VuFind\Recommend\Deprecated', ], ], 'recorddriver' => [ diff --git a/module/VuFind/src/VuFind/Connection/WorldCatUtils.php b/module/VuFind/src/VuFind/Connection/WorldCatUtils.php index cc31e0f886f..dfec2f27ca5 100644 --- a/module/VuFind/src/VuFind/Connection/WorldCatUtils.php +++ b/module/VuFind/src/VuFind/Connection/WorldCatUtils.php @@ -442,138 +442,4 @@ class WorldCatUtils implements \Zend\Log\LoggerAwareInterface return $output; } - - /** - * Given a subject term, get related (broader/narrower/alternate) terms. - * Loosely adapted from Eric Lease Morgan's Term Finder demo (see - * http://zoia.library.nd.edu/sandbox/term-finder/). Note that this is - * intended as a fairly fuzzy search -- $term need not be an exact subject - * heading; this function will return best guess matches in the 'exact' - * key, possible broader terms in the 'broader' key and possible narrower - * terms in the 'narrower' key of the return array. - * - * @param string $term Term to get related terms for. - * @param string $vocabulary Vocabulary to search (default = LCSH; see OCLC docs - * for other options). - * @param int $maxRecords Max # of records to read from API (more = slower). - * - * @return mixed False on error, otherwise array of related terms, - * keyed by category. - */ - public function getRelatedTerms($term, $vocabulary = 'lcsh', $maxRecords = 10) - { - // Strip quotes from incoming term: - $term = str_replace('"', '', $term); - - // Build the request URL: - $url = "http://tspilot.oclc.org/" . urlencode($vocabulary) . "/?" . - // Search for the user-supplied term in both preferred and alternative - // fields! - "query=oclcts.preferredTerm+%3D+%22" . urlencode($term) . - "%22+OR+oclcts.alternativeTerms+%3D+%22" . urlencode($term) . "%22" . - "&version=1.1" . - "&operation=searchRetrieve" . - "&recordSchema=info%3Asrw%2Fschema%2F1%2Fmarcxml-v1.1" . - "&maximumRecords=" . intval($maxRecords) . - "&startRecord=1" . - "&resultSetTTL=300" . - "&recordPacking=xml" . - "&recordXPath=" . - "&sortKeys=recordcount"; - - // Get the API response: - $data = $this->retrieve($url); - - // Extract plain MARCXML from the WorldCat response: - $marcxml = XSLTProcessor::process('wcterms-marcxml.xsl', $data); - - // Try to parse the MARCXML into a File_MARC object; if this fails, - // we probably have bad MARCXML, which may indicate an API failure - // or an empty record set. Just give up if this happens! - try { - $marc = new \File_MARCXML($marcxml, File_MARCXML::SOURCE_STRING); - } catch (\File_MARC_Exception $e) { - return false; - } - - // Initialize arrays: - $exact = []; - $broader = []; - $narrower = []; - - while ($record = $marc->next()) { - // Get exact terms; only save it if it is not a subset of the requested - // term. - $main = $this->getExactTerm($record); - if ($main && !stristr($term, $main)) { - $exact[] = $main; - } - - // Get broader/narrower terms: - $related = $record->getFields('550'); - foreach ($related as $current) { - $type = $current->getSubfield('w'); - $value = $current->getSubfield('a'); - if ($type && $value) { - $type = (string)$type->getData(); - $value = (string)$value->getData(); - if ($type == 'g') { - // Don't save exact matches to the user-entered term: - if (strcasecmp($term, $value) != 0) { - $broader[] = $value; - } - } else if ($type == 'h') { - // Don't save exact matches to the user-entered term: - if (strcasecmp($term, $value) != 0) { - $narrower[] = $value; - } - } - } - } - } - - // Send back everything we found, sorted and filtered for uniqueness; note - // that we do NOT sort FAST results since they support relevance ranking. - // As of this writing, other vocabularies do not support relevance. - if ($vocabulary !== 'fast') { - natcasesort($exact); - natcasesort($broader); - natcasesort($narrower); - } - return [ - 'exact' => array_unique($exact), - 'broader' => array_unique($broader), - 'narrower' => array_unique($narrower) - ]; - } - - /** - * Extract an exact term from a MARC record. - * - * @param \File_MARC_Record $record MARC record - * - * @return string - */ - protected function getExactTerm($record) - { - // Get exact terms: - $actual = $record->getField('150'); - if (!$actual || !($main = $actual->getSubfield('a'))) { - return false; - } - - // Some versions of File_MARCXML seem to have trouble returning - // strings properly (giving back XML objects instead); let's - // cast to string to be sure we get what we expect! - $main = (string)$main->getData(); - - // Add subdivisions: - $subdivisions = $actual->getSubfields('x'); - if ($subdivisions) { - foreach ($subdivisions as $current) { - $main .= ', ' . (string)$current->getData(); - } - } - return $main; - } } diff --git a/module/VuFind/src/VuFind/Recommend/WorldCatTerms.php b/module/VuFind/src/VuFind/Recommend/Deprecated.php similarity index 53% rename from module/VuFind/src/VuFind/Recommend/WorldCatTerms.php rename to module/VuFind/src/VuFind/Recommend/Deprecated.php index 556adda3a1f..6118aa9ae44 100644 --- a/module/VuFind/src/VuFind/Recommend/WorldCatTerms.php +++ b/module/VuFind/src/VuFind/Recommend/Deprecated.php @@ -1,10 +1,11 @@ <?php /** - * WorldCatTerms Recommendations Module + * Deprecated Recommendations Module - used to replace legacy modules that no + * longer function due to, for example, external APIs that have been shut down. * * PHP version 5 * - * Copyright (C) Villanova University 2010. + * Copyright (C) Villanova University 2015. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -26,13 +27,10 @@ * @link http://vufind.org/wiki/vufind2:recommendation_modules Wiki */ namespace VuFind\Recommend; -use VuFind\Connection\WorldCatUtils; -use VuFindSearch\Query\Query; /** - * WorldCatTerms Recommendations Module - * - * This class provides recommendations by using the WorldCat Terminologies API. + * Deprecated Recommendations Module - used to replace legacy modules that no + * longer function due to, for example, external APIs that have been shut down. * * @category VuFind2 * @package Recommendations @@ -40,39 +38,8 @@ use VuFindSearch\Query\Query; * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License * @link http://vufind.org/wiki/vufind2:recommendation_modules Wiki */ -class WorldCatTerms implements RecommendInterface +class Deprecated 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; - } - /** * Store the configuration of the recommendation module. * @@ -82,9 +49,6 @@ class WorldCatTerms implements RecommendInterface */ public function setConfig($settings) { - // Pick a vocabulary (either user-specified, or LCSH by default): - $params = trim($settings); - $this->vocab = empty($params) ? 'lcsh' : $params; } /** @@ -101,7 +65,6 @@ class WorldCatTerms implements RecommendInterface */ public function init($params, $request) { - // No action needed. } /** @@ -115,34 +78,5 @@ class WorldCatTerms implements RecommendInterface */ public function process($results) { - $this->searchObject = $results; - } - - /** - * Get terms related to the query. - * - * @return array - */ - public function getTerms() - { - // Extract the first search term from the search object: - $search = $this->searchObject->getParams()->getQuery(); - $lookfor = ($search instanceof Query) ? $search->getString() : ''; - - // Get terminology information: - $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 - // we have something worth displaying. - if (is_array($terms)) { - $desiredKeys = ['exact', 'broader', 'narrower']; - foreach ($terms as $key => $value) { - if (empty($value) || !in_array($key, $desiredKeys)) { - unset($terms[$key]); - } - } - } - return $terms; } -} \ No newline at end of file +} diff --git a/module/VuFind/src/VuFind/Recommend/Factory.php b/module/VuFind/src/VuFind/Recommend/Factory.php index 6f3d9bb934e..f3ec771b4e3 100644 --- a/module/VuFind/src/VuFind/Recommend/Factory.php +++ b/module/VuFind/src/VuFind/Recommend/Factory.php @@ -335,18 +335,4 @@ class Factory $sm->getServiceLocator()->get('VuFind\WorldCatUtils') ); } - - /** - * Factory for WorldCatTerms module. - * - * @param ServiceManager $sm Service manager. - * - * @return WorldCatTerms - */ - public static function getWorldCatTerms(ServiceManager $sm) - { - return new WorldCatTerms( - $sm->getServiceLocator()->get('VuFind\WorldCatUtils') - ); - } } \ No newline at end of file diff --git a/module/VuFind/tests/fixtures/worldcat/terms b/module/VuFind/tests/fixtures/worldcat/terms deleted file mode 100644 index 252638e28d89501f5e213fc5e231d588e2fabf50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4598 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 Tk1Bx2FA2~NhOl`j0O0=scPGei diff --git a/module/VuFind/tests/unit-tests/src/VuFindTest/Connection/WorldCatUtilsTest.php b/module/VuFind/tests/unit-tests/src/VuFindTest/Connection/WorldCatUtilsTest.php index c078496d75f..42979533887 100644 --- a/module/VuFind/tests/unit-tests/src/VuFindTest/Connection/WorldCatUtilsTest.php +++ b/module/VuFind/tests/unit-tests/src/VuFindTest/Connection/WorldCatUtilsTest.php @@ -111,21 +111,6 @@ class WorldCatUtilsTest extends \PHPUnit_Framework_TestCase $this->assertFalse($client->getRelatedIdentities('')); } - /** - * Test related terminology - * - * @return void - */ - public function testGetRelatedTerms() - { - $client = $this->getClient('terms'); - $terms = $client->getRelatedTerms('hogs'); - $this->assertEquals(4, count($terms['exact'])); - $this->assertEquals(7, count($terms['broader'])); - $this->assertEquals(4, count($terms['narrower'])); - $this->assertTrue(in_array('Construction workers', $terms['broader'])); - } - /** * Load WorldCatUtils client w/ fixture * diff --git a/module/VuFind/tests/unit-tests/src/VuFindTest/Recommend/WorldCatTermsTest.php b/module/VuFind/tests/unit-tests/src/VuFindTest/Recommend/WorldCatTermsTest.php deleted file mode 100644 index f59ef4829fb..00000000000 --- a/module/VuFind/tests/unit-tests/src/VuFindTest/Recommend/WorldCatTermsTest.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/** - * WorldCatTerms recommendation module Test Class - * - * PHP version 5 - * - * Copyright (C) Villanova University 2010. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * @category VuFind2 - * @package Tests - * @author Demian Katz <demian.katz@villanova.edu> - * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License - * @link http://vufind.org/wiki/vufind2:unit_tests Wiki - */ -namespace VuFindTest\Recommend; -use VuFind\Recommend\WorldCatTerms; - -/** - * WorldCatTerms recommendation module Test Class - * - * @category VuFind2 - * @package Tests - * @author Demian Katz <demian.katz@villanova.edu> - * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License - * @link http://vufind.org/wiki/vufind2:unit_tests Wiki - */ -class WorldCatTermsTest extends \VuFindTest\Unit\TestCase -{ - /** - * Test normal operation of the module. - * - * @return void - */ - public function testNormalOperation() - { - $terms = [ - 'exact' => 'exact', 'junk' => 'junk' - ]; - $wcu = $this->getMockWorldCatUtils(); - $wcu->expects($this->once())->method('getRelatedTerms') - ->with($this->equalTo('foo'), $this->equalTo('lcsh')) - ->will($this->returnValue($terms)); - $results = $this->getMockResults(); - $request = new \Zend\StdLib\Parameters([]); - $module = new WorldCatTerms($wcu); - $module->setConfig(''); - $module->init($results->getParams(), $request); - $module->process($results); - $this->assertEquals(['exact' => 'exact'], $module->getTerms()); - } - - /** - * Get a mock WorldCatUtils object. - * - * @return \VuFind\Connection\WorldCatUtils - */ - protected function getMockWorldCatUtils() - { - return $this->getMockBuilder('VuFind\Connection\WorldCatUtils') - ->disableOriginalConstructor()->getMock(); - } - - /** - * Get a mock results object. - * - * @return \VuFind\Search\Solr\Results - */ - protected function getMockResults() - { - $query = new \VuFindSearch\Query\Query('foo', 'bar'); - $params = $this->getMockBuilder('VuFind\Search\Solr\Params') - ->disableOriginalConstructor()->getMock(); - $params->expects($this->any())->method('getQuery') - ->will($this->returnValue($query)); - $results = $this->getMockBuilder('VuFind\Search\Solr\Results') - ->disableOriginalConstructor()->getMock(); - $results->expects($this->any())->method('getParams') - ->will($this->returnValue($params)); - return $results; - } -} \ No newline at end of file diff --git a/themes/bootstrap3/templates/Recommend/Deprecated.phtml b/themes/bootstrap3/templates/Recommend/Deprecated.phtml new file mode 100644 index 00000000000..63445d34f9c --- /dev/null +++ b/themes/bootstrap3/templates/Recommend/Deprecated.phtml @@ -0,0 +1,2 @@ +<? /* do nothing -- this module is a placeholder for old deprecated features + to prevent legacy configurations from causing fatal errors. */ ?> \ No newline at end of file diff --git a/themes/bootstrap3/templates/Recommend/WorldCatTerms.phtml b/themes/bootstrap3/templates/Recommend/WorldCatTerms.phtml deleted file mode 100644 index ed9c6bbfc0f..00000000000 --- a/themes/bootstrap3/templates/Recommend/WorldCatTerms.phtml +++ /dev/null @@ -1,21 +0,0 @@ -<? $worldCatTerms = $this->recommend->getTerms(); if (!empty($worldCatTerms)): ?> -<h4><?=$this->transEsc('Subject Recommendations')?></h4> -<div class="row"> - <? $i = 0; foreach ($worldCatTerms as $type => $section): ?> - <? $moreClass = 'WCTerms'.$this->escapeHtml($type).' hidden'; ?> - <div class="col-sm-<?=floor(12/count($worldCatTerms)) ?>"> - <dl> - <dt><?=$this->transEsc('wcterms_' . $type)?></dt> - <? $j = 0; foreach ($section as $subj): ?> - <? if (++$j == 4): ?> - <dd id="moreWCTerms<?=$this->escapeHtml($type)?>"><a href="#" onclick="moreFacets('WCTerms<?=$this->escapeHtml($type)?>'); return false;"><?=$this->transEsc('more')?> ...</a></dd> - <? endif; ?> - <dd<? if($j >= 4): ?> class="<?=$moreClass ?>"<? endif ?>>• <a href="<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($subj)?>%22&type=Subject"><?=$this->escapeHtml($subj)?></a></dd> - <? endforeach; ?> - <? if ($j > 3): ?><dd class="<?=$moreClass ?>"><a href="#" onclick="lessFacets('WCTerms<?=$this->escapeHtml($type)?>'); return false;"><?=$this->transEsc('less')?> ...</a></dd><? endif; ?> - </dl> - </div> - <? endforeach; ?> - <div class="clearfix"></div> -</div> -<? endif; ?> diff --git a/themes/jquerymobile/templates/Recommend/Deprecated.phtml b/themes/jquerymobile/templates/Recommend/Deprecated.phtml new file mode 100644 index 00000000000..63445d34f9c --- /dev/null +++ b/themes/jquerymobile/templates/Recommend/Deprecated.phtml @@ -0,0 +1,2 @@ +<? /* do nothing -- this module is a placeholder for old deprecated features + to prevent legacy configurations from causing fatal errors. */ ?> \ No newline at end of file diff --git a/themes/jquerymobile/templates/Recommend/WorldCatTerms.phtml b/themes/jquerymobile/templates/Recommend/WorldCatTerms.phtml deleted file mode 100644 index 0df1e74df18..00000000000 --- a/themes/jquerymobile/templates/Recommend/WorldCatTerms.phtml +++ /dev/null @@ -1 +0,0 @@ -<? /* Not supported in mobile theme. */ ?> \ No newline at end of file -- GitLab