From b490ef5c8bbc3a1e6c72fae0a8a3cdb162f825d7 Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Wed, 8 Mar 2017 12:19:38 -0500
Subject: [PATCH] Fixed broken Europeana module.

---
 config/vufind/searches.ini                    |  22 +++++++++++-------
 .../src/VuFind/Recommend/EuropeanaResults.php |   6 ++---
 themes/root/images/europeana.eu.png           | Bin 0 -> 6397 bytes
 3 files changed, 16 insertions(+), 12 deletions(-)
 create mode 100644 themes/root/images/europeana.eu.png

diff --git a/config/vufind/searches.ini b/config/vufind/searches.ini
index 240ef2049f9..f00e92a5ca6 100644
--- a/config/vufind/searches.ini
+++ b/config/vufind/searches.ini
@@ -198,15 +198,19 @@ CallNumber = callnumber-sort
 ;       Display results from the DPLA catalog. Provide a boolean to have the sidebar
 ;       collapsed or open on page load.
 ; EuropeanaResults:[url]:[requestParam]:[limit]:[unwanted data providers]
-;       Display search results from Europeana.eu API. [url] is the base search URL
-;       default "api.europeana.eu/api/opensearch.rss" [requestParam] parameter name
-;       for passing lookup value in url, default is "searchTerms" [limit] defaults to
-;       5, is the number of result items to display [unwanted data providers] comma
-;       separated list of dataproviders to ignore results from; useful for excluding
-;       own results that are also in Europeana. An API key must be set in config.ini
-;       (see europeanaAPI setting in [Content] section).
-; EuropeanaResultsDeferred: [url]:[requestParam]:[limit]:[unwanted data providers]
-;       See EuropeanaResults, but this version uses AJAX.
+;       Display search results from Europeana.eu API.
+;       Parameters (all are optional):
+;         [url] = base search URL, default api.europeana.eu/api/v2/opensearch.rss
+;         [requestParam] = parameter name for passing lookup value in url, default is
+;             "searchTerms"
+;         [limit] = the number of result items to display (defaults to 5)
+;         [unwanted data providers] = comma separated list of dataproviders to ignore
+;             results from; useful for excluding your own results that are also in
+;             Europeana.
+;       An API key must be set in config.ini (see europeanaAPI setting in [Content]
+;       section).
+; EuropeanaResultsDeferred:[url]:[requestParam]:[limit]:[unwanted data providers]
+;       See EuropeanaResults, but this version uses AJAX for asynchronous loading.
 ; ExpandFacets:[ini section]:[ini name]
 ;       Display facets listed in the specified section of the specified ini file;
 ;       if [ini name] is left out, it defaults to "facets."  Rather than using
diff --git a/module/VuFind/src/VuFind/Recommend/EuropeanaResults.php b/module/VuFind/src/VuFind/Recommend/EuropeanaResults.php
index 641ff46784b..c906684f38e 100644
--- a/module/VuFind/src/VuFind/Recommend/EuropeanaResults.php
+++ b/module/VuFind/src/VuFind/Recommend/EuropeanaResults.php
@@ -32,7 +32,7 @@ use Zend\Feed\Reader\Reader as FeedReader;
 /**
  * EuropeanaResults Recommendations Module
  *
- * This class provides recommendations by using the WorldCat Terminologies API.
+ * This class provides recommendations by using the Europeana API.
  *
  * @category VuFind
  * @package  Recommendations
@@ -139,7 +139,7 @@ class EuropeanaResults implements RecommendInterface,
         // Parse out parameters:
         $params = explode(':', $settings);
         $this->baseUrl = (isset($params[0]) && !empty($params[0]))
-            ? $params[0] : 'api.europeana.eu/api/opensearch.rss';
+            ? $params[0] : 'api.europeana.eu/api/v2/opensearch.rss';
         $this->requestParam = (isset($params[1]) && !empty($params[1]))
             ? $params[1] : 'searchTerms';
         $this->limit = isset($params[2]) && is_numeric($params[2])
@@ -231,7 +231,7 @@ class EuropeanaResults implements RecommendInterface,
             if (!empty($link)) {
                 $resultsProcessed[] = [
                     'title' => $value->getTitle(),
-                    'link' => substr($link, 0, strpos($link, '.srw')) . '.html',
+                    'link' => $link,
                     'enclosure' => $value->getEnclosure()['url']
                 ];
             }
diff --git a/themes/root/images/europeana.eu.png b/themes/root/images/europeana.eu.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e09113d028a16592e52667c2882d492fb5b98a1
GIT binary patch
literal 6397
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
LNkvXXu0mjfq<2sB

literal 0
HcmV?d00001

-- 
GitLab