Skip to content
Snippets Groups Projects
Commit e9f8aa8f authored by Demian Katz's avatar Demian Katz Committed by GitHub
Browse files

Fix ServiceManager v3 compatibility of ResultFeed plugin. (#1072)

- Adjust service names for forward-compatibility
- Move initialization to factory to avoid redundant work
parent fa578382
No related merge requests found
...@@ -446,6 +446,20 @@ class Factory ...@@ -446,6 +446,20 @@ class Factory
); );
} }
/**
* Construct the ResultFeed helper.
*
* @param ServiceManager $sm Service manager.
*
* @return ResultFeed
*/
public static function getResultFeed(ServiceManager $sm)
{
$helper = new ResultFeed();
$helper->registerExtensions($sm);
return $helper;
}
/** /**
* Construct the SafeMoneyFormat helper. * Construct the SafeMoneyFormat helper.
* *
......
...@@ -31,6 +31,7 @@ use DateTime; ...@@ -31,6 +31,7 @@ use DateTime;
use VuFind\I18n\Translator\TranslatorAwareInterface; use VuFind\I18n\Translator\TranslatorAwareInterface;
use Zend\Feed\Writer\Feed; use Zend\Feed\Writer\Feed;
use Zend\Feed\Writer\Writer as FeedWriter; use Zend\Feed\Writer\Writer as FeedWriter;
use Zend\ServiceManager\ServiceManager;
use Zend\View\Helper\AbstractHelper; use Zend\View\Helper\AbstractHelper;
/** /**
...@@ -66,26 +67,28 @@ class ResultFeed extends AbstractHelper implements TranslatorAwareInterface ...@@ -66,26 +67,28 @@ class ResultFeed extends AbstractHelper implements TranslatorAwareInterface
} }
/** /**
* Set up custom extensions. * Set up custom extensions (should be called by factory).
*
* @param ServiceManager $sm Service manager.
* *
* @return void * @return void
*/ */
protected function registerExtensions() public function registerExtensions(ServiceManager $sm)
{ {
$manager = new \Zend\Feed\Writer\ExtensionPluginManager(); $manager = new \Zend\Feed\Writer\ExtensionPluginManager($sm);
$manager->setInvokableClass( $manager->setInvokableClass(
'dublincorerendererentry', 'DublinCore\Renderer\Entry',
'VuFind\Feed\Writer\Extension\DublinCore\Renderer\Entry' 'VuFind\Feed\Writer\Extension\DublinCore\Renderer\Entry'
); );
$manager->setInvokableClass( $manager->setInvokableClass(
'dublincoreentry', 'VuFind\Feed\Writer\Extension\DublinCore\Entry' 'DublinCore\Entry', 'VuFind\Feed\Writer\Extension\DublinCore\Entry'
); );
$manager->setInvokableClass( $manager->setInvokableClass(
'opensearchrendererfeed', 'OpenSearch\Renderer\Feed',
'VuFind\Feed\Writer\Extension\OpenSearch\Renderer\Feed' 'VuFind\Feed\Writer\Extension\OpenSearch\Renderer\Feed'
); );
$manager->setInvokableClass( $manager->setInvokableClass(
'opensearchfeed', 'VuFind\Feed\Writer\Extension\OpenSearch\Feed' 'OpenSearch\Feed', 'VuFind\Feed\Writer\Extension\OpenSearch\Feed'
); );
FeedWriter::setExtensionManager($manager); FeedWriter::setExtensionManager($manager);
FeedWriter::registerExtension('OpenSearch'); FeedWriter::registerExtension('OpenSearch');
...@@ -103,8 +106,6 @@ class ResultFeed extends AbstractHelper implements TranslatorAwareInterface ...@@ -103,8 +106,6 @@ class ResultFeed extends AbstractHelper implements TranslatorAwareInterface
*/ */
public function __invoke($results, $currentPath = null) public function __invoke($results, $currentPath = null)
{ {
$this->registerExtensions();
// Determine base URL if not already provided: // Determine base URL if not already provided:
if (is_null($currentPath)) { if (is_null($currentPath)) {
$currentPath = $this->getView()->plugin('currentpath')->__invoke(); $currentPath = $this->getView()->plugin('currentpath')->__invoke();
......
...@@ -123,6 +123,7 @@ class ResultFeedTest extends \VuFindTest\Unit\ViewHelperTestCase ...@@ -123,6 +123,7 @@ class ResultFeedTest extends \VuFindTest\Unit\ViewHelperTestCase
$results->getParams()->initFromRequest($request); $results->getParams()->initFromRequest($request);
$helper = new ResultFeed(); $helper = new ResultFeed();
$helper->registerExtensions($this->getServiceManager());
$helper->setTranslator($this->getMockTranslator()); $helper->setTranslator($this->getMockTranslator());
$helper->setView($this->getPhpRenderer($this->getPlugins())); $helper->setView($this->getPhpRenderer($this->getPlugins()));
$feed = $helper->__invoke($results, '/test/path'); $feed = $helper->__invoke($results, '/test/path');
......
...@@ -31,6 +31,7 @@ return [ ...@@ -31,6 +31,7 @@ return [
'recordDataFormatter' => 'VuFind\View\Helper\Root\RecordDataFormatterFactory', 'recordDataFormatter' => 'VuFind\View\Helper\Root\RecordDataFormatterFactory',
'recordLink' => 'VuFind\View\Helper\Root\Factory::getRecordLink', 'recordLink' => 'VuFind\View\Helper\Root\Factory::getRecordLink',
'related' => 'VuFind\View\Helper\Root\Factory::getRelated', 'related' => 'VuFind\View\Helper\Root\Factory::getRelated',
'resultfeed' => 'VuFind\View\Helper\Root\Factory::getResultFeed',
'safeMoneyFormat' => 'VuFind\View\Helper\Root\Factory::getSafeMoneyFormat', 'safeMoneyFormat' => 'VuFind\View\Helper\Root\Factory::getSafeMoneyFormat',
'searchbox' => 'VuFind\View\Helper\Root\Factory::getSearchBox', 'searchbox' => 'VuFind\View\Helper\Root\Factory::getSearchBox',
'searchMemory' => 'VuFind\View\Helper\Root\Factory::getSearchMemory', 'searchMemory' => 'VuFind\View\Helper\Root\Factory::getSearchMemory',
...@@ -53,7 +54,6 @@ return [ ...@@ -53,7 +54,6 @@ return [
'printms' => 'VuFind\View\Helper\Root\Printms', 'printms' => 'VuFind\View\Helper\Root\Printms',
'recommend' => 'VuFind\View\Helper\Root\Recommend', 'recommend' => 'VuFind\View\Helper\Root\Recommend',
'renderArray' => 'VuFind\View\Helper\Root\RenderArray', 'renderArray' => 'VuFind\View\Helper\Root\RenderArray',
'resultfeed' => 'VuFind\View\Helper\Root\ResultFeed',
'sortFacetList' => 'VuFind\View\Helper\Root\SortFacetList', 'sortFacetList' => 'VuFind\View\Helper\Root\SortFacetList',
'summon' => 'VuFind\View\Helper\Root\Summon', 'summon' => 'VuFind\View\Helper\Root\Summon',
'transEsc' => 'VuFind\View\Helper\Root\TransEsc', 'transEsc' => 'VuFind\View\Helper\Root\TransEsc',
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment