From 4c17b2e5be1478e4ecb21718280d169ef5e4bf18 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 12 Aug 2025 12:03:32 +0200 Subject: [PATCH 1/6] Use database from container and fix menuType table instantiation --- .../mod_menu/src/Dispatcher/Dispatcher.php | 4 +++- .../modules/mod_menu/src/Menu/CssMenu.php | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php b/administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php index f04dc6454a97..83019347af8c 100644 --- a/administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php +++ b/administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php @@ -11,6 +11,7 @@ namespace Joomla\Module\Menu\Administrator\Dispatcher; use Joomla\CMS\Dispatcher\AbstractModuleDispatcher; +use Joomla\Database\DatabaseInterface; use Joomla\Module\Menu\Administrator\Menu\CssMenu; // phpcs:disable PSR1.Files.SideEffects @@ -33,11 +34,12 @@ class Dispatcher extends AbstractModuleDispatcher */ protected function getLayoutData() { + $db = Factory::getContainer()->get(DatabaseInterface::class); $data = parent::getLayoutData(); $data['enabled'] = !$data['app']->getInput()->getBool('hidemainmenu'); - $data['menu'] = new CssMenu($data['app']); + $data['menu'] = new CssMenu($data['app'], $db); $data['root'] = $data['menu']->load($data['params'], $data['enabled']); $data['root']->level = 0; diff --git a/administrator/modules/mod_menu/src/Menu/CssMenu.php b/administrator/modules/mod_menu/src/Menu/CssMenu.php index 0026469a139c..2ff0f4477492 100644 --- a/administrator/modules/mod_menu/src/Menu/CssMenu.php +++ b/administrator/modules/mod_menu/src/Menu/CssMenu.php @@ -18,6 +18,9 @@ use Joomla\CMS\Menu\AdministratorMenuItem; use Joomla\CMS\Uri\Uri; use Joomla\Component\Menus\Administrator\Helper\MenusHelper; +use Joomla\Database\DatabaseAwareInterface; +use Joomla\Database\DatabaseAwareTrait; +use Joomla\Database\DatabaseInterface; use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; @@ -30,8 +33,10 @@ * * @since 1.5 */ -class CssMenu +class CssMenu implements DatabaseAwareInterface { + use DatabaseAwareTrait; + /** * The root of the menu * @@ -89,12 +94,15 @@ class CssMenu /** * CssMenu constructor. * - * @param CMSApplication $application The application + * @param CMSApplication $application The application + * @param DatabaseInterface $db The database * * @since 4.0.0 */ - public function __construct(CMSApplication $application) + public function __construct(CMSApplication $application, DatabaseInterface $db) { + $this->setDatabase($db) + $this->application = $application; $this->root = new AdministratorMenuItem(); } @@ -230,7 +238,7 @@ protected function check($node, Registry $params) $uri = clone Uri::getInstance(); $uri->setVar('recover_menu', 1); - $table = $this->application->bootComponent('com_menu')->getMVCFactory()->createTable('MenuType'); + $table = new \Joomla\CMS\Table\MenuType($this->getDatabase()); $menutype = $params->get('menutype'); $table->load(['menutype' => $menutype]); From f318f748fd731079e150ec9e44f579b614351b95 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 12 Aug 2025 12:38:18 +0200 Subject: [PATCH 2/6] Fix missing semicolon from my previous commit --- administrator/modules/mod_menu/src/Menu/CssMenu.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/modules/mod_menu/src/Menu/CssMenu.php b/administrator/modules/mod_menu/src/Menu/CssMenu.php index 2ff0f4477492..efb7898b7484 100644 --- a/administrator/modules/mod_menu/src/Menu/CssMenu.php +++ b/administrator/modules/mod_menu/src/Menu/CssMenu.php @@ -101,7 +101,7 @@ class CssMenu implements DatabaseAwareInterface */ public function __construct(CMSApplication $application, DatabaseInterface $db) { - $this->setDatabase($db) + $this->setDatabase($db); $this->application = $application; $this->root = new AdministratorMenuItem(); From bcebe726600a1a04be3b36e09a013c658e03395b Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 12 Aug 2025 13:03:33 +0200 Subject: [PATCH 3/6] Add missing use statement for Factory --- administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php b/administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php index 83019347af8c..c4b955851691 100644 --- a/administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php +++ b/administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php @@ -11,6 +11,7 @@ namespace Joomla\Module\Menu\Administrator\Dispatcher; use Joomla\CMS\Dispatcher\AbstractModuleDispatcher; +use Joomla\CMS\Factory; use Joomla\Database\DatabaseInterface; use Joomla\Module\Menu\Administrator\Menu\CssMenu; From 2702a53bf659222b1e6ed27e0e5c8cd906f55a8d Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 12 Aug 2025 15:14:55 +0200 Subject: [PATCH 4/6] b/c --- .../modules/mod_menu/src/Menu/CssMenu.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/administrator/modules/mod_menu/src/Menu/CssMenu.php b/administrator/modules/mod_menu/src/Menu/CssMenu.php index efb7898b7484..a36ad575a592 100644 --- a/administrator/modules/mod_menu/src/Menu/CssMenu.php +++ b/administrator/modules/mod_menu/src/Menu/CssMenu.php @@ -94,13 +94,22 @@ class CssMenu implements DatabaseAwareInterface /** * CssMenu constructor. * - * @param CMSApplication $application The application - * @param DatabaseInterface $db The database + * @param CMSApplication $application The application + * @param ?DatabaseInterface $db The database * * @since 4.0.0 */ - public function __construct(CMSApplication $application, DatabaseInterface $db) + public function __construct(CMSApplication $application, ?DatabaseInterface $db = null) { + if ($db === null) { + @trigger_error( + __CLASS__ . ': The $db parameter must be set for the contructor.', + \E_USER_DEPRECATED + ); + + $db = Factory::getContainer()->get(DatabaseInterface::class); + } + $this->setDatabase($db); $this->application = $application; From e353675c917892406d1766e4c80d3112a9f4288d Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 12 Aug 2025 15:17:02 +0200 Subject: [PATCH 5/6] Fix typo in error message --- administrator/modules/mod_menu/src/Menu/CssMenu.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/modules/mod_menu/src/Menu/CssMenu.php b/administrator/modules/mod_menu/src/Menu/CssMenu.php index a36ad575a592..6632aa5e30f1 100644 --- a/administrator/modules/mod_menu/src/Menu/CssMenu.php +++ b/administrator/modules/mod_menu/src/Menu/CssMenu.php @@ -103,7 +103,7 @@ public function __construct(CMSApplication $application, ?DatabaseInterface $db { if ($db === null) { @trigger_error( - __CLASS__ . ': The $db parameter must be set for the contructor.', + __CLASS__ . ': The $db parameter must be set for the constructor.', \E_USER_DEPRECATED ); From f97b56525eae17a739cef4e7d12a96390d199b7f Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Tue, 12 Aug 2025 15:23:10 +0200 Subject: [PATCH 6/6] Add missing use statement here, too --- administrator/modules/mod_menu/src/Menu/CssMenu.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/modules/mod_menu/src/Menu/CssMenu.php b/administrator/modules/mod_menu/src/Menu/CssMenu.php index 6632aa5e30f1..5554c73a1839 100644 --- a/administrator/modules/mod_menu/src/Menu/CssMenu.php +++ b/administrator/modules/mod_menu/src/Menu/CssMenu.php @@ -13,6 +13,7 @@ use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Event\Menu\PreprocessMenuItemsEvent; +use Joomla\CMS\Factory; use Joomla\CMS\Language\Associations; use Joomla\CMS\Language\Text; use Joomla\CMS\Menu\AdministratorMenuItem;