Skip to content

Commit d19e161

Browse files
joomlawebyrichard67laoneo
authored
[5.3] Convert administrator mod_feed to service provider (#44819)
* Convert administrator mod_feed to service provider * years in dokblocks fixed * JFeedReader changed to Feed in docblocks * injected FeedFactory --------- Co-authored-by: Richard Fath <[email protected]> Co-authored-by: Allon Moritz <[email protected]>
1 parent ef3ad37 commit d19e161

File tree

5 files changed

+116
-22
lines changed

5 files changed

+116
-22
lines changed

administrator/modules/mod_feed/mod_feed.php

Lines changed: 0 additions & 17 deletions
This file was deleted.

administrator/modules/mod_feed/mod_feed.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<description>MOD_FEED_XML_DESCRIPTION</description>
1212
<namespace path="src">Joomla\Module\Feed</namespace>
1313
<files>
14-
<filename module="mod_feed">mod_feed.php</filename>
14+
<folder module="mod_feed">services</folder>
1515
<folder>src</folder>
1616
<folder>tmpl</folder>
1717
</files>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
/**
4+
* @package Joomla.Administrator
5+
* @subpackage mod_feed
6+
*
7+
* @copyright (C) 2025 Open Source Matters, Inc. <https://www.joomla.org>
8+
* @license GNU General Public License version 2 or later; see LICENSE.txt
9+
*/
10+
11+
\defined('_JEXEC') or die;
12+
13+
use Joomla\CMS\Extension\Service\Provider\HelperFactory;
14+
use Joomla\CMS\Extension\Service\Provider\Module;
15+
use Joomla\CMS\Extension\Service\Provider\ModuleDispatcherFactory;
16+
use Joomla\DI\Container;
17+
use Joomla\DI\ServiceProviderInterface;
18+
19+
/**
20+
* The feed module service provider.
21+
*
22+
* @since __DEPLOY_VERSION__
23+
*/
24+
return new class () implements ServiceProviderInterface {
25+
/**
26+
* Registers the service provider with a DI container.
27+
*
28+
* @param Container $container The DI container.
29+
*
30+
* @return void
31+
*
32+
* @since __DEPLOY_VERSION__
33+
*/
34+
public function register(Container $container)
35+
{
36+
$container->registerServiceProvider(new ModuleDispatcherFactory('\\Joomla\\Module\\Feed'));
37+
$container->registerServiceProvider(new HelperFactory('\\Joomla\\Module\\Feed\\Administrator\\Helper'));
38+
39+
$container->registerServiceProvider(new Module());
40+
}
41+
};
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
/**
4+
* @package Joomla.Administrator
5+
* @subpackage mod_feed
6+
*
7+
* @copyright (C) 2025 Open Source Matters, Inc. <https://www.joomla.org>
8+
* @license GNU General Public License version 2 or later; see LICENSE.txt
9+
*/
10+
11+
namespace Joomla\Module\Feed\Administrator\Dispatcher;
12+
13+
use Joomla\CMS\Dispatcher\AbstractModuleDispatcher;
14+
use Joomla\CMS\Feed\FeedFactory;
15+
use Joomla\CMS\Helper\HelperFactoryAwareInterface;
16+
use Joomla\CMS\Helper\HelperFactoryAwareTrait;
17+
18+
// phpcs:disable PSR1.Files.SideEffects
19+
\defined('_JEXEC') or die;
20+
// phpcs:enable PSR1.Files.SideEffects
21+
22+
/**
23+
* Dispatcher class for mod_feed
24+
*
25+
* @since __DEPLOY_VERSION__
26+
*/
27+
class Dispatcher extends AbstractModuleDispatcher implements HelperFactoryAwareInterface
28+
{
29+
use HelperFactoryAwareTrait;
30+
31+
/**
32+
* Returns the layout data.
33+
*
34+
* @return array
35+
*
36+
* @since __DEPLOY_VERSION__
37+
*/
38+
protected function getLayoutData()
39+
{
40+
$data = parent::getLayoutData();
41+
$feedFactory = new FeedFactory();
42+
43+
$data['feed'] = $this->getHelperFactory()->getHelper('FeedHelper')->getFeedData($data['params'], $feedFactory);
44+
$data['rssurl'] = $data['params']->get('rssurl', '');
45+
$data['rssrtl'] = $data['params']->get('rssrtl', 0);
46+
47+
return $data;
48+
}
49+
}

administrator/modules/mod_feed/src/Helper/FeedHelper.php

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
use Joomla\CMS\Feed\FeedFactory;
1414
use Joomla\CMS\Language\Text;
15+
use Joomla\Registry\Registry;
1516

1617
// phpcs:disable PSR1.Files.SideEffects
1718
\defined('_JEXEC') or die;
@@ -28,19 +29,19 @@ class FeedHelper
2829
* Method to load a feed.
2930
*
3031
* @param \Joomla\Registry\Registry $params The parameters object.
32+
* @param \Joomla\CMS\Feed\FeedFactory FeedFactory object
3133
*
32-
* @return \Joomla\CMS\Feed\Feed|string Return a JFeedReader object or a string message if error.
34+
* @return \Joomla\CMS\Feed\Feed|string Return a Feed object or a string message if error.
3335
*
34-
* @since 1.5
36+
* @since __DEPLOY_VERSION__
3537
*/
36-
public static function getFeed($params)
38+
public function getFeedData(Registry $params, FeedFactory $feed): \Joomla\CMS\Feed\Feed|string
3739
{
3840
// Module params
3941
$rssurl = $params->get('rssurl', '');
4042

4143
// Get RSS parsed object
4244
try {
43-
$feed = new FeedFactory();
4445
$rssDoc = $feed->getFeed($rssurl);
4546
} catch (\Exception $e) {
4647
return Text::_('MOD_FEED_ERR_FEED_NOT_RETRIEVED');
@@ -52,4 +53,24 @@ public static function getFeed($params)
5253

5354
return $rssDoc;
5455
}
56+
57+
/**
58+
* Method to load a feed.
59+
*
60+
* @param \Joomla\Registry\Registry $params The parameters object.
61+
*
62+
* @return \Joomla\CMS\Feed\Feed|string Return a Feed object or a string message if error.
63+
*
64+
* @since 1.5
65+
*
66+
* @deprecated __DEPLOY_VERSION__ will be removed in 7.0
67+
* Use the non-static method getFeedData
68+
* Example: Factory::getApplication()->bootModule('mod_feed', 'administrator')
69+
* ->getHelper('FeedHelper')
70+
* ->getFeedData($params, new FeedFactory())
71+
*/
72+
public static function getFeed($params)
73+
{
74+
return (new self())->getFeedData($params, new FeedFactory());
75+
}
5576
}

0 commit comments

Comments
 (0)