From 35ab8a704852fe41ad5a1fa8d7cfcd8596aefd75 Mon Sep 17 00:00:00 2001 From: Tuan Pham Ngoc Date: Thu, 16 Mar 2023 14:45:55 +0700 Subject: [PATCH] Convert mod_weblinks module to use services provider --- src/modules/mod_weblinks/mod_weblinks.php | 24 --------- src/modules/mod_weblinks/mod_weblinks.xml | 1 - .../mod_weblinks/services/provider.php | 41 +++++++++++++++ .../src/Dispatcher/Dispatcher.php | 50 +++++++++++++++++++ .../src/Helper/WeblinksHelper.php | 28 ++++++++--- 5 files changed, 113 insertions(+), 31 deletions(-) delete mode 100644 src/modules/mod_weblinks/mod_weblinks.php create mode 100644 src/modules/mod_weblinks/services/provider.php create mode 100644 src/modules/mod_weblinks/src/Dispatcher/Dispatcher.php diff --git a/src/modules/mod_weblinks/mod_weblinks.php b/src/modules/mod_weblinks/mod_weblinks.php deleted file mode 100644 index 3da3d4a..0000000 --- a/src/modules/mod_weblinks/mod_weblinks.php +++ /dev/null @@ -1,24 +0,0 @@ -get('moduleclass_sfx')); - -require ModuleHelper::getLayoutPath('mod_weblinks', $params->get('layout', 'default')); diff --git a/src/modules/mod_weblinks/mod_weblinks.xml b/src/modules/mod_weblinks/mod_weblinks.xml index e7fe725..9e5077b 100644 --- a/src/modules/mod_weblinks/mod_weblinks.xml +++ b/src/modules/mod_weblinks/mod_weblinks.xml @@ -12,7 +12,6 @@ Joomla\Module\Weblinks ##MODULE_FILES## - mod_weblinks.php ##LANGUAGE_FILES## diff --git a/src/modules/mod_weblinks/services/provider.php b/src/modules/mod_weblinks/services/provider.php new file mode 100644 index 0000000..75815ef --- /dev/null +++ b/src/modules/mod_weblinks/services/provider.php @@ -0,0 +1,41 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\Service\Provider\HelperFactory; +use Joomla\CMS\Extension\Service\Provider\Module; +use Joomla\CMS\Extension\Service\Provider\ModuleDispatcherFactory; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; + +/** + * The weblinks module services provider. + * + * @since __DEPLOY_VERSION__ + */ +return new class () implements ServiceProviderInterface { + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->registerServiceProvider(new ModuleDispatcherFactory('\\Joomla\\Module\\Weblinks')); + $container->registerServiceProvider(new HelperFactory('\\Joomla\\Module\\Weblinks\\Site\\Helper')); + + $container->registerServiceProvider(new Module()); + } +}; diff --git a/src/modules/mod_weblinks/src/Dispatcher/Dispatcher.php b/src/modules/mod_weblinks/src/Dispatcher/Dispatcher.php new file mode 100644 index 0000000..9df4bd2 --- /dev/null +++ b/src/modules/mod_weblinks/src/Dispatcher/Dispatcher.php @@ -0,0 +1,50 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +namespace Joomla\Module\Weblinks\Site\Dispatcher; + +use Joomla\CMS\Dispatcher\AbstractModuleDispatcher; +use Joomla\CMS\Helper\HelperFactoryAwareInterface; +use Joomla\CMS\Helper\HelperFactoryAwareTrait; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +/** + * Dispatcher class for mod_weblinks + * + * @since __DEPLOY_VERSION__ + */ +class Dispatcher extends AbstractModuleDispatcher implements HelperFactoryAwareInterface +{ + use HelperFactoryAwareTrait; + + /** + * Returns the layout data. + * + * @return array + * + * @since __DEPLOY_VERSION__ + */ + protected function getLayoutData() + { + $data = parent::getLayoutData(); + + $data['list'] = $this->getHelperFactory()->getHelper('WeblinksHelper')->getWeblinks( + $data['params'], + $this->getApplication() + ); + + $data['moduleclass_sfx'] = htmlspecialchars($data['params']->get('moduleclass_sfx', '')); + + return $data; + } +} diff --git a/src/modules/mod_weblinks/src/Helper/WeblinksHelper.php b/src/modules/mod_weblinks/src/Helper/WeblinksHelper.php index 4c58f1a..c476ea9 100644 --- a/src/modules/mod_weblinks/src/Helper/WeblinksHelper.php +++ b/src/modules/mod_weblinks/src/Helper/WeblinksHelper.php @@ -29,14 +29,13 @@ class WeblinksHelper * @param Registry $params The module parameters * @param CMSApplicationInterface $app The application * - * @return mixed Null if no weblinks based on input parameters else an array containing all the weblinks. + * @return array Array containing all the weblinks. * - * @since 1.5 + * @since __DEPLOY_VERSION__ **/ - public static function getList($params, $app) + public function getWeblinks($params, $app) { // @var \Joomla\Component\Weblinks\Site\Model\CategoryModel $model - $model = $app->bootComponent('com_weblinks')->getMVCFactory() ->createModel('Category', 'Site', ['ignore_request' => true]); @@ -73,7 +72,7 @@ class WeblinksHelper $case_when1 .= $query->charLength('a.alias', '!=', '0'); $case_when1 .= ' THEN '; $a_id = $query->castAs('CHAR', 'a.id'); - $case_when1 .= $query->concatenate(array($a_id, 'a.alias'), ':'); + $case_when1 .= $query->concatenate([$a_id, 'a.alias'], ':'); $case_when1 .= ' ELSE '; $case_when1 .= $a_id . ' END as slug'; @@ -81,7 +80,7 @@ class WeblinksHelper $case_when2 .= $query->charLength('c.alias', '!=', '0'); $case_when2 .= ' THEN '; $c_id = $query->castAs('CHAR', 'c.id'); - $case_when2 .= $query->concatenate(array($c_id, 'c.alias'), ':'); + $case_when2 .= $query->concatenate([$c_id, 'c.alias'], ':'); $case_when2 .= ' ELSE '; $case_when2 .= $c_id . ' END as catslug'; @@ -120,4 +119,21 @@ class WeblinksHelper return []; } + + /** + * Retrieve list of weblinks + * + * @param Registry $params The module parameters + * @param CMSApplicationInterface $app The application + * + * @return mixed Null if no weblinks based on input parameters else an array containing all the weblinks. + * + * @since 1.5 + * + * @deprecated 5.0 Use the none static function getWeblinks + **/ + public static function getList($params, $app) + { + return (new self())->getWeblinks($params, $app); + } }