From f5236ec09c5ca83dbcb848f52dad8742dff724f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D?= Date: Sun, 12 Jun 2022 11:35:27 +0200 Subject: [PATCH] refactor: [WIP] Migrate user settings manager controller. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rubén D --- .../IndexController.php} | 93 +++++++++---------- 1 file changed, 43 insertions(+), 50 deletions(-) rename app/modules/web/Controllers/{UserSettingsManagerController.php => UserSettingsManager/IndexController.php} (63%) diff --git a/app/modules/web/Controllers/UserSettingsManagerController.php b/app/modules/web/Controllers/UserSettingsManager/IndexController.php similarity index 63% rename from app/modules/web/Controllers/UserSettingsManagerController.php rename to app/modules/web/Controllers/UserSettingsManager/IndexController.php index 18c61819..a2a2df14 100644 --- a/app/modules/web/Controllers/UserSettingsManagerController.php +++ b/app/modules/web/Controllers/UserSettingsManager/IndexController.php @@ -4,7 +4,7 @@ * * @author nuxsmin * @link https://syspass.org - * @copyright 2012-2021, Rubén Domínguez nuxsmin@$syspass.org + * @copyright 2012-2022, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. * @@ -22,36 +22,44 @@ * along with sysPass. If not, see . */ -namespace SP\Modules\Web\Controllers; +namespace SP\Modules\Web\Controllers\UserSettingsManager; -use DI\DependencyException; -use DI\NotFoundException; use SP\Core\Acl\Acl; use SP\Core\Acl\ActionsInterface; +use SP\Core\Application; use SP\Core\Events\Event; use SP\Core\Events\EventDispatcherInterface; -use SP\Core\Exceptions\SessionTimeout; use SP\Core\Language; -use SP\Domain\Auth\Services\AuthException; +use SP\DataModel\UserPreferencesData; +use SP\Modules\Web\Controllers\ControllerBase; use SP\Modules\Web\Controllers\Helpers\TabsHelper; use SP\Mvc\Controller\ExtensibleTabControllerInterface; +use SP\Mvc\Controller\WebControllerHelper; use SP\Mvc\View\Components\DataTab; use SP\Mvc\View\Components\SelectItemAdapter; use SP\Mvc\View\TemplateInterface; /** - * Class UserSettingsManagerController + * Class IndexController * * @package web\Controllers */ -final class UserSettingsManagerController extends ControllerBase implements ExtensibleTabControllerInterface +final class IndexController extends ControllerBase implements ExtensibleTabControllerInterface { - protected ?TabsHelper $tabsHelper = null; + private TabsHelper $tabsHelper; + + public function __construct( + Application $application, + WebControllerHelper $webControllerHelper, + TabsHelper $tabsHelper + ) { + parent::__construct($application, $webControllerHelper); + + $this->checkLoggedIn(); + + $this->tabsHelper = $tabsHelper; + } - /** - * @throws DependencyException - * @throws NotFoundException - */ public function indexAction(): void { $this->getTabs(); @@ -59,20 +67,12 @@ final class UserSettingsManagerController extends ControllerBase implements Exte /** * Returns a tabbed grid with items - * - * @throws DependencyException - * @throws NotFoundException */ protected function getTabs(): void { - $this->tabsHelper = $this->dic->get(TabsHelper::class); - $this->tabsHelper->addTab($this->getUserPreferences()); - $this->eventDispatcher->notifyEvent( - 'show.userSettings', - new Event($this) - ); + $this->eventDispatcher->notifyEvent('show.userSettings', new Event($this)); $this->tabsHelper->renderTabs( Acl::getActionRoute(ActionsInterface::USERSETTINGS), @@ -82,6 +82,14 @@ final class UserSettingsManagerController extends ControllerBase implements Exte $this->view(); } + /** + * @param DataTab $tab + */ + public function addTab(DataTab $tab): void + { + $this->tabsHelper->addTab($tab); + } + /** * @return DataTab */ @@ -92,17 +100,21 @@ final class UserSettingsManagerController extends ControllerBase implements Exte $template->addTemplate('general'); $userData = $this->session->getUserData(); - $userPreferences = $userData->getPreferences(); + $userPreferences = $userData->getPreferences() ?? new UserPreferencesData(); - $template->assign('langs', - SelectItemAdapter::factory( - Language::getAvailableLanguages() - )->getItemsFromArraySelected([$userPreferences->getLang() ?: $this->configData->getSiteLang()]) + $template->assign( + 'langs', + SelectItemAdapter::factory(Language::getAvailableLanguages()) + ->getItemsFromArraySelected( + [$userPreferences->getLang() ?: $this->configData->getSiteLang()] + ) ); - $template->assign('themes', - SelectItemAdapter::factory( - $this->theme->getThemesAvailable() - )->getItemsFromArraySelected([$userPreferences->getTheme() ?: $this->configData->getSiteTheme()]) + $template->assign( + 'themes', + SelectItemAdapter::factory($this->theme->getThemesAvailable()) + ->getItemsFromArraySelected( + [$userPreferences->getTheme() ?: $this->configData->getSiteTheme()] + ) ); $template->assign('userPreferences', $userPreferences); $template->assign('route', 'userSettingsGeneral/save'); @@ -110,14 +122,6 @@ final class UserSettingsManagerController extends ControllerBase implements Exte return new DataTab(__('Preferences'), $template); } - /** - * @param DataTab $tab - */ - public function addTab(DataTab $tab): void - { - $this->tabsHelper->addTab($tab); - } - /** * @return TemplateInterface */ @@ -141,15 +145,4 @@ final class UserSettingsManagerController extends ControllerBase implements Exte { return $this->eventDispatcher; } - - /** - * @throws DependencyException - * @throws NotFoundException - * @throws SessionTimeout - * @throws AuthException - */ - protected function initialize(): void - { - $this->checkLoggedIn(); - } } \ No newline at end of file