Skip to content
5 changes: 4 additions & 1 deletion administrator/modules/mod_menu/src/Dispatcher/Dispatcher.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
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;

// phpcs:disable PSR1.Files.SideEffects
Expand All @@ -33,11 +35,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;

Expand Down
26 changes: 22 additions & 4 deletions administrator/modules/mod_menu/src/Menu/CssMenu.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,15 @@
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;
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;

Expand All @@ -30,8 +34,10 @@
*
* @since 1.5
*/
class CssMenu
class CssMenu implements DatabaseAwareInterface
{
use DatabaseAwareTrait;

/**
* The root of the menu
*
Expand Down Expand Up @@ -89,12 +95,24 @@ 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 = null)
{
if ($db === null) {
@trigger_error(
__CLASS__ . ': The $db parameter must be set for the constructor.',
\E_USER_DEPRECATED
);

$db = Factory::getContainer()->get(DatabaseInterface::class);
}

$this->setDatabase($db);

$this->application = $application;
$this->root = new AdministratorMenuItem();
}
Expand Down Expand Up @@ -230,7 +248,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]);
Expand Down
Loading