From dfd810fae99669b302fabea413e688129406ef7c Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Thu, 11 Jun 2015 09:29:39 -0400
Subject: [PATCH] Fixed RSS feed for course reserves.

---
 .../VuFind/Controller/SearchController.php    | 20 ++++++++----
 .../VuFind/View/Helper/Root/ResultFeed.php    | 31 ++++++++++++++++---
 2 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/module/VuFind/src/VuFind/Controller/SearchController.php b/module/VuFind/src/VuFind/Controller/SearchController.php
index 42b8f374b47..e0181673575 100644
--- a/module/VuFind/src/VuFind/Controller/SearchController.php
+++ b/module/VuFind/src/VuFind/Controller/SearchController.php
@@ -462,6 +462,10 @@ class SearchController extends AbstractSearch
         // Don't save to history -- history page doesn't handle correctly:
         $this->saveToHistory = false;
 
+        // Set up RSS feed title just in case:
+        $this->getViewRenderer()->plugin('resultfeed')
+            ->setOverrideTitle('Reserves Search Results');
+
         // Call rather than forward, so we can use custom template
         $view = $this->resultsAction();
 
@@ -473,12 +477,16 @@ class SearchController extends AbstractSearch
             $view->course = $result[0]['course'];
         }
 
-        // Customize the URL helper to make sure it builds proper reserves URLs:
-        $url = $view->results->getUrlQuery();
-        $url->setDefaultParameter('course', $course);
-        $url->setDefaultParameter('inst', $inst);
-        $url->setDefaultParameter('dept', $dept);
-        $url->setSuppressQuery(true);
+        // Customize the URL helper to make sure it builds proper reserves URLs
+        // (but only do this if we have access to a results object, which we
+        // won't in RSS mode):
+        if (isset($view->results)) {
+            $url = $view->results->getUrlQuery();
+            $url->setDefaultParameter('course', $course);
+            $url->setDefaultParameter('inst', $inst);
+            $url->setDefaultParameter('dept', $dept);
+            $url->setSuppressQuery(true);
+        }
         return $view;
     }
 
diff --git a/module/VuFind/src/VuFind/View/Helper/Root/ResultFeed.php b/module/VuFind/src/VuFind/View/Helper/Root/ResultFeed.php
index 922798c80d1..b2978567786 100644
--- a/module/VuFind/src/VuFind/View/Helper/Root/ResultFeed.php
+++ b/module/VuFind/src/VuFind/View/Helper/Root/ResultFeed.php
@@ -45,6 +45,25 @@ class ResultFeed extends AbstractHelper implements TranslatorAwareInterface
 {
     use \VuFind\I18n\Translator\TranslatorAwareTrait;
 
+    /**
+     * Override title
+     *
+     * @var string
+     */
+    protected $overrideTitle = null;
+
+    /**
+     * Set override title.
+     *
+     * @param string $title Title
+     *
+     * @return void
+     */
+    public function setOverrideTitle($title)
+    {
+        $this->overrideTitle = $title;
+    }
+
     /**
      * Set up Dublin Core extension.
      *
@@ -93,10 +112,14 @@ class ResultFeed extends AbstractHelper implements TranslatorAwareInterface
 
         // Create the parent feed
         $feed = new Feed();
-        $feed->setTitle(
-            $this->translate('Results for') . ' '
-            . $results->getParams()->getDisplayQuery()
-        );
+        if (null !== $this->overrideTitle) {
+            $feed->setTitle($this->translate($this->overrideTitle));
+        } else {
+            $feed->setTitle(
+                $this->translate('Results for') . ' '
+                . $results->getParams()->getDisplayQuery()
+            );
+        }
         $feed->setLink(
             $baseUrl . $results->getUrlQuery()->setViewParam(null, false)
         );
-- 
GitLab