diff --git a/app/services_controllers.php b/app/services_controllers.php index b5a6f44e87..be43d90aee 100644 --- a/app/services_controllers.php +++ b/app/services_controllers.php @@ -52,68 +52,54 @@ return [ 'class' => BrowseForeignersController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$browseForeigners' => '@browse_foreigners', '$relation' => '@relation', ], ], ChangeLogController::class => [ 'class' => ChangeLogController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$config' => '@config'], + 'arguments' => ['$response' => '@response', '$config' => '@config'], ], CheckRelationsController::class => [ 'class' => CheckRelationsController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$relation' => '@relation'], + 'arguments' => ['$response' => '@response', '$relation' => '@relation'], ], CollationConnectionController::class => [ 'class' => CollationConnectionController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$config' => '@config'], + 'arguments' => ['$response' => '@response', '$config' => '@config'], ], ColumnController::class => [ 'class' => ColumnController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], UpdateNavWidthConfigController::class => [ 'class' => UpdateNavWidthConfigController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$config' => '@config'], + 'arguments' => ['$response' => '@response', '$config' => '@config'], ], Console\Bookmark\AddController::class => [ 'class' => Console\Bookmark\AddController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$bookmarkRepository' => '@bookmarkRepository', - ], + 'arguments' => ['$response' => '@response', '$bookmarkRepository' => '@bookmarkRepository'], ], Console\Bookmark\RefreshController::class => [ 'class' => Console\Bookmark\RefreshController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$console' => '@console'], + 'arguments' => ['$response' => '@response', '$console' => '@console'], ], Console\UpdateConfigController::class => [ 'class' => Console\UpdateConfigController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$config' => '@config'], + 'arguments' => ['$response' => '@response', '$config' => '@config'], ], Database\CentralColumns\PopulateColumnsController::class => [ 'class' => Database\CentralColumns\PopulateColumnsController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$centralColumns' => '@central_columns', - ], + 'arguments' => ['$response' => '@response', '$centralColumns' => '@central_columns'], ], Database\CentralColumnsController::class => [ 'class' => Database\CentralColumnsController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$centralColumns' => '@central_columns', - ], + 'arguments' => ['$response' => '@response', '$centralColumns' => '@central_columns'], ], Database\DataDictionaryController::class => [ 'class' => Database\DataDictionaryController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$relation' => '@relation', '$transformations' => '@transformations', '$dbi' => '@dbi', @@ -143,7 +129,6 @@ return [ 'class' => Database\ExportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$export' => '@export', '$exportOptions' => '@export_options', '$pageSettings' => '@' . PageSettings::class, @@ -154,7 +139,6 @@ return [ 'class' => Database\ImportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$pageSettings' => '@' . PageSettings::class, '$dbTableExists' => '@' . DbTableExists::class, @@ -162,11 +146,11 @@ return [ ], Database\MultiTableQuery\QueryController::class => [ 'class' => Database\MultiTableQuery\QueryController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Database\MultiTableQuery\TablesController::class => [ 'class' => Database\MultiTableQuery\TablesController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Database\MultiTableQueryController::class => [ 'class' => Database\MultiTableQueryController::class, @@ -176,7 +160,6 @@ return [ 'class' => Operations\Database\CollationController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$operations' => '@operations', '$dbi' => '@dbi', '$dbTableExists' => '@' . DbTableExists::class, @@ -186,7 +169,6 @@ return [ 'class' => Operations\DatabaseController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$operations' => '@operations', '$userPrivilegesFactory' => '@' . UserPrivilegesFactory::class, '$relation' => '@relation', @@ -197,12 +179,7 @@ return [ ], Database\PrivilegesController::class => [ 'class' => Database\PrivilegesController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$privileges' => '@server_privileges', - '$dbi' => '@dbi', - ], + 'arguments' => ['$response' => '@response', '$privileges' => '@server_privileges', '$dbi' => '@dbi'], ], Database\RoutinesController::class => [ 'class' => Database\RoutinesController::class, @@ -226,18 +203,12 @@ return [ ], Database\SqlAutoCompleteController::class => [ 'class' => Database\SqlAutoCompleteController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$dbi' => '@dbi', - '$config' => '@config', - ], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi', '$config' => '@config'], ], Database\SqlController::class => [ 'class' => Database\SqlController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$sqlQueryForm' => '@sql_query_form', '$pageSettings' => '@' . PageSettings::class, '$dbTableExists' => '@' . DbTableExists::class, @@ -245,26 +216,20 @@ return [ ], Database\SqlFormatController::class => [ 'class' => Database\SqlFormatController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Database\Structure\AddPrefixController::class => [ 'class' => Database\Structure\AddPrefixController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Database\Structure\AddPrefixTableController::class => [ 'class' => Database\Structure\AddPrefixTableController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$dbi' => '@dbi', - '$structureController' => '@' . Database\StructureController::class, - ], + 'arguments' => ['$dbi' => '@dbi', '$structureController' => '@' . Database\StructureController::class], ], Database\Structure\CentralColumns\AddController::class => [ 'class' => Database\Structure\CentralColumns\AddController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$structureController' => '@' . Database\StructureController::class, ], @@ -273,7 +238,6 @@ return [ 'class' => Database\Structure\CentralColumns\MakeConsistentController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$structureController' => '@' . Database\StructureController::class, ], @@ -282,24 +246,21 @@ return [ 'class' => Database\Structure\CentralColumns\RemoveController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$structureController' => '@' . Database\StructureController::class, ], ], Database\Structure\ChangePrefixFormController::class => [ 'class' => Database\Structure\ChangePrefixFormController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Database\Structure\CopyFormController::class => [ 'class' => Database\Structure\CopyFormController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Database\Structure\CopyTableController::class => [ 'class' => Database\Structure\CopyTableController::class, 'arguments' => [ - '$response' => '@response', - '$template' => '@template', '$operations' => '@operations', '$structureController' => '@' . Database\StructureController::class, '$userPrivilegesFactory' => '@' . UserPrivilegesFactory::class, @@ -307,21 +268,15 @@ return [ ], Database\Structure\CopyTableWithPrefixController::class => [ 'class' => Database\Structure\CopyTableWithPrefixController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$structureController' => '@' . Database\StructureController::class, - ], + 'arguments' => ['$structureController' => '@' . Database\StructureController::class], ], Database\Structure\DropFormController::class => [ 'class' => Database\Structure\DropFormController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Database\Structure\DropTableController::class => [ 'class' => Database\Structure\DropTableController::class, 'arguments' => [ - '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$relationCleanup' => '@relation_cleanup', '$structureController' => '@' . Database\StructureController::class, @@ -329,7 +284,7 @@ return [ ], Database\Structure\EmptyFormController::class => [ 'class' => Database\Structure\EmptyFormController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Database\Structure\EmptyTableController::class => [ 'class' => Database\Structure\EmptyTableController::class, @@ -356,19 +311,13 @@ return [ 'class' => Database\Structure\RealRowCountController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$dbTableExists' => '@' . DbTableExists::class, ], ], Database\Structure\ReplacePrefixController::class => [ 'class' => Database\Structure\ReplacePrefixController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$dbi' => '@dbi', - '$structureController' => '@' . Database\StructureController::class, - ], + 'arguments' => ['$dbi' => '@dbi', '$structureController' => '@' . Database\StructureController::class], ], Database\Structure\ShowCreateController::class => [ 'class' => Database\Structure\ShowCreateController::class, @@ -391,7 +340,6 @@ return [ 'class' => Database\TrackingController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$tracking' => '@tracking', '$dbi' => '@dbi', '$dbTableExists' => '@' . DbTableExists::class, @@ -399,7 +347,7 @@ return [ ], DatabaseController::class => [ 'class' => DatabaseController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], ErrorReportController::class => [ 'class' => ErrorReportController::class, @@ -413,17 +361,16 @@ return [ ], Export\CheckTimeOutController::class => [ 'class' => Export\CheckTimeOutController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Export\ExportController::class => [ 'class' => Export\ExportController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$export' => '@export'], + 'arguments' => ['$response' => '@response', '$export' => '@export'], ], Export\TablesController::class => [ 'class' => Export\TablesController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$exportController' => '@' . Database\ExportController::class, ], ], @@ -440,7 +387,6 @@ return [ 'class' => Export\Template\DeleteController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$model' => '@export_template_model', '$relation' => '@relation', ], @@ -449,7 +395,6 @@ return [ 'class' => Export\Template\LoadController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$model' => '@export_template_model', '$relation' => '@relation', ], @@ -458,7 +403,6 @@ return [ 'class' => Export\Template\UpdateController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$model' => '@export_template_model', '$relation' => '@relation', ], @@ -469,13 +413,12 @@ return [ ], GitInfoController::class => [ 'class' => GitInfoController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$config' => '@config'], + 'arguments' => ['$response' => '@response', '$config' => '@config'], ], HomeController::class => [ 'class' => HomeController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$config' => '@config', '$themeManager' => '@' . ThemeManager::class, '$dbi' => '@dbi', @@ -486,7 +429,6 @@ return [ 'class' => Import\ImportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$import' => '@import', '$sql' => '@sql', '$dbi' => '@dbi', @@ -495,11 +437,7 @@ return [ ], Import\SimulateDmlController::class => [ 'class' => Import\SimulateDmlController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$simulateDml' => '@import_simulate_dml', - ], + 'arguments' => ['$response' => '@response', '$simulateDml' => '@import_simulate_dml'], ], Import\StatusController::class => [ 'class' => Import\StatusController::class, @@ -511,11 +449,11 @@ return [ ], LicenseController::class => [ 'class' => LicenseController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], LintController::class => [ 'class' => LintController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], LogoutController::class => [ 'class' => LogoutController::class, @@ -525,7 +463,6 @@ return [ 'class' => NavigationController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$navigation' => '@navigation', '$relation' => '@relation', '$pageSettings' => '@' . PageSettings::class, @@ -533,89 +470,48 @@ return [ ], Normalization\FirstNormalForm\FirstStepController::class => [ 'class' => Normalization\FirstNormalForm\FirstStepController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\FirstNormalForm\FourthStepController::class => [ 'class' => Normalization\FirstNormalForm\FourthStepController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\FirstNormalForm\SecondStepController::class => [ 'class' => Normalization\FirstNormalForm\SecondStepController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\FirstNormalForm\ThirdStepController::class => [ 'class' => Normalization\FirstNormalForm\ThirdStepController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\SecondNormalForm\CreateNewTablesController::class => [ 'class' => Normalization\SecondNormalForm\CreateNewTablesController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\SecondNormalForm\FirstStepController::class => [ 'class' => Normalization\SecondNormalForm\FirstStepController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\SecondNormalForm\NewTablesController::class => [ 'class' => Normalization\SecondNormalForm\NewTablesController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\ThirdNormalForm\CreateNewTablesController::class => [ 'class' => Normalization\ThirdNormalForm\CreateNewTablesController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\ThirdNormalForm\FirstStepController::class => [ 'class' => Normalization\ThirdNormalForm\FirstStepController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\ThirdNormalForm\NewTablesController::class => [ 'class' => Normalization\ThirdNormalForm\NewTablesController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\AddNewPrimaryController::class => [ 'class' => Normalization\AddNewPrimaryController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$normalization' => '@normalization', '$userPrivilegesFactory' => '@' . UserPrivilegesFactory::class, ], @@ -624,52 +520,38 @@ return [ 'class' => Normalization\CreateNewColumnController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$normalization' => '@normalization', '$userPrivilegesFactory' => '@' . UserPrivilegesFactory::class, ], ], Normalization\GetColumnsController::class => [ 'class' => Normalization\GetColumnsController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\MainController::class => [ 'class' => Normalization\MainController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Normalization\MoveRepeatingGroup::class => [ 'class' => Normalization\MoveRepeatingGroup::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], Normalization\PartialDependenciesController::class => [ 'class' => Normalization\PartialDependenciesController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$normalization' => '@normalization', - ], + 'arguments' => ['$response' => '@response', '$normalization' => '@normalization'], ], PhpInfoController::class => [ 'class' => PhpInfoController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], RecentTablesListController::class => [ 'class' => RecentTablesListController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Preferences\ExportController::class => [ 'class' => Preferences\ExportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$userPreferences' => '@user_preferences', '$relation' => '@relation', '$config' => '@config', @@ -680,7 +562,6 @@ return [ 'class' => Preferences\FeaturesController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$userPreferences' => '@user_preferences', '$relation' => '@relation', '$config' => '@config', @@ -691,7 +572,6 @@ return [ 'class' => Preferences\ImportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$userPreferences' => '@user_preferences', '$relation' => '@relation', '$config' => '@config', @@ -702,7 +582,6 @@ return [ 'class' => Preferences\MainPanelController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$userPreferences' => '@user_preferences', '$relation' => '@relation', '$config' => '@config', @@ -713,7 +592,6 @@ return [ 'class' => Preferences\ManageController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$userPreferences' => '@user_preferences', '$relation' => '@relation', '$config' => '@config', @@ -724,7 +602,6 @@ return [ 'class' => Preferences\NavigationController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$userPreferences' => '@user_preferences', '$relation' => '@relation', '$config' => '@config', @@ -735,7 +612,6 @@ return [ 'class' => Preferences\SqlController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$userPreferences' => '@user_preferences', '$relation' => '@relation', '$config' => '@config', @@ -744,7 +620,7 @@ return [ ], Preferences\TwoFactorController::class => [ 'class' => Preferences\TwoFactorController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$relation' => '@relation'], + 'arguments' => ['$response' => '@response', '$relation' => '@relation'], ], SchemaExportController::class => [ 'class' => SchemaExportController::class, @@ -752,21 +628,20 @@ return [ ], Server\BinlogController::class => [ 'class' => Server\BinlogController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Server\CollationsController::class => [ 'class' => Server\CollationsController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Server\Databases\CreateController::class => [ 'class' => Server\Databases\CreateController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Server\Databases\DestroyController::class => [ 'class' => Server\Databases\DestroyController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$transformations' => '@transformations', '$relationCleanup' => '@relation_cleanup', @@ -777,20 +652,18 @@ return [ 'class' => Server\DatabasesController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$userPrivilegesFactory' => '@' . UserPrivilegesFactory::class, ], ], Server\EnginesController::class => [ 'class' => Server\EnginesController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Server\ExportController::class => [ 'class' => Server\ExportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$export' => '@export_options', '$dbi' => '@dbi', '$pageSettings' => '@' . PageSettings::class, @@ -800,7 +673,6 @@ return [ 'class' => Server\ImportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$pageSettings' => '@' . PageSettings::class, ], @@ -809,26 +681,17 @@ return [ 'class' => Server\PluginsController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$plugins' => '@server_plugins', '$dbi' => '@dbi', ], ], Server\Privileges\AccountLockController::class => [ 'class' => Server\Privileges\AccountLockController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$accountLocking' => '@server_privileges_account_locking', - ], + 'arguments' => ['$response' => '@response', '$accountLocking' => '@server_privileges_account_locking'], ], Server\Privileges\AccountUnlockController::class => [ 'class' => Server\Privileges\AccountUnlockController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$accountLocking' => '@server_privileges_account_locking', - ], + 'arguments' => ['$response' => '@response', '$accountLocking' => '@server_privileges_account_locking'], ], Server\PrivilegesController::class => [ 'class' => Server\PrivilegesController::class, @@ -842,22 +705,16 @@ return [ ], Server\ReplicationController::class => [ 'class' => Server\ReplicationController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$replicationGui' => '@replication_gui', - '$dbi' => '@dbi', - ], + 'arguments' => ['$response' => '@response', '$replicationGui' => '@replication_gui', '$dbi' => '@dbi'], ], Server\ShowEngineController::class => [ 'class' => Server\ShowEngineController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Server\SqlController::class => [ 'class' => Server\SqlController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$sqlQueryForm' => '@sql_query_form', '$dbi' => '@dbi', '$pageSettings' => '@' . PageSettings::class, @@ -865,12 +722,7 @@ return [ ], Server\UserGroupsController::class => [ 'class' => Server\UserGroupsController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$relation' => '@relation', - '$dbi' => '@dbi', - ], + 'arguments' => ['$response' => '@response', '$relation' => '@relation', '$dbi' => '@dbi'], ], Server\UserGroupsFormController::class => [ 'class' => Server\UserGroupsFormController::class, @@ -1007,7 +859,7 @@ return [ ], Server\Variables\GetVariableController::class => [ 'class' => Server\Variables\GetVariableController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Server\Variables\SetVariableController::class => [ 'class' => Server\Variables\SetVariableController::class, @@ -1019,11 +871,11 @@ return [ ], Sql\ColumnPreferencesController::class => [ 'class' => Sql\ColumnPreferencesController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Sql\DefaultForeignKeyCheckValueController::class => [ 'class' => Sql\DefaultForeignKeyCheckValueController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Sql\EnumValuesController::class => [ 'class' => Sql\EnumValuesController::class, @@ -1031,7 +883,7 @@ return [ ], Sql\RelationalValuesController::class => [ 'class' => Sql\RelationalValuesController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$sql' => '@sql'], + 'arguments' => ['$response' => '@response', '$sql' => '@sql'], ], Sql\SetValuesController::class => [ 'class' => Sql\SetValuesController::class, @@ -1041,7 +893,6 @@ return [ 'class' => Sql\SqlController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$sql' => '@sql', '$dbi' => '@dbi', '$pageSettings' => '@' . PageSettings::class, @@ -1052,7 +903,6 @@ return [ 'class' => Table\AddFieldController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$transformations' => '@transformations', '$config' => '@config', '$dbi' => '@dbi', @@ -1077,7 +927,6 @@ return [ 'class' => Table\ChangeRowsController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$changeController' => '@' . Table\ChangeController::class, ], ], @@ -1085,7 +934,6 @@ return [ 'class' => Table\ChartController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$dbTableExists' => '@' . DbTableExists::class, ], @@ -1094,7 +942,6 @@ return [ 'class' => Table\CreateController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$transformations' => '@transformations', '$config' => '@config', '$dbi' => '@dbi', @@ -1104,11 +951,7 @@ return [ ], Table\DeleteConfirmController::class => [ 'class' => Table\DeleteConfirmController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$dbTableExists' => '@' . DbTableExists::class, - ], + 'arguments' => ['$response' => '@response', '$dbTableExists' => '@' . DbTableExists::class], ], Table\DeleteRowsController::class => [ 'class' => Table\DeleteRowsController::class, @@ -1116,17 +959,12 @@ return [ ], Table\DropColumnConfirmationController::class => [ 'class' => Table\DropColumnConfirmationController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$dbTableExists' => '@' . DbTableExists::class, - ], + 'arguments' => ['$response' => '@response', '$dbTableExists' => '@' . DbTableExists::class], ], Table\DropColumnController::class => [ 'class' => Table\DropColumnController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$flash' => '@flash', '$relationCleanup' => '@relation_cleanup', @@ -1136,18 +974,13 @@ return [ 'class' => Table\ExportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$export' => '@export_options', '$pageSettings' => '@' . PageSettings::class, ], ], Table\ExportRowsController::class => [ 'class' => Table\ExportRowsController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$exportController' => '@' . Table\ExportController::class, - ], + 'arguments' => ['$response' => '@response', '$exportController' => '@' . Table\ExportController::class], ], Table\FindReplaceController::class => [ 'class' => Table\FindReplaceController::class, @@ -1160,7 +993,7 @@ return [ ], Table\GetFieldController::class => [ 'class' => Table\GetFieldController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], Table\GisVisualizationController::class => [ 'class' => Table\GisVisualizationController::class, @@ -1175,7 +1008,6 @@ return [ 'class' => Table\ImportController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$pageSettings' => '@' . PageSettings::class, '$dbTableExists' => '@' . DbTableExists::class, @@ -1203,110 +1035,56 @@ return [ ], Table\Maintenance\AnalyzeController::class => [ 'class' => Table\Maintenance\AnalyzeController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@table_maintenance', - '$config' => '@config', - ], + 'arguments' => ['$response' => '@response', '$model' => '@table_maintenance', '$config' => '@config'], ], Table\Maintenance\CheckController::class => [ 'class' => Table\Maintenance\CheckController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@table_maintenance', - '$config' => '@config', - ], + 'arguments' => ['$response' => '@response', '$model' => '@table_maintenance', '$config' => '@config'], ], Table\Maintenance\ChecksumController::class => [ 'class' => Table\Maintenance\ChecksumController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@table_maintenance', - '$config' => '@config', - ], + 'arguments' => ['$response' => '@response', '$model' => '@table_maintenance', '$config' => '@config'], ], Table\Maintenance\OptimizeController::class => [ 'class' => Table\Maintenance\OptimizeController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@table_maintenance', - '$config' => '@config', - ], + 'arguments' => ['$response' => '@response', '$model' => '@table_maintenance', '$config' => '@config'], ], Table\Maintenance\RepairController::class => [ 'class' => Table\Maintenance\RepairController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@table_maintenance', - '$config' => '@config', - ], + 'arguments' => ['$response' => '@response', '$model' => '@table_maintenance', '$config' => '@config'], ], Table\Partition\AnalyzeController::class => [ 'class' => Table\Partition\AnalyzeController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@partitioning_maintenance', - ], + 'arguments' => ['$response' => '@response', '$model' => '@partitioning_maintenance'], ], Table\Partition\CheckController::class => [ 'class' => Table\Partition\CheckController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@partitioning_maintenance', - ], + 'arguments' => ['$response' => '@response', '$model' => '@partitioning_maintenance'], ], Table\Partition\DropController::class => [ 'class' => Table\Partition\DropController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@partitioning_maintenance', - ], + 'arguments' => ['$response' => '@response', '$model' => '@partitioning_maintenance'], ], Table\Partition\OptimizeController::class => [ 'class' => Table\Partition\OptimizeController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@partitioning_maintenance', - ], + 'arguments' => ['$response' => '@response', '$model' => '@partitioning_maintenance'], ], Table\Partition\RebuildController::class => [ 'class' => Table\Partition\RebuildController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@partitioning_maintenance', - ], + 'arguments' => ['$response' => '@response', '$model' => '@partitioning_maintenance'], ], Table\Partition\RepairController::class => [ 'class' => Table\Partition\RepairController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@partitioning_maintenance', - ], + 'arguments' => ['$response' => '@response', '$model' => '@partitioning_maintenance'], ], Table\Partition\TruncateController::class => [ 'class' => Table\Partition\TruncateController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$model' => '@partitioning_maintenance', - ], + 'arguments' => ['$response' => '@response', '$model' => '@partitioning_maintenance'], ], Operations\TableController::class => [ 'class' => Operations\TableController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$operations' => '@operations', '$userPrivilegesFactory' => '@' . UserPrivilegesFactory::class, '$relation' => '@relation', @@ -1316,16 +1094,11 @@ return [ ], Table\PrivilegesController::class => [ 'class' => Table\PrivilegesController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$privileges' => '@server_privileges', - '$dbi' => '@dbi', - ], + 'arguments' => ['$response' => '@response', '$privileges' => '@server_privileges', '$dbi' => '@dbi'], ], Table\RecentFavoriteController::class => [ 'class' => Table\RecentFavoriteController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Table\RelationController::class => [ 'class' => Table\RelationController::class, @@ -1340,7 +1113,6 @@ return [ 'class' => Table\ReplaceController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$insertEdit' => '@insert_edit', '$transformations' => '@transformations', '$relation' => '@relation', @@ -1366,7 +1138,6 @@ return [ 'class' => Table\SqlController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$sqlQueryForm' => '@sql_query_form', '$pageSettings' => '@' . PageSettings::class, '$dbTableExists' => '@' . DbTableExists::class, @@ -1376,7 +1147,6 @@ return [ 'class' => Table\Structure\AddIndexController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$structureController' => '@' . Table\StructureController::class, '$indexes' => '@table_indexes', ], @@ -1384,21 +1154,18 @@ return [ Table\Structure\AddKeyController::class => [ 'class' => Table\Structure\AddKeyController::class, 'arguments' => [ - '$response' => '@response', - '$template' => '@template', '$sqlController' => '@' . Sql\SqlController::class, '$structureController' => '@' . Table\StructureController::class, ], ], Table\Structure\BrowseController::class => [ 'class' => Table\Structure\BrowseController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$sql' => '@sql'], + 'arguments' => ['$response' => '@response', '$sql' => '@sql'], ], Table\Structure\CentralColumnsAddController::class => [ 'class' => Table\Structure\CentralColumnsAddController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$centralColumns' => '@central_columns', '$structureController' => '@' . Table\StructureController::class, ], @@ -1407,7 +1174,6 @@ return [ 'class' => Table\Structure\CentralColumnsRemoveController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$centralColumns' => '@central_columns', '$structureController' => '@' . Table\StructureController::class, ], @@ -1416,7 +1182,6 @@ return [ 'class' => Table\Structure\ChangeController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$columnsDefinition' => '@table_columns_definition', '$userPrivilegesFactory' => '@' . UserPrivilegesFactory::class, @@ -1426,7 +1191,6 @@ return [ 'class' => Table\Structure\FulltextController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$structureController' => '@' . Table\StructureController::class, '$indexes' => '@table_indexes', ], @@ -1439,7 +1203,6 @@ return [ 'class' => Table\Structure\PartitioningController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$createAddField' => '@create_add_field', '$structureController' => '@' . Table\StructureController::class, @@ -1450,7 +1213,6 @@ return [ 'class' => Table\Structure\PrimaryController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$structureController' => '@' . Table\StructureController::class, '$dbTableExists' => '@' . DbTableExists::class, @@ -1458,13 +1220,12 @@ return [ ], Table\Structure\ReservedWordCheckController::class => [ 'class' => Table\Structure\ReservedWordCheckController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template'], + 'arguments' => ['$response' => '@response'], ], Table\Structure\SaveController::class => [ 'class' => Table\Structure\SaveController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$relation' => '@relation', '$transformations' => '@transformations', '$dbi' => '@dbi', @@ -1476,7 +1237,6 @@ return [ 'class' => Table\Structure\SpatialController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$structureController' => '@' . Table\StructureController::class, '$indexes' => '@table_indexes', ], @@ -1485,7 +1245,6 @@ return [ 'class' => Table\Structure\UniqueController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$structureController' => '@' . Table\StructureController::class, '$indexes' => '@table_indexes', ], @@ -1506,7 +1265,6 @@ return [ 'class' => Table\TrackingController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$tracking' => '@tracking', '$trackingChecker' => '@tracking_checker', '$dbTableExists' => '@' . DbTableExists::class, @@ -1535,7 +1293,7 @@ return [ ], TableController::class => [ 'class' => TableController::class, - 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + 'arguments' => ['$response' => '@response', '$dbi' => '@dbi'], ], ThemesController::class => [ 'class' => ThemesController::class, @@ -1549,24 +1307,18 @@ return [ 'class' => ThemeSetController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$themeManager' => '@' . PhpMyAdmin\Theme\ThemeManager::class, '$userPreferences' => '@user_preferences', ], ], Transformation\OverviewController::class => [ 'class' => Transformation\OverviewController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$transformations' => '@transformations', - ], + 'arguments' => ['$response' => '@response', '$transformations' => '@transformations'], ], Transformation\WrapperController::class => [ 'class' => Transformation\WrapperController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$transformations' => '@transformations', '$relation' => '@relation', '$dbi' => '@dbi', @@ -1575,26 +1327,16 @@ return [ ], UserPasswordController::class => [ 'class' => UserPasswordController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$userPassword' => '@user_password', - '$dbi' => '@dbi', - ], + 'arguments' => ['$response' => '@response', '$userPassword' => '@user_password', '$dbi' => '@dbi'], ], VersionCheckController::class => [ 'class' => VersionCheckController::class, - 'arguments' => [ - '$response' => '@response', - '$template' => '@template', - '$versionInformation' => '@version_information', - ], + 'arguments' => ['$response' => '@response', '$versionInformation' => '@version_information'], ], View\CreateController::class => [ 'class' => View\CreateController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$dbTableExists' => '@' . DbTableExists::class, ], @@ -1603,7 +1345,6 @@ return [ 'class' => Operations\ViewController::class, 'arguments' => [ '$response' => '@response', - '$template' => '@template', '$dbi' => '@dbi', '$dbTableExists' => '@' . DbTableExists::class, ], diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 86fd4d008a..8afed57932 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1385,11 +1385,6 @@ parameters: count: 3 path: src/ConfigStorage/UserGroups.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommonRaw\\(\\) expects array\\, array\\ given\\.$#" - count: 1 - path: src/Controllers/AbstractController.php - - message: "#^Parameter \\#2 \\$table of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:getColumnsNotInCentralList\\(\\) expects string, mixed given\\.$#" count: 1 @@ -1456,7 +1451,7 @@ parameters: path: src/Controllers/Database/CentralColumnsController.php - - message: "#^Parameter \\#2 \\$templateData of method PhpMyAdmin\\\\Controllers\\\\AbstractController\\:\\:render\\(\\) expects array\\, array given\\.$#" + message: "#^Parameter \\#2 \\$templateData of method PhpMyAdmin\\\\ResponseRenderer\\:\\:render\\(\\) expects array\\, array given\\.$#" count: 1 path: src/Controllers/Database/CentralColumnsController.php @@ -4036,7 +4031,7 @@ parameters: path: src/Controllers/Table/ChangeController.php - - message: "#^Parameter \\#1 \\$files of method PhpMyAdmin\\\\Controllers\\\\AbstractController\\:\\:addScriptFiles\\(\\) expects array\\, mixed given\\.$#" + message: "#^Parameter \\#1 \\$files of method PhpMyAdmin\\\\ResponseRenderer\\:\\:addScriptFiles\\(\\) expects array\\, mixed given\\.$#" count: 1 path: src/Controllers/Table/ChangeController.php @@ -12675,6 +12670,11 @@ parameters: count: 1 path: src/ResponseRenderer.php + - + message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommonRaw\\(\\) expects array\\, array\\ given\\.$#" + count: 1 + path: src/ResponseRenderer.php + - message: "#^Parameter \\#1 \\$string of function mb_strlen expects string, mixed given\\.$#" count: 1 diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 3fb7fe2d7f..bc9108fd4d 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -839,11 +839,6 @@ - - - - - @@ -1140,6 +1135,9 @@ getParam('db')]]> getParsedBodyParam('sql_query')]]> + + + @@ -1335,6 +1333,16 @@ + + + + + + + + + + getParsedBodyParam('add_prefix', '')]]> @@ -1364,10 +1372,18 @@ + + + + + + + + @@ -1409,6 +1425,11 @@ + + + + + @@ -1645,6 +1666,11 @@ + + + + + @@ -2047,6 +2073,11 @@ + + + + + @@ -2317,6 +2348,9 @@ + + + @@ -2520,6 +2554,11 @@ + + + + + @@ -3061,6 +3100,11 @@ + + + + + @@ -4056,6 +4100,9 @@ + + + @@ -10249,6 +10296,9 @@ + + + diff --git a/src/Controllers/AbstractController.php b/src/Controllers/AbstractController.php deleted file mode 100644 index b928002404..0000000000 --- a/src/Controllers/AbstractController.php +++ /dev/null @@ -1,105 +0,0 @@ - $templateData */ - protected function render(string $templatePath, array $templateData = []): void - { - $this->response->addHTML($this->template->render($templatePath, $templateData)); - } - - /** @param string[] $files */ - protected function addScriptFiles(array $files): void - { - $header = $this->response->getHeader(); - $scripts = $header->getScripts(); - $scripts->addFiles($files); - } - - /** @param array $params */ - protected function redirect(string $route, array $params = []): void - { - $this->response->redirect('./index.php?route=' . $route . Url::getCommonRaw($params, '&')); - } - - /** - * Function added to avoid path disclosures. - * Called by each script that needs parameters. - * - * @param bool $request Check parameters in request - * @psalm-param non-empty-list $params The names of the parameters needed by the calling script - */ - protected function checkParameters(array $params, bool $request = false): bool - { - $foundError = false; - $errorMessage = ''; - $array = $request ? $_REQUEST : $GLOBALS; - - foreach ($params as $param) { - if (isset($array[$param]) && $array[$param] !== '') { - continue; - } - - if (! $request && $param === 'server' && Current::$server > 0) { - continue; - } - - if (! $request && $param === 'db' && Current::$database !== '') { - continue; - } - - if (! $request && $param === 'table' && Current::$table !== '') { - continue; - } - - $errorMessage .= - __('Missing parameter:') . ' ' - . $param - . MySQLDocumentation::showDocumentation('faq', 'faqmissingparameters', true) - . '[br]'; - $foundError = true; - } - - if ($foundError) { - $this->response->setStatusCode(StatusCodeInterface::STATUS_BAD_REQUEST); - $this->response->setRequestStatus(false); - $this->response->addHTML(Message::error($errorMessage)->getDisplay()); - } - - return ! $foundError; - } - - /** @psalm-param StatusCodeInterface::STATUS_* $statusCode */ - protected function sendErrorResponse(string $message, int $statusCode = 400): void - { - $this->response->setStatusCode($statusCode); - $this->response->setRequestStatus(false); - - if ($this->response->isAjax()) { - $this->response->addJSON('isErrorResponse', true); - $this->response->addJSON('message', $message); - - return; - } - - $this->response->addHTML(Message::error($message)->getDisplay()); - } -} diff --git a/src/Controllers/BrowseForeignersController.php b/src/Controllers/BrowseForeignersController.php index fbe1662935..19b978797c 100644 --- a/src/Controllers/BrowseForeignersController.php +++ b/src/Controllers/BrowseForeignersController.php @@ -9,20 +9,17 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; /** * Display selection for relational field values */ -class BrowseForeignersController extends AbstractController +final class BrowseForeignersController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private BrowseForeigners $browseForeigners, - private Relation $relation, + private readonly ResponseRenderer $response, + private readonly BrowseForeigners $browseForeigners, + private readonly Relation $relation, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/ChangeLogController.php b/src/Controllers/ChangeLogController.php index 368e0ad473..a90c8afa9c 100644 --- a/src/Controllers/ChangeLogController.php +++ b/src/Controllers/ChangeLogController.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use function __; @@ -25,11 +24,10 @@ use function printf; use function readgzfile; use function str_ends_with; -final class ChangeLogController extends AbstractController +final class ChangeLogController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private readonly Config $config) + public function __construct(private readonly ResponseRenderer $response, private readonly Config $config) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -113,7 +111,7 @@ final class ChangeLogController extends AbstractController $this->response->addHeader('Content-Type', 'text/html; charset=utf-8'); - $this->render('changelog', [ + $this->response->render('changelog', [ 'changelog' => preg_replace(array_keys($replaces), $replaces, $changelog), ]); diff --git a/src/Controllers/CheckRelationsController.php b/src/Controllers/CheckRelationsController.php index 6f042de979..030d5f9c15 100644 --- a/src/Controllers/CheckRelationsController.php +++ b/src/Controllers/CheckRelationsController.php @@ -11,18 +11,16 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use const SQL_DIR; /** * Displays status of phpMyAdmin configuration storage */ -class CheckRelationsController extends AbstractController +final class CheckRelationsController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Relation $relation) + public function __construct(private readonly ResponseRenderer $response, private readonly Relation $relation) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -50,7 +48,7 @@ class CheckRelationsController extends AbstractController // Do not use any previous $relationParameters value as it could have changed after a successful fixPmaTables() $relationParameters = $this->relation->getRelationParameters(); - $this->render('relation/check_relations', [ + $this->response->render('relation/check_relations', [ 'db' => $db?->getName() ?? '', 'zero_conf' => Config::getInstance()->settings['ZeroConf'], 'relation_parameters' => $relationParameters->toArray(), diff --git a/src/Controllers/CollationConnectionController.php b/src/Controllers/CollationConnectionController.php index 9dce75561b..ab6dcdcc22 100644 --- a/src/Controllers/CollationConnectionController.php +++ b/src/Controllers/CollationConnectionController.php @@ -8,14 +8,12 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; -final class CollationConnectionController extends AbstractController +final class CollationConnectionController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Config $config) + public function __construct(private readonly ResponseRenderer $response, private readonly Config $config) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/ColumnController.php b/src/Controllers/ColumnController.php index c0df51ef7e..0482cfc384 100644 --- a/src/Controllers/ColumnController.php +++ b/src/Controllers/ColumnController.php @@ -9,13 +9,11 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class ColumnController extends AbstractController +final class ColumnController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Console/Bookmark/AddController.php b/src/Controllers/Console/Bookmark/AddController.php index 9a19b66cc9..94ca587f8a 100644 --- a/src/Controllers/Console/Bookmark/AddController.php +++ b/src/Controllers/Console/Bookmark/AddController.php @@ -6,23 +6,20 @@ namespace PhpMyAdmin\Controllers\Console\Bookmark; use PhpMyAdmin\Bookmarks\BookmarkRepository; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function __; use function is_string; -final class AddController extends AbstractController +final class AddController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, + private readonly ResponseRenderer $response, private readonly BookmarkRepository $bookmarkRepository, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Console/Bookmark/RefreshController.php b/src/Controllers/Console/Bookmark/RefreshController.php index c456a776f9..cb6125f010 100644 --- a/src/Controllers/Console/Bookmark/RefreshController.php +++ b/src/Controllers/Console/Bookmark/RefreshController.php @@ -5,20 +5,15 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Console\Bookmark; use PhpMyAdmin\Console; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class RefreshController extends AbstractController +final class RefreshController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Console $console, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Console $console) + { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Console/UpdateConfigController.php b/src/Controllers/Console/UpdateConfigController.php index e7ac305138..846346be05 100644 --- a/src/Controllers/Console/UpdateConfigController.php +++ b/src/Controllers/Console/UpdateConfigController.php @@ -7,21 +7,21 @@ namespace PhpMyAdmin\Controllers\Console; use Fig\Http\Message\StatusCodeInterface; use InvalidArgumentException; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function __; use function in_array; use function is_numeric; -final class UpdateConfigController extends AbstractController +final class UpdateConfigController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Config $config) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Config $config, + ) { } public function __invoke(ServerRequest $request): Response diff --git a/src/Controllers/Database/CentralColumns/PopulateColumnsController.php b/src/Controllers/Database/CentralColumns/PopulateColumnsController.php index 16e2464713..f78420fb0a 100644 --- a/src/Controllers/Database/CentralColumns/PopulateColumnsController.php +++ b/src/Controllers/Database/CentralColumns/PopulateColumnsController.php @@ -4,22 +4,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\CentralColumns; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class PopulateColumnsController extends AbstractController +final class PopulateColumnsController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private CentralColumns $centralColumns, + private readonly ResponseRenderer $response, + private readonly CentralColumns $centralColumns, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -28,7 +25,7 @@ final class PopulateColumnsController extends AbstractController Current::$database, $request->getParsedBodyParam('selectedTable'), ); - $this->render('database/central_columns/populate_columns', ['columns' => $columns]); + $this->response->render('database/central_columns/populate_columns', ['columns' => $columns]); return null; } diff --git a/src/Controllers/Database/CentralColumnsController.php b/src/Controllers/Database/CentralColumnsController.php index 0333a96eff..1cebe88fbe 100644 --- a/src/Controllers/Database/CentralColumnsController.php +++ b/src/Controllers/Database/CentralColumnsController.php @@ -8,7 +8,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -16,7 +16,6 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use function __; @@ -25,14 +24,12 @@ use function is_numeric; use function parse_str; use function sprintf; -class CentralColumnsController extends AbstractController +final class CentralColumnsController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private CentralColumns $centralColumns, + private readonly ResponseRenderer $response, + private readonly CentralColumns $centralColumns, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -91,7 +88,7 @@ class CentralColumnsController extends AbstractController ); } - $this->addScriptFiles([ + $this->response->addScriptFiles([ 'vendor/jquery/jquery.uitablefilter.js', 'vendor/jquery/jquery.tablesorter.js', 'database/central_columns.js', @@ -181,7 +178,7 @@ class CentralColumnsController extends AbstractController LanguageManager::$textDir, ); - $this->render('database/central_columns/main', $variables); + $this->response->render('database/central_columns/main', $variables); } /** @return true|Message */ @@ -256,7 +253,7 @@ class CentralColumnsController extends AbstractController Assert::allString($params['selected_fld']); $rows = $this->centralColumns->getHtmlForEditingPage($params['selected_fld'], $params['db']); - $this->render('database/central_columns/edit', ['rows' => $rows]); + $this->response->render('database/central_columns/edit', ['rows' => $rows]); } /** diff --git a/src/Controllers/Database/DataDictionaryController.php b/src/Controllers/Database/DataDictionaryController.php index 8822af7e56..f862132544 100644 --- a/src/Controllers/Database/DataDictionaryController.php +++ b/src/Controllers/Database/DataDictionaryController.php @@ -5,35 +5,32 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Index; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Util; use function is_array; use function str_replace; -class DataDictionaryController extends AbstractController +final class DataDictionaryController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, - private Transformations $transformations, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Relation $relation, + private readonly Transformations $transformations, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { - if (! $this->checkParameters(['db'], true)) { + if (! $this->response->checkParameters(['db'], true)) { return null; } @@ -107,7 +104,7 @@ class DataDictionaryController extends AbstractController ]; } - $this->render('database/data_dictionary/index', [ + $this->response->render('database/data_dictionary/index', [ 'database' => Current::$database, 'comment' => $comment, 'tables' => $tables, diff --git a/src/Controllers/Database/DesignerController.php b/src/Controllers/Database/DesignerController.php index bd8d4ee5bd..fb24de3915 100644 --- a/src/Controllers/Database/DesignerController.php +++ b/src/Controllers/Database/DesignerController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\Designer; use PhpMyAdmin\Database\Designer\Common as DesignerCommon; @@ -26,16 +26,15 @@ use function in_array; use function json_encode; use function sprintf; -class DesignerController extends AbstractController +final class DesignerController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Designer $databaseDesigner, - private DesignerCommon $designerCommon, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Designer $databaseDesigner, + private readonly DesignerCommon $designerCommon, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -154,7 +153,7 @@ class DesignerController extends AbstractController return null; } - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -173,7 +172,7 @@ class DesignerController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -223,7 +222,7 @@ class DesignerController extends AbstractController $header = $this->response->getHeader(); $header->setBodyId('designer_body'); - $this->addScriptFiles(['designer/init.js']); + $this->response->addScriptFiles(['designer/init.js']); $columnsType = $this->databaseDesigner->getColumnTypes($tableColumn, $tablesAllKeys); diff --git a/src/Controllers/Database/EventsController.php b/src/Controllers/Database/EventsController.php index a7451ef164..a4548c228a 100644 --- a/src/Controllers/Database/EventsController.php +++ b/src/Controllers/Database/EventsController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\Events; use PhpMyAdmin\DatabaseInterface; @@ -27,16 +27,15 @@ use function mb_strtoupper; use function sprintf; use function trim; -final class EventsController extends AbstractController +final class EventsController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Events $events, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Events $events, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -44,10 +43,10 @@ final class EventsController extends AbstractController $GLOBALS['errors'] ??= null; $GLOBALS['errorUrl'] ??= null; - $this->addScriptFiles(['database/events.js', 'sql.js']); + $this->response->addScriptFiles(['database/events.js', 'sql.js']); if (! $request->isAjax()) { - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -59,7 +58,7 @@ final class EventsController extends AbstractController $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -258,7 +257,7 @@ final class EventsController extends AbstractController $items = $this->events->getDetails(Current::$database); - $this->render('database/events/index', [ + $this->response->render('database/events/index', [ 'db' => Current::$database, 'items' => $items, 'has_privilege' => Util::currentUserHasPrivilege('EVENT', Current::$database), diff --git a/src/Controllers/Database/ExportController.php b/src/Controllers/Database/ExportController.php index d459a78f8b..1335e0fc3e 100644 --- a/src/Controllers/Database/ExportController.php +++ b/src/Controllers/Database/ExportController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Export\Export; @@ -17,7 +17,6 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -26,17 +25,15 @@ use function array_merge; use function count; use function is_array; -final class ExportController extends AbstractController +final class ExportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Export $export, - private Options $exportOptions, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly Export $export, + private readonly Options $exportOptions, + private readonly PageSettings $pageSettings, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -50,9 +47,9 @@ final class ExportController extends AbstractController $pageSettingsErrorHtml = $this->pageSettings->getErrorHTML(); $pageSettingsHtml = $this->pageSettings->getHTML(); - $this->addScriptFiles(['export.js']); + $this->response->addScriptFiles(['export.js']); - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -71,7 +68,7 @@ final class ExportController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -166,7 +163,7 @@ final class ExportController extends AbstractController $exportList, ); - $this->render('database/export/index', array_merge($options, [ + $this->response->render('database/export/index', array_merge($options, [ 'page_settings_error_html' => $pageSettingsErrorHtml, 'page_settings_html' => $pageSettingsHtml, 'structure_or_data_forced' => $request->getParsedBodyParam('structure_or_data_forced', 0), diff --git a/src/Controllers/Database/ImportController.php b/src/Controllers/Database/ImportController.php index 348213c1ce..3402e43720 100644 --- a/src/Controllers/Database/ImportController.php +++ b/src/Controllers/Database/ImportController.php @@ -7,7 +7,7 @@ namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -21,7 +21,6 @@ use PhpMyAdmin\Import\ImportSettings; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -29,16 +28,14 @@ use PhpMyAdmin\Utils\ForeignKey; use function __; use function is_numeric; -final class ImportController extends AbstractController +final class ImportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly PageSettings $pageSettings, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -50,9 +47,9 @@ final class ImportController extends AbstractController $pageSettingsErrorHtml = $this->pageSettings->getErrorHTML(); $pageSettingsHtml = $this->pageSettings->getHTML(); - $this->addScriptFiles(['import.js']); + $this->response->addScriptFiles(['import.js']); - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -69,7 +66,7 @@ final class ImportController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -110,7 +107,7 @@ final class ImportController extends AbstractController $isAllowInterruptChecked = Plugins::checkboxCheck('Import', 'allow_interrupt'); $maxUploadSize = (int) $config->get('max_upload_size'); - $this->render('database/import/index', [ + $this->response->render('database/import/index', [ 'page_settings_error_html' => $pageSettingsErrorHtml, 'page_settings_html' => $pageSettingsHtml, 'upload_id' => $uploadId, diff --git a/src/Controllers/Database/MultiTableQuery/QueryController.php b/src/Controllers/Database/MultiTableQuery/QueryController.php index 5ee51658af..3e6f8dc3c1 100644 --- a/src/Controllers/Database/MultiTableQuery/QueryController.php +++ b/src/Controllers/Database/MultiTableQuery/QueryController.php @@ -4,13 +4,18 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\MultiTableQuery; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Database\MultiTableQuery; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; -final class QueryController extends AbstractController +final class QueryController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { $this->response->addHTML(MultiTableQuery::displayResults( diff --git a/src/Controllers/Database/MultiTableQuery/TablesController.php b/src/Controllers/Database/MultiTableQuery/TablesController.php index 8b26aebb5a..d9ebe22988 100644 --- a/src/Controllers/Database/MultiTableQuery/TablesController.php +++ b/src/Controllers/Database/MultiTableQuery/TablesController.php @@ -4,22 +4,20 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\MultiTableQuery; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Query\Generator as QueryGenerator; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function array_map; use function implode; -final class TablesController extends AbstractController +final class TablesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/MultiTableQueryController.php b/src/Controllers/Database/MultiTableQueryController.php index c8024f4dcd..82b19e1423 100644 --- a/src/Controllers/Database/MultiTableQueryController.php +++ b/src/Controllers/Database/MultiTableQueryController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\MultiTableQuery; use PhpMyAdmin\DatabaseInterface; @@ -16,16 +16,18 @@ use PhpMyAdmin\Template; /** * Handles database multi-table querying */ -class MultiTableQueryController extends AbstractController +final class MultiTableQueryController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, + ) { } public function __invoke(ServerRequest $request): Response|null { - $this->addScriptFiles(['database/multi_table_query.js', 'database/query_generator.js']); + $this->response->addScriptFiles(['database/multi_table_query.js', 'database/query_generator.js']); $queryInstance = new MultiTableQuery($this->dbi, $this->template, Current::$database); diff --git a/src/Controllers/Database/PrivilegesController.php b/src/Controllers/Database/PrivilegesController.php index 36dab1dd75..9c71371a78 100644 --- a/src/Controllers/Database/PrivilegesController.php +++ b/src/Controllers/Database/PrivilegesController.php @@ -8,7 +8,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -18,7 +18,6 @@ use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Privileges; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function __; @@ -27,15 +26,13 @@ use function mb_strtolower; /** * Controller for database privileges */ -class PrivilegesController extends AbstractController +final class PrivilegesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Privileges $privileges, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Privileges $privileges, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +48,7 @@ class PrivilegesController extends AbstractController return null; } - $this->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); + $this->response->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); /** * Checks if the user is allowed to do what they try to... @@ -60,7 +57,7 @@ class PrivilegesController extends AbstractController $isCreateUser = $this->dbi->isCreateUser(); if (! $this->dbi->isSuperUser() && ! $isGrantUser && ! $isCreateUser) { - $this->render('server/sub_page_header', ['type' => 'privileges', 'is_image' => false]); + $this->response->render('server/sub_page_header', ['type' => 'privileges', 'is_image' => false]); $this->response->addHTML( Message::error(__('No Privileges')) ->getDisplay(), @@ -82,7 +79,7 @@ class PrivilegesController extends AbstractController $privileges = $this->privileges->getAllPrivileges($db); } - $this->render('database/privileges/index', [ + $this->response->render('database/privileges/index', [ 'is_superuser' => $this->dbi->isSuperUser(), 'db' => $db->getName(), 'database_url' => $scriptName, @@ -91,7 +88,7 @@ class PrivilegesController extends AbstractController 'is_grantuser' => $this->dbi->isGrantUser(), 'privileges' => $privileges, ]); - $this->render('export_modal'); + $this->response->render('export_modal', []); return null; } diff --git a/src/Controllers/Database/RoutinesController.php b/src/Controllers/Database/RoutinesController.php index 844fd94de5..d2dbf65638 100644 --- a/src/Controllers/Database/RoutinesController.php +++ b/src/Controllers/Database/RoutinesController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\Routines; use PhpMyAdmin\DatabaseInterface; @@ -35,17 +35,16 @@ use const ENT_QUOTES; /** * Routines management. */ -class RoutinesController extends AbstractController +final class RoutinesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPrivilegesFactory $userPrivilegesFactory, - private DatabaseInterface $dbi, - private Routines $routines, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly UserPrivilegesFactory $userPrivilegesFactory, + private readonly DatabaseInterface $dbi, + private readonly Routines $routines, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -54,7 +53,7 @@ class RoutinesController extends AbstractController $GLOBALS['errorUrl'] ??= null; $GLOBALS['urlParams'] ??= null; - $this->addScriptFiles(['database/routines.js', 'sql.js']); + $this->response->addScriptFiles(['database/routines.js', 'sql.js']); $type = $_REQUEST['type'] ?? null; @@ -66,7 +65,7 @@ class RoutinesController extends AbstractController * Displays the header and tabs */ if (Current::$table !== '' && in_array(Current::$table, $this->dbi->getTables(Current::$database), true)) { - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -76,21 +75,24 @@ class RoutinesController extends AbstractController $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute( + '/', + ['reload' => true, 'message' => __('No databases selected.')], + ); return null; } $tableName = TableName::tryFrom($request->getParam('table')); if ($tableName === null || ! $this->dbTableExists->hasTable($databaseName, $tableName)) { - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } } else { Current::$table = ''; - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -102,7 +104,10 @@ class RoutinesController extends AbstractController $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute( + '/', + ['reload' => true, 'message' => __('No databases selected.')], + ); return null; } @@ -481,7 +486,7 @@ class RoutinesController extends AbstractController ); } - $this->render('database/routines/index', [ + $this->response->render('database/routines/index', [ 'db' => Current::$database, 'table' => Current::$table, 'has_any_routines' => $items !== [], diff --git a/src/Controllers/Database/SearchController.php b/src/Controllers/Database/SearchController.php index 110250c5e5..ac2f4ab799 100644 --- a/src/Controllers/Database/SearchController.php +++ b/src/Controllers/Database/SearchController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\Search; use PhpMyAdmin\DatabaseInterface; @@ -22,15 +22,14 @@ use PhpMyAdmin\Util; use function __; -class SearchController extends AbstractController +final class SearchController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -38,9 +37,9 @@ class SearchController extends AbstractController $GLOBALS['errorUrl'] ??= null; $GLOBALS['urlParams'] ??= null; - $this->addScriptFiles(['database/search.js', 'sql.js', 'makegrid.js']); + $this->response->addScriptFiles(['database/search.js', 'sql.js', 'makegrid.js']); - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -57,7 +56,7 @@ class SearchController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -74,7 +73,10 @@ class SearchController extends AbstractController return null; } - $this->render('error/simple', ['error_message' => $errorMessage, 'back_url' => $GLOBALS['errorUrl']]); + $this->response->render('error/simple', [ + 'error_message' => $errorMessage, + 'back_url' => $GLOBALS['errorUrl'], + ]); return null; } diff --git a/src/Controllers/Database/SqlAutoCompleteController.php b/src/Controllers/Database/SqlAutoCompleteController.php index 87034c4a38..f828a07b84 100644 --- a/src/Controllers/Database/SqlAutoCompleteController.php +++ b/src/Controllers/Database/SqlAutoCompleteController.php @@ -5,28 +5,25 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function sprintf; /** * Table/Column autocomplete in SQL editors. */ -class SqlAutoCompleteController extends AbstractController +final class SqlAutoCompleteController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, + private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi, private readonly Config $config, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/SqlController.php b/src/Controllers/Database/SqlController.php index d5111991f0..80c417d84a 100644 --- a/src/Controllers/Database/SqlController.php +++ b/src/Controllers/Database/SqlController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Http\Response; @@ -15,7 +15,6 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\SqlQueryForm; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -25,16 +24,14 @@ use function htmlspecialchars; /** * Database SQL executor */ -class SqlController extends AbstractController +class SqlController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private SqlQueryForm $sqlQueryForm, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly SqlQueryForm $sqlQueryForm, + private readonly PageSettings $pageSettings, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -43,13 +40,13 @@ class SqlController extends AbstractController $GLOBALS['back'] ??= null; $GLOBALS['errorUrl'] ??= null; - $this->addScriptFiles(['makegrid.js', 'vendor/jquery/jquery.uitablefilter.js', 'sql.js']); + $this->response->addScriptFiles(['makegrid.js', 'vendor/jquery/jquery.uitablefilter.js', 'sql.js']); $this->pageSettings->init('Sql'); $this->response->addHTML($this->pageSettings->getErrorHTML()); $this->response->addHTML($this->pageSettings->getHTML()); - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -68,7 +65,7 @@ class SqlController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } diff --git a/src/Controllers/Database/SqlFormatController.php b/src/Controllers/Database/SqlFormatController.php index 4916bd370b..482171eca3 100644 --- a/src/Controllers/Database/SqlFormatController.php +++ b/src/Controllers/Database/SqlFormatController.php @@ -4,16 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\SqlParser\Utils\Formatter; /** * Format SQL for SQL editors. */ -class SqlFormatController extends AbstractController +final class SqlFormatController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { /** @var string $query */ diff --git a/src/Controllers/Database/Structure/AddPrefixController.php b/src/Controllers/Database/Structure/AddPrefixController.php index b5675d0921..d4a232c38e 100644 --- a/src/Controllers/Database/Structure/AddPrefixController.php +++ b/src/Controllers/Database/Structure/AddPrefixController.php @@ -4,15 +4,20 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use function __; -final class AddPrefixController extends AbstractController +final class AddPrefixController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ @@ -31,7 +36,7 @@ final class AddPrefixController extends AbstractController } $this->response->disable(); - $this->render('database/structure/add_prefix', ['url_params' => $params]); + $this->response->render('database/structure/add_prefix', ['url_params' => $params]); return null; } diff --git a/src/Controllers/Database/Structure/AddPrefixTableController.php b/src/Controllers/Database/Structure/AddPrefixTableController.php index 230713117c..7bd114f7c7 100644 --- a/src/Controllers/Database/Structure/AddPrefixTableController.php +++ b/src/Controllers/Database/Structure/AddPrefixTableController.php @@ -4,26 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; -use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; -final class AddPrefixTableController extends AbstractController +final class AddPrefixTableController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private StructureController $structureController, + private readonly DatabaseInterface $dbi, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/CentralColumns/AddController.php b/src/Controllers/Database/Structure/CentralColumns/AddController.php index bd407f42be..efc58fa207 100644 --- a/src/Controllers/Database/Structure/CentralColumns/AddController.php +++ b/src/Controllers/Database/Structure/CentralColumns/AddController.php @@ -4,8 +4,8 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure\CentralColumns; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -13,21 +13,18 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use function __; use function is_array; -final class AddController extends AbstractController +final class AddController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private StructureController $structureController, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php b/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php index 420854d727..b838aaef94 100644 --- a/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php +++ b/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php @@ -4,8 +4,8 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure\CentralColumns; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\DatabaseInterface; @@ -13,21 +13,18 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use function __; use function is_array; -final class MakeConsistentController extends AbstractController +final class MakeConsistentController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private StructureController $structureController, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/CentralColumns/RemoveController.php b/src/Controllers/Database/Structure/CentralColumns/RemoveController.php index b101c660f3..7e485cbd28 100644 --- a/src/Controllers/Database/Structure/CentralColumns/RemoveController.php +++ b/src/Controllers/Database/Structure/CentralColumns/RemoveController.php @@ -4,29 +4,26 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure\CentralColumns; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use function __; use function is_array; -final class RemoveController extends AbstractController +final class RemoveController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private StructureController $structureController, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/ChangePrefixFormController.php b/src/Controllers/Database/Structure/ChangePrefixFormController.php index 657ca0c8ba..c034db49fd 100644 --- a/src/Controllers/Database/Structure/ChangePrefixFormController.php +++ b/src/Controllers/Database/Structure/ChangePrefixFormController.php @@ -4,15 +4,20 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use function __; -final class ChangePrefixFormController extends AbstractController +final class ChangePrefixFormController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ @@ -36,7 +41,10 @@ final class ChangePrefixFormController extends AbstractController } $this->response->disable(); - $this->render('database/structure/change_prefix_form', ['route' => $route, 'url_params' => $urlParams]); + $this->response->render('database/structure/change_prefix_form', [ + 'route' => $route, + 'url_params' => $urlParams, + ]); return null; } diff --git a/src/Controllers/Database/Structure/CopyFormController.php b/src/Controllers/Database/Structure/CopyFormController.php index 563d986622..00b4b5ae20 100644 --- a/src/Controllers/Database/Structure/CopyFormController.php +++ b/src/Controllers/Database/Structure/CopyFormController.php @@ -4,16 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use function __; -final class CopyFormController extends AbstractController +final class CopyFormController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ @@ -40,7 +45,7 @@ final class CopyFormController extends AbstractController } $this->response->disable(); - $this->render('database/structure/copy_form', [ + $this->response->render('database/structure/copy_form', [ 'url_params' => $urlParams, 'options' => $databasesList->getList(), ]); diff --git a/src/Controllers/Database/Structure/CopyTableController.php b/src/Controllers/Database/Structure/CopyTableController.php index 4ae08dc85b..1f26e26f16 100644 --- a/src/Controllers/Database/Structure/CopyTableController.php +++ b/src/Controllers/Database/Structure/CopyTableController.php @@ -4,28 +4,23 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Operations; -use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Table; -use PhpMyAdmin\Template; use PhpMyAdmin\UserPrivilegesFactory; -final class CopyTableController extends AbstractController +final class CopyTableController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Operations $operations, - private StructureController $structureController, + private readonly Operations $operations, + private readonly StructureController $structureController, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/CopyTableWithPrefixController.php b/src/Controllers/Database/Structure/CopyTableWithPrefixController.php index 98d1bc4561..7a6f85150a 100644 --- a/src/Controllers/Database/Structure/CopyTableWithPrefixController.php +++ b/src/Controllers/Database/Structure/CopyTableWithPrefixController.php @@ -4,27 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; -use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Table; -use PhpMyAdmin\Template; use function mb_strlen; use function mb_substr; -final class CopyTableWithPrefixController extends AbstractController +final class CopyTableWithPrefixController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private StructureController $structureController, - ) { - parent::__construct($response, $template); + public function __construct(private readonly StructureController $structureController) + { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/DropFormController.php b/src/Controllers/Database/Structure/DropFormController.php index cc25e835a2..256afcf84b 100644 --- a/src/Controllers/Database/Structure/DropFormController.php +++ b/src/Controllers/Database/Structure/DropFormController.php @@ -4,24 +4,22 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; use function __; use function htmlspecialchars; -final class DropFormController extends AbstractController +final class DropFormController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -62,7 +60,7 @@ final class DropFormController extends AbstractController $urlParams['selected'][] = $selectedValue; } - $this->render('database/structure/drop_form', [ + $this->response->render('database/structure/drop_form', [ 'url_params' => $urlParams, 'full_query' => $fullQuery, 'is_foreign_key_check' => ForeignKey::isCheckEnabled(), diff --git a/src/Controllers/Database/Structure/DropTableController.php b/src/Controllers/Database/Structure/DropTableController.php index 177da1ecc7..da04e3a839 100644 --- a/src/Controllers/Database/Structure/DropTableController.php +++ b/src/Controllers/Database/Structure/DropTableController.php @@ -5,30 +5,25 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\ConfigStorage\RelationCleanup; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; -use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; use function __; -final class DropTableController extends AbstractController +final class DropTableController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private RelationCleanup $relationCleanup, - private StructureController $structureController, + private readonly DatabaseInterface $dbi, + private readonly RelationCleanup $relationCleanup, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/EmptyFormController.php b/src/Controllers/Database/Structure/EmptyFormController.php index b116720b17..e9af3a2c93 100644 --- a/src/Controllers/Database/Structure/EmptyFormController.php +++ b/src/Controllers/Database/Structure/EmptyFormController.php @@ -4,18 +4,23 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; use function __; use function htmlspecialchars; -final class EmptyFormController extends AbstractController +final class EmptyFormController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ @@ -37,7 +42,7 @@ final class EmptyFormController extends AbstractController $urlParams['selected'][] = $selectedValue; } - $this->render('database/structure/empty_form', [ + $this->response->render('database/structure/empty_form', [ 'url_params' => $urlParams, 'full_query' => $fullQuery, 'is_foreign_key_check' => ForeignKey::isCheckEnabled(), diff --git a/src/Controllers/Database/Structure/EmptyTableController.php b/src/Controllers/Database/Structure/EmptyTableController.php index 64b561ec9c..183b626d4b 100644 --- a/src/Controllers/Database/Structure/EmptyTableController.php +++ b/src/Controllers/Database/Structure/EmptyTableController.php @@ -8,8 +8,8 @@ use PhpMyAdmin\Bookmarks\BookmarkRepository; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationCleanup; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\FlashMessages; @@ -26,18 +26,17 @@ use PhpMyAdmin\Utils\ForeignKey; use function __; -final class EmptyTableController extends AbstractController +final class EmptyTableController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private Relation $relation, - private RelationCleanup $relationCleanup, - private FlashMessages $flash, - private StructureController $structureController, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, + private readonly Relation $relation, + private readonly RelationCleanup $relationCleanup, + private readonly FlashMessages $flash, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -48,7 +47,7 @@ final class EmptyTableController extends AbstractController if ($multBtn !== __('Yes')) { $this->flash->addMessage('success', __('No change')); - $this->redirect('/database/structure', ['db' => Current::$database]); + $this->response->redirectToRoute('/database/structure', ['db' => Current::$database]); return null; } diff --git a/src/Controllers/Database/Structure/FavoriteTableController.php b/src/Controllers/Database/Structure/FavoriteTableController.php index d1e8137a46..0f4e484cc9 100644 --- a/src/Controllers/Database/Structure/FavoriteTableController.php +++ b/src/Controllers/Database/Structure/FavoriteTableController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Favorites\RecentFavoriteTable; @@ -29,15 +29,14 @@ use function json_encode; use function md5; use function sha1; -final class FavoriteTableController extends AbstractController +final class FavoriteTableController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Relation $relation, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/RealRowCountController.php b/src/Controllers/Database/Structure/RealRowCountController.php index 226f0aec06..56002eeef3 100644 --- a/src/Controllers/Database/Structure/RealRowCountController.php +++ b/src/Controllers/Database/Structure/RealRowCountController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -14,7 +14,6 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -23,15 +22,13 @@ use function __; /** * Handles request for real row count on database level view page. */ -final class RealRowCountController extends AbstractController +final class RealRowCountController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -43,7 +40,7 @@ final class RealRowCountController extends AbstractController 'table' => $_REQUEST['table'] ?? null, ]; - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } diff --git a/src/Controllers/Database/Structure/ReplacePrefixController.php b/src/Controllers/Database/Structure/ReplacePrefixController.php index c00ddbc7aa..e9e92868da 100644 --- a/src/Controllers/Database/Structure/ReplacePrefixController.php +++ b/src/Controllers/Database/Structure/ReplacePrefixController.php @@ -4,29 +4,24 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; -use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function mb_strlen; use function mb_substr; -final class ReplacePrefixController extends AbstractController +final class ReplacePrefixController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private StructureController $structureController, + private readonly DatabaseInterface $dbi, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/Structure/ShowCreateController.php b/src/Controllers/Database/Structure/ShowCreateController.php index 0c3bb930b8..881b1ae6ae 100644 --- a/src/Controllers/Database/Structure/ShowCreateController.php +++ b/src/Controllers/Database/Structure/ShowCreateController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -15,11 +15,13 @@ use PhpMyAdmin\Template; use function __; -final class ShowCreateController extends AbstractController +final class ShowCreateController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Database/StructureController.php b/src/Controllers/Database/StructureController.php index 6f9564c2fd..c67bbea4b7 100644 --- a/src/Controllers/Database/StructureController.php +++ b/src/Controllers/Database/StructureController.php @@ -8,7 +8,7 @@ use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -56,7 +56,7 @@ use function urlencode; /** * Handles database structure logic */ -final class StructureController extends AbstractController +final class StructureController implements InvocableController { /** @var int Number of tables */ private int $numTables = 0; @@ -79,17 +79,15 @@ final class StructureController extends AbstractController private ReplicationInfo $replicationInfo; public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, - private Replication $replication, - private DatabaseInterface $dbi, - private TrackingChecker $trackingChecker, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Relation $relation, + private readonly Replication $replication, + private readonly DatabaseInterface $dbi, + private readonly TrackingChecker $trackingChecker, + private readonly PageSettings $pageSettings, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); - $this->replicationInfo = new ReplicationInfo($this->dbi); } @@ -129,7 +127,7 @@ final class StructureController extends AbstractController $parameters = ['sort' => $_REQUEST['sort'] ?? null, 'sort_order' => $_REQUEST['sort_order'] ?? null]; - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -146,12 +144,12 @@ final class StructureController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } - $this->addScriptFiles(['database/structure.js', 'table/change.js']); + $this->response->addScriptFiles(['database/structure.js', 'table/change.js']); // Gets the database structure $this->getDatabaseInfo($request); @@ -160,7 +158,7 @@ final class StructureController extends AbstractController // If there are no tables, the user is redirected to the last page // having any. if ($this->totalNumTables > 0 && $this->position > $this->totalNumTables) { - $this->redirect('/database/structure', [ + $this->response->redirectToRoute('/database/structure', [ 'db' => Current::$database, 'pos' => max(0, $this->totalNumTables - $config->settings['MaxTableList']), 'reload' => 1, @@ -201,7 +199,7 @@ final class StructureController extends AbstractController $createTable = $this->template->render('database/create_table', ['db' => Current::$database]); } - $this->render('database/structure/index', [ + $this->response->render('database/structure/index', [ 'database' => Current::$database, 'has_tables' => $this->numTables > 0, 'list_navigator_html' => $listNavigator ?? '', diff --git a/src/Controllers/Database/TrackingController.php b/src/Controllers/Database/TrackingController.php index c6ceaa4da3..a926516123 100644 --- a/src/Controllers/Database/TrackingController.php +++ b/src/Controllers/Database/TrackingController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -17,7 +17,6 @@ use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Message; use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Tracking\Tracking; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -29,16 +28,14 @@ use function sprintf; /** * Tracking configuration for database. */ -class TrackingController extends AbstractController +final class TrackingController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Tracking $tracking, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Tracking $tracking, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -46,9 +43,9 @@ class TrackingController extends AbstractController $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; - $this->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'database/tracking.js']); + $this->response->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'database/tracking.js']); - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -65,7 +62,7 @@ class TrackingController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -107,7 +104,7 @@ class TrackingController extends AbstractController __('Tracking data deleted successfully.'), )->getDisplay()); } elseif ($request->getParsedBodyParam('submit_mult') === 'track') { - $this->render('create_tracking_version', [ + $this->response->render('create_tracking_version', [ 'route' => '/database/tracking', 'url_params' => $GLOBALS['urlParams'], 'last_version' => 0, @@ -134,7 +131,7 @@ class TrackingController extends AbstractController $this->response->addHTML('

' . __('No tables found in database.') . '

' . "\n"); if (! $isSystemSchema) { - $this->render('database/create_table', ['db' => Current::$database]); + $this->response->render('database/create_table', ['db' => Current::$database]); } return null; diff --git a/src/Controllers/DatabaseController.php b/src/Controllers/DatabaseController.php index a72174ead8..b8d6489983 100644 --- a/src/Controllers/DatabaseController.php +++ b/src/Controllers/DatabaseController.php @@ -8,13 +8,11 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class DatabaseController extends AbstractController +final class DatabaseController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private readonly DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/ErrorReportController.php b/src/Controllers/ErrorReportController.php index 5be1f83de5..ab80cae58c 100644 --- a/src/Controllers/ErrorReportController.php +++ b/src/Controllers/ErrorReportController.php @@ -28,16 +28,15 @@ use function time; /** * Handle error report submission */ -class ErrorReportController extends AbstractController +final class ErrorReportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private ErrorReport $errorReport, - private ErrorHandler $errorHandler, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly ErrorReport $errorReport, + private readonly ErrorHandler $errorHandler, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Export/CheckTimeOutController.php b/src/Controllers/Export/CheckTimeOutController.php index 95b5c12579..b79625a93e 100644 --- a/src/Controllers/Export/CheckTimeOutController.php +++ b/src/Controllers/Export/CheckTimeOutController.php @@ -4,12 +4,17 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Export; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; -final class CheckTimeOutController extends AbstractController +final class CheckTimeOutController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { diff --git a/src/Controllers/Export/ExportController.php b/src/Controllers/Export/ExportController.php index 1dc4ea5b4e..5aeaca34aa 100644 --- a/src/Controllers/Export/ExportController.php +++ b/src/Controllers/Export/ExportController.php @@ -6,8 +6,8 @@ namespace PhpMyAdmin\Controllers\Export; use PhpMyAdmin\Config; use PhpMyAdmin\Container\ContainerBuilder; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\ExportController as DatabaseExportController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\Encoding; @@ -24,7 +24,6 @@ use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sanitize; use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Statements\SelectStatement; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use Webmozart\Assert\Assert; @@ -38,11 +37,10 @@ use function is_array; use function register_shutdown_function; use function time; -final class ExportController extends AbstractController +final class ExportController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Export $export) + public function __construct(private readonly ResponseRenderer $response, private readonly Export $export) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -90,14 +88,14 @@ final class ExportController extends AbstractController $tableStructure = $request->getParsedBodyParam('table_structure'); $lockTables = $request->hasBodyParam('lock_tables'); - $this->addScriptFiles(['export_output.js']); + $this->response->addScriptFiles(['export_output.js']); $this->setGlobalsFromRequest($postParams); // sanitize this parameter which will be used below in a file inclusion $GLOBALS['what'] = Core::securePath($whatParam); - if (! $this->checkParameters(['what', 'export_type'])) { + if (! $this->response->checkParameters(['what', 'export_type'])) { return null; } diff --git a/src/Controllers/Export/TablesController.php b/src/Controllers/Export/TablesController.php index 732839127f..5af846ff2c 100644 --- a/src/Controllers/Export/TablesController.php +++ b/src/Controllers/Export/TablesController.php @@ -4,23 +4,20 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Export; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\ExportController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function __; -final class TablesController extends AbstractController +final class TablesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private ExportController $exportController, + private readonly ResponseRenderer $response, + private readonly ExportController $exportController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Export/Template/CreateController.php b/src/Controllers/Export/Template/CreateController.php index ff47cc055a..35fad9bc85 100644 --- a/src/Controllers/Export/Template/CreateController.php +++ b/src/Controllers/Export/Template/CreateController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Export\Template; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Export\Template as ExportTemplate; use PhpMyAdmin\Export\TemplateModel; use PhpMyAdmin\Http\Response; @@ -16,15 +16,14 @@ use PhpMyAdmin\Template; use function is_array; -final class CreateController extends AbstractController +final class CreateController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private TemplateModel $model, - private Relation $relation, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly TemplateModel $model, + private readonly Relation $relation, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Export/Template/DeleteController.php b/src/Controllers/Export/Template/DeleteController.php index 9ed9272cad..7426102fc8 100644 --- a/src/Controllers/Export/Template/DeleteController.php +++ b/src/Controllers/Export/Template/DeleteController.php @@ -6,22 +6,19 @@ namespace PhpMyAdmin\Controllers\Export\Template; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Export\TemplateModel; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class DeleteController extends AbstractController +final class DeleteController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private TemplateModel $model, - private Relation $relation, + private readonly ResponseRenderer $response, + private readonly TemplateModel $model, + private readonly Relation $relation, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Export/Template/LoadController.php b/src/Controllers/Export/Template/LoadController.php index 12e99041a0..7d494df24f 100644 --- a/src/Controllers/Export/Template/LoadController.php +++ b/src/Controllers/Export/Template/LoadController.php @@ -6,23 +6,20 @@ namespace PhpMyAdmin\Controllers\Export\Template; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Export\Template as ExportTemplate; use PhpMyAdmin\Export\TemplateModel; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class LoadController extends AbstractController +final class LoadController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private TemplateModel $model, - private Relation $relation, + private readonly ResponseRenderer $response, + private readonly TemplateModel $model, + private readonly Relation $relation, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Export/Template/UpdateController.php b/src/Controllers/Export/Template/UpdateController.php index bf71e6547d..1296ac94b6 100644 --- a/src/Controllers/Export/Template/UpdateController.php +++ b/src/Controllers/Export/Template/UpdateController.php @@ -6,23 +6,20 @@ namespace PhpMyAdmin\Controllers\Export\Template; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Export\Template as ExportTemplate; use PhpMyAdmin\Export\TemplateModel; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class UpdateController extends AbstractController +final class UpdateController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private TemplateModel $model, - private Relation $relation, + private readonly ResponseRenderer $response, + private readonly TemplateModel $model, + private readonly Relation $relation, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/GisDataEditorController.php b/src/Controllers/GisDataEditorController.php index 07ffaa1db0..67f7f7f81c 100644 --- a/src/Controllers/GisDataEditorController.php +++ b/src/Controllers/GisDataEditorController.php @@ -11,6 +11,8 @@ use PhpMyAdmin\Gis\GisFactory; use PhpMyAdmin\Gis\GisVisualization; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; +use PhpMyAdmin\Template; use function array_merge; use function in_array; @@ -22,8 +24,12 @@ use function trim; /** * Editor for Geometry data types. */ -class GisDataEditorController extends AbstractController +final class GisDataEditorController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response, private readonly Template $template) + { + } + private const GIS_TYPES = [ 'POINT', 'MULTIPOINT', diff --git a/src/Controllers/GitInfoController.php b/src/Controllers/GitInfoController.php index c620759a9a..eb3ff83807 100644 --- a/src/Controllers/GitInfoController.php +++ b/src/Controllers/GitInfoController.php @@ -9,16 +9,14 @@ use PhpMyAdmin\Git; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function strtotime; -final class GitInfoController extends AbstractController +final class GitInfoController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Config $config) + public function __construct(private readonly ResponseRenderer $response, private readonly Config $config) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -44,7 +42,7 @@ final class GitInfoController extends AbstractController $commit['author']['date'] = Util::localisedDate(strtotime($commit['author']['date'])); $commit['committer']['date'] = Util::localisedDate(strtotime($commit['committer']['date'])); - $this->render('home/git_info', $commit); + $this->response->render('home/git_info', $commit); return null; } diff --git a/src/Controllers/HomeController.php b/src/Controllers/HomeController.php index e8b30187c9..20e6f1d2ae 100644 --- a/src/Controllers/HomeController.php +++ b/src/Controllers/HomeController.php @@ -24,7 +24,6 @@ use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Select; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -42,7 +41,7 @@ use function sprintf; use const PHP_VERSION; use const SODIUM_CRYPTO_SECRETBOX_KEYBYTES; -class HomeController extends AbstractController +final class HomeController implements InvocableController { /** * @var array> @@ -51,14 +50,12 @@ class HomeController extends AbstractController private array $errors = []; public function __construct( - ResponseRenderer $response, - Template $template, - private Config $config, - private ThemeManager $themeManager, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Config $config, + private readonly ThemeManager $themeManager, + private readonly DatabaseInterface $dbi, private readonly ResponseFactory $responseFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -75,7 +72,7 @@ class HomeController extends AbstractController return null; } - $this->addScriptFiles(['home.js']); + $this->response->addScriptFiles(['home.js']); // This is for $cfg['ShowDatabasesNavigationAsTree'] = false; // See: https://github.com/phpmyadmin/phpmyadmin/issues/16520 @@ -220,7 +217,7 @@ class HomeController extends AbstractController $git = new Git($this->config->get('ShowGitRevision') ?? true); - $this->render('home/index', [ + $this->response->render('home/index', [ 'db' => Current::$database, 'table' => Current::$table, 'message' => $displayMessage ?? '', diff --git a/src/Controllers/Import/ImportController.php b/src/Controllers/Import/ImportController.php index 1c405f73fa..c68169b181 100644 --- a/src/Controllers/Import/ImportController.php +++ b/src/Controllers/Import/ImportController.php @@ -8,7 +8,7 @@ use PhpMyAdmin\Bookmarks\Bookmark; use PhpMyAdmin\Bookmarks\BookmarkRepository; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -24,7 +24,6 @@ use PhpMyAdmin\ParseAnalyze; use PhpMyAdmin\Plugins\Import\ImportFormat; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -48,17 +47,15 @@ use function preg_quote; use function preg_replace; use function time; -final class ImportController extends AbstractController +final class ImportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Import $import, - private Sql $sql, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Import $import, + private readonly Sql $sql, + private readonly DatabaseInterface $dbi, private readonly BookmarkRepository $bookmarkRepository, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Import/SimulateDmlController.php b/src/Controllers/Import/SimulateDmlController.php index b33290f98f..0d26308e34 100644 --- a/src/Controllers/Import/SimulateDmlController.php +++ b/src/Controllers/Import/SimulateDmlController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Import; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Import\SimulateDml; @@ -14,20 +14,15 @@ use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Statements\DeleteStatement; use PhpMyAdmin\SqlParser\Statements\UpdateStatement; use PhpMyAdmin\SqlParser\Utils\Query; -use PhpMyAdmin\Template; use function __; use function count; use function explode; -final class SimulateDmlController extends AbstractController +final class SimulateDmlController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private SimulateDml $simulateDml, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly SimulateDml $simulateDml) + { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Import/StatusController.php b/src/Controllers/Import/StatusController.php index 23544e41ab..af9ee11bb2 100644 --- a/src/Controllers/Import/StatusController.php +++ b/src/Controllers/Import/StatusController.php @@ -26,7 +26,7 @@ use function usleep; */ class StatusController implements InvocableController { - public function __construct(private Template $template) + public function __construct(private readonly Template $template) { } diff --git a/src/Controllers/LicenseController.php b/src/Controllers/LicenseController.php index a307653448..962a8929bb 100644 --- a/src/Controllers/LicenseController.php +++ b/src/Controllers/LicenseController.php @@ -9,6 +9,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use function __; use function is_readable; @@ -18,8 +19,12 @@ use function readfile; /** * Simple script to set correct charset for the license */ -class LicenseController extends AbstractController +final class LicenseController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { $this->response->disable(); diff --git a/src/Controllers/LintController.php b/src/Controllers/LintController.php index 15c14da1fa..96b76a138c 100644 --- a/src/Controllers/LintController.php +++ b/src/Controllers/LintController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Linter; +use PhpMyAdmin\ResponseRenderer; use function header; use function is_array; @@ -20,8 +21,12 @@ use function sprintf; /** * Represents the interface between the linter and the query editor. */ -class LintController extends AbstractController +final class LintController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { diff --git a/src/Controllers/LogoutController.php b/src/Controllers/LogoutController.php index 86caa5572c..4a91810922 100644 --- a/src/Controllers/LogoutController.php +++ b/src/Controllers/LogoutController.php @@ -9,9 +9,9 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Plugins\AuthenticationPluginFactory; use PhpMyAdmin\ResponseRenderer; -class LogoutController implements InvocableController +final class LogoutController implements InvocableController { - public function __construct(private AuthenticationPluginFactory $authPluginFactory) + public function __construct(private readonly AuthenticationPluginFactory $authPluginFactory) { } diff --git a/src/Controllers/Navigation/UpdateNavWidthConfigController.php b/src/Controllers/Navigation/UpdateNavWidthConfigController.php index dc45973392..63fd7b3787 100644 --- a/src/Controllers/Navigation/UpdateNavWidthConfigController.php +++ b/src/Controllers/Navigation/UpdateNavWidthConfigController.php @@ -5,21 +5,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Navigation; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function __; use function is_numeric; -final class UpdateNavWidthConfigController extends AbstractController +final class UpdateNavWidthConfigController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private readonly Config $config) + public function __construct(private readonly ResponseRenderer $response, private readonly Config $config) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/NavigationController.php b/src/Controllers/NavigationController.php index 6324400e6d..07c4ff7a87 100644 --- a/src/Controllers/NavigationController.php +++ b/src/Controllers/NavigationController.php @@ -11,7 +11,6 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Navigation\Navigation; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Utils\SessionCache; use function __; @@ -21,16 +20,14 @@ use function __; * * Displays server, database and table selection tree. */ -class NavigationController extends AbstractController +final class NavigationController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Navigation $navigation, - private Relation $relation, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly Navigation $navigation, + private readonly Relation $relation, + private readonly PageSettings $pageSettings, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/AddNewPrimaryController.php b/src/Controllers/Normalization/AddNewPrimaryController.php index 3116de24cc..bd7c184f71 100644 --- a/src/Controllers/Normalization/AddNewPrimaryController.php +++ b/src/Controllers/Normalization/AddNewPrimaryController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -12,19 +12,16 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivilegesFactory; -final class AddNewPrimaryController extends AbstractController +final class AddNewPrimaryController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Normalization $normalization, + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/CreateNewColumnController.php b/src/Controllers/Normalization/CreateNewColumnController.php index bf613043bf..521a5e1354 100644 --- a/src/Controllers/Normalization/CreateNewColumnController.php +++ b/src/Controllers/Normalization/CreateNewColumnController.php @@ -4,27 +4,24 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivilegesFactory; use function min; -final class CreateNewColumnController extends AbstractController +final class CreateNewColumnController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Normalization $normalization, + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php b/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php index 90d1aafdcd..70b36c3af8 100644 --- a/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php @@ -4,26 +4,26 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function in_array; -final class FirstStepController extends AbstractController +final class FirstStepController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null { - $this->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']); + $this->response->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']); $normalForm = '1nf'; $normalizeTo = $request->getParsedBodyParam('normalizeTo'); diff --git a/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php b/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php index 7f0d9cd95d..327f05e27b 100644 --- a/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php @@ -4,19 +4,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class FourthStepController extends AbstractController +final class FourthStepController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php b/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php index d3970f24b3..5122e3f66a 100644 --- a/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php @@ -4,19 +4,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class SecondStepController extends AbstractController +final class SecondStepController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php b/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php index 323e76412c..b9be0dfaf9 100644 --- a/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php @@ -4,19 +4,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class ThirdStepController extends AbstractController +final class ThirdStepController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/GetColumnsController.php b/src/Controllers/Normalization/GetColumnsController.php index 3979b275b9..f1e63709e5 100644 --- a/src/Controllers/Normalization/GetColumnsController.php +++ b/src/Controllers/Normalization/GetColumnsController.php @@ -4,22 +4,22 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function __; use function _pgettext; -final class GetColumnsController extends AbstractController +final class GetColumnsController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/MainController.php b/src/Controllers/Normalization/MainController.php index 4cbf23d516..8b48de5813 100644 --- a/src/Controllers/Normalization/MainController.php +++ b/src/Controllers/Normalization/MainController.php @@ -4,20 +4,28 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; /** * Normalization process (temporarily specific to 1NF). */ -class MainController extends AbstractController +final class MainController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { - $this->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']); - $this->render('table/normalization/normalization', ['db' => Current::$database, 'table' => Current::$table]); + $this->response->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']); + $this->response->render('table/normalization/normalization', [ + 'db' => Current::$database, + 'table' => Current::$table, + ]); return null; } diff --git a/src/Controllers/Normalization/MoveRepeatingGroup.php b/src/Controllers/Normalization/MoveRepeatingGroup.php index 4ddf9cf506..fc2064e8ae 100644 --- a/src/Controllers/Normalization/MoveRepeatingGroup.php +++ b/src/Controllers/Normalization/MoveRepeatingGroup.php @@ -4,19 +4,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class MoveRepeatingGroup extends AbstractController +final class MoveRepeatingGroup implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/PartialDependenciesController.php b/src/Controllers/Normalization/PartialDependenciesController.php index 42d1d5f016..45e4003230 100644 --- a/src/Controllers/Normalization/PartialDependenciesController.php +++ b/src/Controllers/Normalization/PartialDependenciesController.php @@ -4,19 +4,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class PartialDependenciesController extends AbstractController +final class PartialDependenciesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php b/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php index 9e67a799f6..e67241925f 100644 --- a/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php +++ b/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php @@ -4,21 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\SecondNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function json_decode; -final class CreateNewTablesController extends AbstractController +final class CreateNewTablesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php b/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php index f2eeee54f7..a761c98eea 100644 --- a/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php @@ -4,19 +4,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\SecondNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class FirstStepController extends AbstractController +final class FirstStepController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php b/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php index b97b4d38cb..de8c306a03 100644 --- a/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php +++ b/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php @@ -4,21 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\SecondNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function json_decode; -final class NewTablesController extends AbstractController +final class NewTablesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php b/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php index 6a2c796717..5f5fd6ecbe 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php @@ -4,21 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\ThirdNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function json_decode; -final class CreateNewTablesController extends AbstractController +final class CreateNewTablesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php b/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php index ad5dd8ca8a..5168d900b7 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php @@ -4,19 +4,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\ThirdNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class FirstStepController extends AbstractController +final class FirstStepController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php b/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php index b2de3dac3c..d6eaad6c0a 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php @@ -4,21 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Normalization\ThirdNormalForm; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function json_decode; -final class NewTablesController extends AbstractController +final class NewTablesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Normalization $normalization) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Normalization $normalization, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Operations/Database/CollationController.php b/src/Controllers/Operations/Database/CollationController.php index 958c2169e7..6212288fac 100644 --- a/src/Controllers/Operations/Database/CollationController.php +++ b/src/Controllers/Operations/Database/CollationController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Operations\Database; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -15,22 +15,19 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\Operations; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use function __; -final class CollationController extends AbstractController +final class CollationController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Operations $operations, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Operations $operations, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -49,7 +46,7 @@ final class CollationController extends AbstractController return null; } - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } diff --git a/src/Controllers/Operations/DatabaseController.php b/src/Controllers/Operations/DatabaseController.php index e6882922bc..761464d160 100644 --- a/src/Controllers/Operations/DatabaseController.php +++ b/src/Controllers/Operations/DatabaseController.php @@ -8,7 +8,7 @@ use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationCleanup; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -22,7 +22,6 @@ use PhpMyAdmin\Operations; use PhpMyAdmin\Plugins; use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivilegesFactory; use PhpMyAdmin\Util; @@ -33,19 +32,17 @@ use function mb_strtolower; /** * Handles miscellaneous database operations. */ -class DatabaseController extends AbstractController +final class DatabaseController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Operations $operations, - private UserPrivilegesFactory $userPrivilegesFactory, - private Relation $relation, - private RelationCleanup $relationCleanup, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Operations $operations, + private readonly UserPrivilegesFactory $userPrivilegesFactory, + private readonly Relation $relation, + private readonly RelationCleanup $relationCleanup, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -57,7 +54,7 @@ class DatabaseController extends AbstractController $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); - $this->addScriptFiles(['database/operations.js']); + $this->response->addScriptFiles(['database/operations.js']); $GLOBALS['sql_query'] = ''; @@ -227,7 +224,7 @@ class DatabaseController extends AbstractController $this->relation->setDbComment(Current::$database, $request->getParsedBodyParam('comment')); } - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -244,7 +241,7 @@ class DatabaseController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -296,7 +293,7 @@ class DatabaseController extends AbstractController } } - $this->render('database/operations/index', [ + $this->response->render('database/operations/index', [ 'message' => $oldMessage, 'db' => Current::$database, 'has_comment' => $relationParameters->columnCommentsFeature !== null, diff --git a/src/Controllers/Operations/TableController.php b/src/Controllers/Operations/TableController.php index 54d8c54913..6bcec0df3e 100644 --- a/src/Controllers/Operations/TableController.php +++ b/src/Controllers/Operations/TableController.php @@ -7,7 +7,7 @@ namespace PhpMyAdmin\Controllers\Operations; use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -24,7 +24,6 @@ use PhpMyAdmin\Query\Generator as QueryGenerator; use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\StorageEngine; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivilegesFactory; use PhpMyAdmin\Util; @@ -40,18 +39,16 @@ use function preg_replace; use function str_contains; use function urldecode; -class TableController extends AbstractController +final class TableController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Operations $operations, - private UserPrivilegesFactory $userPrivilegesFactory, - private Relation $relation, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Operations $operations, + private readonly UserPrivilegesFactory $userPrivilegesFactory, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -69,9 +66,9 @@ class TableController extends AbstractController $pmaTable = $this->dbi->getTable(Current::$database, Current::$table); - $this->addScriptFiles(['table/operations.js']); + $this->response->addScriptFiles(['table/operations.js']); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -90,7 +87,7 @@ class TableController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -104,7 +101,7 @@ class TableController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } @@ -488,7 +485,7 @@ class TableController extends AbstractController $relationParameters->relationFeature !== null, ); - $this->render('table/operations/index', [ + $this->response->render('table/operations/index', [ 'db' => Current::$database, 'table' => Current::$table, 'url_params' => $GLOBALS['urlParams'], diff --git a/src/Controllers/Operations/ViewController.php b/src/Controllers/Operations/ViewController.php index da5ccad5e1..3afcf62558 100644 --- a/src/Controllers/Operations/ViewController.php +++ b/src/Controllers/Operations/ViewController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Operations; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -16,7 +16,6 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -28,15 +27,13 @@ use function strval; /** * View manipulations */ -class ViewController extends AbstractController +final class ViewController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -45,9 +42,9 @@ class ViewController extends AbstractController $tableObject = $this->dbi->getTable(Current::$database, Current::$table); $GLOBALS['errorUrl'] ??= null; - $this->addScriptFiles(['table/operations.js']); + $this->response->addScriptFiles(['table/operations.js']); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -67,7 +64,7 @@ class ViewController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -81,7 +78,7 @@ class ViewController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } @@ -136,7 +133,7 @@ class ViewController extends AbstractController )); } - $this->render('table/operations/view', [ + $this->response->render('table/operations/view', [ 'db' => Current::$database, 'table' => Current::$table, 'url_params' => $GLOBALS['urlParams'], diff --git a/src/Controllers/PhpInfoController.php b/src/Controllers/PhpInfoController.php index 9fc3e3639d..289e03b686 100644 --- a/src/Controllers/PhpInfoController.php +++ b/src/Controllers/PhpInfoController.php @@ -10,6 +10,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use function phpinfo; @@ -20,8 +21,12 @@ use const INFO_MODULES; /** * phpinfo() wrapper to allow displaying only when configured to do so. */ -class PhpInfoController extends AbstractController +final class PhpInfoController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { $this->response->disable(); diff --git a/src/Controllers/Preferences/ExportController.php b/src/Controllers/Preferences/ExportController.php index 56271f7c21..8069ef17ab 100644 --- a/src/Controllers/Preferences/ExportController.php +++ b/src/Controllers/Preferences/ExportController.php @@ -8,13 +8,12 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Config\Forms\User\ExportForm; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\TwoFactor; use PhpMyAdmin\Url; @@ -23,17 +22,15 @@ use PhpMyAdmin\UserPreferences; use function define; use function ltrim; -class ExportController extends AbstractController +final class ExportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPreferences $userPreferences, - private Relation $relation, - private Config $config, - private ThemeManager $themeManager, + private readonly ResponseRenderer $response, + private readonly UserPreferences $userPreferences, + private readonly Relation $relation, + private readonly Config $config, + private readonly ThemeManager $themeManager, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +48,7 @@ class ExportController extends AbstractController if ($request->hasBodyParam('revert')) { // revert erroneous fields to their default values $formDisplay->fixErrors(); - $this->redirect('/preferences/export'); + $this->response->redirectToRoute('/preferences/export', []); return null; } @@ -79,7 +76,7 @@ class ExportController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $request->getRoute(), 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, @@ -87,7 +84,7 @@ class ExportController extends AbstractController $formErrors = $formDisplay->displayErrors(); - $this->render('preferences/forms/main', [ + $this->response->render('preferences/forms/main', [ 'error' => $GLOBALS['error'] instanceof Message ? $GLOBALS['error']->getDisplay() : '', 'has_errors' => $formDisplay->hasErrors(), 'errors' => $formErrors, diff --git a/src/Controllers/Preferences/FeaturesController.php b/src/Controllers/Preferences/FeaturesController.php index 3981b2d73f..f7b7f6b39d 100644 --- a/src/Controllers/Preferences/FeaturesController.php +++ b/src/Controllers/Preferences/FeaturesController.php @@ -8,13 +8,12 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Config\Forms\User\FeaturesForm; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\TwoFactor; use PhpMyAdmin\Url; @@ -23,17 +22,15 @@ use PhpMyAdmin\UserPreferences; use function define; use function ltrim; -class FeaturesController extends AbstractController +final class FeaturesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPreferences $userPreferences, - private Relation $relation, - private Config $config, - private ThemeManager $themeManager, + private readonly ResponseRenderer $response, + private readonly UserPreferences $userPreferences, + private readonly Relation $relation, + private readonly Config $config, + private readonly ThemeManager $themeManager, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +48,7 @@ class FeaturesController extends AbstractController if ($request->hasBodyParam('revert')) { // revert erroneous fields to their default values $formDisplay->fixErrors(); - $this->redirect('/preferences/features'); + $this->response->redirectToRoute('/preferences/features', []); return null; } @@ -79,7 +76,7 @@ class FeaturesController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $request->getRoute(), 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, @@ -87,7 +84,7 @@ class FeaturesController extends AbstractController $formErrors = $formDisplay->displayErrors(); - $this->render('preferences/forms/main', [ + $this->response->render('preferences/forms/main', [ 'error' => $GLOBALS['error'] instanceof Message ? $GLOBALS['error']->getDisplay() : '', 'has_errors' => $formDisplay->hasErrors(), 'errors' => $formErrors, diff --git a/src/Controllers/Preferences/ImportController.php b/src/Controllers/Preferences/ImportController.php index ee1fee7fad..08d9ca992c 100644 --- a/src/Controllers/Preferences/ImportController.php +++ b/src/Controllers/Preferences/ImportController.php @@ -8,13 +8,12 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Config\Forms\User\ImportForm; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\TwoFactor; use PhpMyAdmin\Url; @@ -23,17 +22,15 @@ use PhpMyAdmin\UserPreferences; use function define; use function ltrim; -class ImportController extends AbstractController +final class ImportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPreferences $userPreferences, - private Relation $relation, - private Config $config, - private ThemeManager $themeManager, + private readonly ResponseRenderer $response, + private readonly UserPreferences $userPreferences, + private readonly Relation $relation, + private readonly Config $config, + private readonly ThemeManager $themeManager, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +48,7 @@ class ImportController extends AbstractController if ($request->hasBodyParam('revert')) { // revert erroneous fields to their default values $formDisplay->fixErrors(); - $this->redirect('/preferences/import'); + $this->response->redirectToRoute('/preferences/import', []); return null; } @@ -79,7 +76,7 @@ class ImportController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $request->getRoute(), 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, @@ -87,7 +84,7 @@ class ImportController extends AbstractController $formErrors = $formDisplay->displayErrors(); - $this->render('preferences/forms/main', [ + $this->response->render('preferences/forms/main', [ 'error' => $GLOBALS['error'] instanceof Message ? $GLOBALS['error']->getDisplay() : '', 'has_errors' => $formDisplay->hasErrors(), 'errors' => $formErrors, diff --git a/src/Controllers/Preferences/MainPanelController.php b/src/Controllers/Preferences/MainPanelController.php index 7bcf4ed91d..fdc96b7002 100644 --- a/src/Controllers/Preferences/MainPanelController.php +++ b/src/Controllers/Preferences/MainPanelController.php @@ -8,13 +8,12 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Config\Forms\User\MainForm; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\TwoFactor; use PhpMyAdmin\Url; @@ -23,17 +22,15 @@ use PhpMyAdmin\UserPreferences; use function define; use function ltrim; -class MainPanelController extends AbstractController +final class MainPanelController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPreferences $userPreferences, - private Relation $relation, - private Config $config, - private ThemeManager $themeManager, + private readonly ResponseRenderer $response, + private readonly UserPreferences $userPreferences, + private readonly Relation $relation, + private readonly Config $config, + private readonly ThemeManager $themeManager, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +48,7 @@ class MainPanelController extends AbstractController if ($request->hasBodyParam('revert')) { // revert erroneous fields to their default values $formDisplay->fixErrors(); - $this->redirect('/preferences/main-panel'); + $this->response->redirectToRoute('/preferences/main-panel', []); return null; } @@ -79,7 +76,7 @@ class MainPanelController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $request->getRoute(), 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, @@ -87,7 +84,7 @@ class MainPanelController extends AbstractController $formErrors = $formDisplay->displayErrors(); - $this->render('preferences/forms/main', [ + $this->response->render('preferences/forms/main', [ 'error' => $GLOBALS['error'] instanceof Message ? $GLOBALS['error']->getDisplay() : '', 'has_errors' => $formDisplay->hasErrors(), 'errors' => $formErrors, diff --git a/src/Controllers/Preferences/ManageController.php b/src/Controllers/Preferences/ManageController.php index a815c68ab5..355359f253 100644 --- a/src/Controllers/Preferences/ManageController.php +++ b/src/Controllers/Preferences/ManageController.php @@ -8,14 +8,13 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Config\Forms\User\UserFormList; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\File; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\UserPreferences; use PhpMyAdmin\Util; @@ -44,17 +43,15 @@ use const UPLOAD_ERR_OK; /** * User preferences management page. */ -class ManageController extends AbstractController +final class ManageController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPreferences $userPreferences, - private Relation $relation, - private Config $config, - private ThemeManager $themeManager, + private readonly ResponseRenderer $response, + private readonly UserPreferences $userPreferences, + private readonly Relation $relation, + private readonly Config $config, + private readonly ThemeManager $themeManager, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -169,13 +166,13 @@ class ManageController extends AbstractController // mimic original form and post json in a hidden field $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $route, 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, ]); - $this->render('preferences/manage/error', [ + $this->response->render('preferences/manage/error', [ 'form_errors' => $formDisplay->displayErrors(), 'json' => $json, 'import_merge' => $request->getParsedBodyParam('import_merge'), @@ -245,7 +242,7 @@ class ManageController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $route, 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, @@ -259,7 +256,7 @@ class ManageController extends AbstractController $GLOBALS['error']->getDisplay(); } - $this->render('preferences/manage/main', [ + $this->response->render('preferences/manage/main', [ 'error' => $GLOBALS['error'], 'max_upload_size' => Config::getInstance()->get('max_upload_size'), 'exists_setup_and_not_exists_config' => @file_exists(ROOT_PATH . 'setup/index.php') diff --git a/src/Controllers/Preferences/NavigationController.php b/src/Controllers/Preferences/NavigationController.php index cc0e4ae320..e11b055278 100644 --- a/src/Controllers/Preferences/NavigationController.php +++ b/src/Controllers/Preferences/NavigationController.php @@ -8,13 +8,12 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Config\Forms\User\NaviForm; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\TwoFactor; use PhpMyAdmin\Url; @@ -23,17 +22,15 @@ use PhpMyAdmin\UserPreferences; use function define; use function ltrim; -class NavigationController extends AbstractController +final class NavigationController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPreferences $userPreferences, - private Relation $relation, - private Config $config, - private ThemeManager $themeManager, + private readonly ResponseRenderer $response, + private readonly UserPreferences $userPreferences, + private readonly Relation $relation, + private readonly Config $config, + private readonly ThemeManager $themeManager, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +48,7 @@ class NavigationController extends AbstractController if ($request->hasBodyParam('revert')) { // revert erroneous fields to their default values $formDisplay->fixErrors(); - $this->redirect('/preferences/navigation'); + $this->response->redirectToRoute('/preferences/navigation', []); return null; } @@ -79,7 +76,7 @@ class NavigationController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $request->getRoute(), 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, @@ -87,7 +84,7 @@ class NavigationController extends AbstractController $formErrors = $formDisplay->displayErrors(); - $this->render('preferences/forms/main', [ + $this->response->render('preferences/forms/main', [ 'error' => $GLOBALS['error'] instanceof Message ? $GLOBALS['error']->getDisplay() : '', 'has_errors' => $formDisplay->hasErrors(), 'errors' => $formErrors, diff --git a/src/Controllers/Preferences/SqlController.php b/src/Controllers/Preferences/SqlController.php index b66c29ed65..f443b730e7 100644 --- a/src/Controllers/Preferences/SqlController.php +++ b/src/Controllers/Preferences/SqlController.php @@ -8,13 +8,12 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Config\ConfigFile; use PhpMyAdmin\Config\Forms\User\SqlForm; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\TwoFactor; use PhpMyAdmin\Url; @@ -23,17 +22,15 @@ use PhpMyAdmin\UserPreferences; use function define; use function ltrim; -class SqlController extends AbstractController +final class SqlController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPreferences $userPreferences, - private Relation $relation, - private Config $config, - private ThemeManager $themeManager, + private readonly ResponseRenderer $response, + private readonly UserPreferences $userPreferences, + private readonly Relation $relation, + private readonly Config $config, + private readonly ThemeManager $themeManager, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +48,7 @@ class SqlController extends AbstractController if ($request->hasBodyParam('revert')) { // revert erroneous fields to their default values $formDisplay->fixErrors(); - $this->redirect('/preferences/sql'); + $this->response->redirectToRoute('/preferences/sql', []); return null; } @@ -79,7 +76,7 @@ class SqlController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $request->getRoute(), 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, @@ -87,7 +84,7 @@ class SqlController extends AbstractController $formErrors = $formDisplay->displayErrors(); - $this->render('preferences/forms/main', [ + $this->response->render('preferences/forms/main', [ 'error' => $GLOBALS['error'] instanceof Message ? $GLOBALS['error']->getDisplay() : '', 'has_errors' => $formDisplay->hasErrors(), 'errors' => $formErrors, diff --git a/src/Controllers/Preferences/TwoFactorController.php b/src/Controllers/Preferences/TwoFactorController.php index 9915a84afa..57868c2a53 100644 --- a/src/Controllers/Preferences/TwoFactorController.php +++ b/src/Controllers/Preferences/TwoFactorController.php @@ -6,30 +6,28 @@ namespace PhpMyAdmin\Controllers\Preferences; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\TwoFactor; use function __; use function count; use function define; -class TwoFactorController extends AbstractController +final class TwoFactorController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Relation $relation) + public function __construct(private readonly ResponseRenderer $response, private readonly Relation $relation) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { $relationParameters = $this->relation->getRelationParameters(); - $this->render('preferences/header', [ + $this->response->render('preferences/header', [ 'route' => $request->getRoute(), 'is_saved' => $request->hasQueryParam('saved'), 'has_config_storage' => $relationParameters->userPreferencesFeature !== null, @@ -39,7 +37,7 @@ class TwoFactorController extends AbstractController if ($request->hasBodyParam('2fa_remove')) { if (! $twoFactor->check($request, true)) { - $this->render('preferences/two_factor/confirm', ['form' => $twoFactor->render($request)]); + $this->response->render('preferences/two_factor/confirm', ['form' => $twoFactor->render($request)]); return null; } @@ -50,7 +48,7 @@ class TwoFactorController extends AbstractController ); } elseif ($request->hasBodyParam('2fa_configure')) { if (! $twoFactor->configure($request, $request->getParsedBodyParam('2fa_configure'))) { - $this->render('preferences/two_factor/configure', [ + $this->response->render('preferences/two_factor/configure', [ 'form' => $twoFactor->setup($request), 'configure' => $request->getParsedBodyParam('2fa_configure'), ]); @@ -64,7 +62,7 @@ class TwoFactorController extends AbstractController } $backend = $twoFactor->getBackend(); - $this->render('preferences/two_factor/main', [ + $this->response->render('preferences/two_factor/main', [ 'enabled' => $twoFactor->isWritable(), 'num_backends' => count($twoFactor->getAvailable()), 'backend_id' => $backend::$id, diff --git a/src/Controllers/RecentTablesListController.php b/src/Controllers/RecentTablesListController.php index b80c4e2d77..b0538284c0 100644 --- a/src/Controllers/RecentTablesListController.php +++ b/src/Controllers/RecentTablesListController.php @@ -8,9 +8,14 @@ use PhpMyAdmin\Favorites\RecentFavoriteTables; use PhpMyAdmin\Favorites\TableType; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; -final class RecentTablesListController extends AbstractController +final class RecentTablesListController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { diff --git a/src/Controllers/SchemaExportController.php b/src/Controllers/SchemaExportController.php index f096093461..e9c8fda199 100644 --- a/src/Controllers/SchemaExportController.php +++ b/src/Controllers/SchemaExportController.php @@ -21,9 +21,9 @@ use function mb_strlen; /** * Schema export handler */ -class SchemaExportController implements InvocableController +final class SchemaExportController implements InvocableController { - public function __construct(private Export $export, private ResponseRenderer $response) + public function __construct(private readonly Export $export, private readonly ResponseRenderer $response) { } diff --git a/src/Controllers/Server/BinlogController.php b/src/Controllers/Server/BinlogController.php index e9c265ad59..bca545975f 100644 --- a/src/Controllers/Server/BinlogController.php +++ b/src/Controllers/Server/BinlogController.php @@ -5,14 +5,13 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -21,7 +20,7 @@ use function array_key_exists; /** * Handles viewing binary logs */ -final class BinlogController extends AbstractController +final class BinlogController implements InvocableController { /** * binary log files @@ -30,10 +29,8 @@ final class BinlogController extends AbstractController */ private array $binaryLogs; - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); - $this->binaryLogs = $this->dbi->fetchResult('SHOW MASTER LOGS', 'Log_name'); } @@ -86,7 +83,7 @@ final class BinlogController extends AbstractController $values = $result->fetchAllAssoc(); - $this->render('server/binlog/index', [ + $this->response->render('server/binlog/index', [ 'url_params' => $urlParams, 'binary_logs' => $this->binaryLogs, 'log' => $log, diff --git a/src/Controllers/Server/CollationsController.php b/src/Controllers/Server/CollationsController.php index b67184259e..e2681ce693 100644 --- a/src/Controllers/Server/CollationsController.php +++ b/src/Controllers/Server/CollationsController.php @@ -8,18 +8,17 @@ use PhpMyAdmin\Charsets; use PhpMyAdmin\Charsets\Charset; use PhpMyAdmin\Charsets\Collation; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; /** * Handles viewing character sets and collations */ -class CollationsController extends AbstractController +final class CollationsController implements InvocableController { /** @var array */ private array $charsets; @@ -32,14 +31,11 @@ class CollationsController extends AbstractController * @param array>|null $collations */ public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, array|null $charsets = null, array|null $collations = null, ) { - parent::__construct($response, $template); - $config = Config::getInstance(); $this->charsets = $charsets ?? Charsets::getCharsets($this->dbi, $config->selectedServer['DisableIS']); $this->collations = $collations ?? Charsets::getCollations($this->dbi, $config->selectedServer['DisableIS']); @@ -71,7 +67,7 @@ class CollationsController extends AbstractController ]; } - $this->render('server/collations/index', ['charsets' => $charsets]); + $this->response->render('server/collations/index', ['charsets' => $charsets]); return null; } diff --git a/src/Controllers/Server/Databases/CreateController.php b/src/Controllers/Server/Databases/CreateController.php index 2d0095ade0..b08160aab8 100644 --- a/src/Controllers/Server/Databases/CreateController.php +++ b/src/Controllers/Server/Databases/CreateController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Databases; use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; @@ -14,7 +14,6 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -25,11 +24,10 @@ use function is_string; use function mb_strtolower; use function str_contains; -final class CreateController extends AbstractController +final class CreateController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Server/Databases/DestroyController.php b/src/Controllers/Server/Databases/DestroyController.php index 93bbaf9404..a1d72ef55d 100644 --- a/src/Controllers/Server/Databases/DestroyController.php +++ b/src/Controllers/Server/Databases/DestroyController.php @@ -6,13 +6,12 @@ namespace PhpMyAdmin\Controllers\Server\Databases; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\RelationCleanup; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivilegesFactory; @@ -23,17 +22,15 @@ use function _ngettext; use function count; use function is_array; -final class DestroyController extends AbstractController +final class DestroyController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private Transformations $transformations, - private RelationCleanup $relationCleanup, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly Transformations $transformations, + private readonly RelationCleanup $relationCleanup, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Server/DatabasesController.php b/src/Controllers/Server/DatabasesController.php index 2268e59ea6..74a23e1bb1 100644 --- a/src/Controllers/Server/DatabasesController.php +++ b/src/Controllers/Server/DatabasesController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\ConnectionType; @@ -16,7 +16,6 @@ use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\Replication\ReplicationInfo; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivilegesFactory; use PhpMyAdmin\Util; @@ -32,7 +31,7 @@ use function strtolower; /** * Handles viewing and creating and deleting databases */ -class DatabasesController extends AbstractController +final class DatabasesController implements InvocableController { /** @var mixed[] array of database details */ private array $databases = []; @@ -61,12 +60,10 @@ class DatabasesController extends AbstractController ]; public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -86,7 +83,7 @@ class DatabasesController extends AbstractController Assert::string($sortOrder); $this->sortOrder = strtolower($sortOrder) !== 'desc' ? 'asc' : 'desc'; - $this->addScriptFiles(['server/databases.js']); + $this->response->addScriptFiles(['server/databases.js']); $GLOBALS['errorUrl'] = Url::getFromRoute('/'); if ($this->dbi->isSuperUser()) { @@ -150,7 +147,7 @@ class DatabasesController extends AbstractController $headerStatistics = $this->getStatisticsColumns(); - $this->render('server/databases/index', [ + $this->response->render('server/databases/index', [ 'is_create_database_shown' => $config->settings['ShowCreateDb'], 'has_create_database_privileges' => $userPrivileges->isCreateDatabase, 'has_statistics' => $this->hasStatistics, diff --git a/src/Controllers/Server/EnginesController.php b/src/Controllers/Server/EnginesController.php index 0977f44edf..22a3fb4ffb 100644 --- a/src/Controllers/Server/EnginesController.php +++ b/src/Controllers/Server/EnginesController.php @@ -4,23 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\StorageEngine; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; /** * Handles viewing storage engine details */ -class EnginesController extends AbstractController +final class EnginesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -31,7 +29,7 @@ class EnginesController extends AbstractController $this->dbi->selectDb('mysql'); } - $this->render('server/engines/index', ['engines' => StorageEngine::getStorageEngines()]); + $this->response->render('server/engines/index', ['engines' => StorageEngine::getStorageEngines()]); return null; } diff --git a/src/Controllers/Server/ExportController.php b/src/Controllers/Server/ExportController.php index 0ebaf3b323..ccd577879d 100644 --- a/src/Controllers/Server/ExportController.php +++ b/src/Controllers/Server/ExportController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Export\Options; @@ -14,22 +14,19 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use function __; use function array_merge; -final class ExportController extends AbstractController +final class ExportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Options $export, - private DatabaseInterface $dbi, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly Options $export, + private readonly DatabaseInterface $dbi, + private readonly PageSettings $pageSettings, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -47,7 +44,7 @@ final class ExportController extends AbstractController $pageSettingsErrorHtml = $this->pageSettings->getErrorHTML(); $pageSettingsHtml = $this->pageSettings->getHTML(); - $this->addScriptFiles(['export.js']); + $this->response->addScriptFiles(['export.js']); $GLOBALS['select_item'] = $GLOBALS['tmp_select'] ?? ''; $databases = $this->export->getDatabasesForSelectOptions($GLOBALS['select_item']); @@ -86,7 +83,7 @@ final class ExportController extends AbstractController $exportList, ); - $this->render('server/export/index', array_merge($options, [ + $this->response->render('server/export/index', array_merge($options, [ 'page_settings_error_html' => $pageSettingsErrorHtml, 'page_settings_html' => $pageSettingsHtml, 'databases' => $databases, diff --git a/src/Controllers/Server/ImportController.php b/src/Controllers/Server/ImportController.php index 2ef1ee8ce0..a221bf5a71 100644 --- a/src/Controllers/Server/ImportController.php +++ b/src/Controllers/Server/ImportController.php @@ -7,7 +7,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Encoding; @@ -19,7 +19,6 @@ use PhpMyAdmin\Import\ImportSettings; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -27,15 +26,13 @@ use PhpMyAdmin\Utils\ForeignKey; use function __; use function is_numeric; -final class ImportController extends AbstractController +final class ImportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly PageSettings $pageSettings, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -47,7 +44,7 @@ final class ImportController extends AbstractController $pageSettingsErrorHtml = $this->pageSettings->getErrorHTML(); $pageSettingsHtml = $this->pageSettings->getHTML(); - $this->addScriptFiles(['import.js']); + $this->response->addScriptFiles(['import.js']); $GLOBALS['errorUrl'] = Url::getFromRoute('/'); if ($this->dbi->isSuperUser()) { @@ -91,7 +88,7 @@ final class ImportController extends AbstractController $isAllowInterruptChecked = Plugins::checkboxCheck('Import', 'allow_interrupt'); $maxUploadSize = (int) $config->get('max_upload_size'); - $this->render('server/import/index', [ + $this->response->render('server/import/index', [ 'page_settings_error_html' => $pageSettingsErrorHtml, 'page_settings_html' => $pageSettingsHtml, 'upload_id' => $uploadId, diff --git a/src/Controllers/Server/PluginsController.php b/src/Controllers/Server/PluginsController.php index 746832ad41..da79b628f6 100644 --- a/src/Controllers/Server/PluginsController.php +++ b/src/Controllers/Server/PluginsController.php @@ -4,13 +4,12 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Plugins; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use function array_keys; @@ -21,15 +20,13 @@ use function preg_replace; /** * Handles viewing server plugin details */ -class PluginsController extends AbstractController +final class PluginsController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Plugins $plugins, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Plugins $plugins, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -40,7 +37,7 @@ class PluginsController extends AbstractController $this->dbi->selectDb('mysql'); } - $this->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'server/plugins.js']); + $this->response->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'server/plugins.js']); $plugins = []; $serverPlugins = $this->plugins->getAll(); @@ -59,7 +56,7 @@ class PluginsController extends AbstractController ); } - $this->render('server/plugins/index', ['plugins' => $plugins, 'clean_types' => $cleanTypes]); + $this->response->render('server/plugins/index', ['plugins' => $plugins, 'clean_types' => $cleanTypes]); return null; } diff --git a/src/Controllers/Server/Privileges/AccountLockController.php b/src/Controllers/Server/Privileges/AccountLockController.php index 81ec452757..5ddcc6bf04 100644 --- a/src/Controllers/Server/Privileges/AccountLockController.php +++ b/src/Controllers/Server/Privileges/AccountLockController.php @@ -5,22 +5,22 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Privileges; use Fig\Http\Message\StatusCodeInterface; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Privileges\AccountLocking; -use PhpMyAdmin\Template; use Throwable; use function __; -final class AccountLockController extends AbstractController +final class AccountLockController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private AccountLocking $accountLocking) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly AccountLocking $accountLocking, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Server/Privileges/AccountUnlockController.php b/src/Controllers/Server/Privileges/AccountUnlockController.php index bad69bf071..5b68f9a268 100644 --- a/src/Controllers/Server/Privileges/AccountUnlockController.php +++ b/src/Controllers/Server/Privileges/AccountUnlockController.php @@ -5,22 +5,22 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Privileges; use Fig\Http\Message\StatusCodeInterface; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Privileges\AccountLocking; -use PhpMyAdmin\Template; use Throwable; use function __; -final class AccountUnlockController extends AbstractController +final class AccountUnlockController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private AccountLocking $accountLocking) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly AccountLocking $accountLocking, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Server/PrivilegesController.php b/src/Controllers/Server/PrivilegesController.php index be09637ace..fa3fd4b107 100644 --- a/src/Controllers/Server/PrivilegesController.php +++ b/src/Controllers/Server/PrivilegesController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationCleanup; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; @@ -31,16 +31,15 @@ use function urlencode; /** * Server privileges and users manipulations. */ -class PrivilegesController extends AbstractController +final class PrivilegesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -55,7 +54,7 @@ class PrivilegesController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); - $this->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); + $this->response->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); $relationCleanup = new RelationCleanup($this->dbi, $this->relation); $serverPrivileges = new Privileges( @@ -69,7 +68,7 @@ class PrivilegesController extends AbstractController $this->response->addHTML('
'); if ($relationParameters->configurableMenusFeature !== null && ! $request->isAjax()) { - $this->render('server/privileges/subnav', [ + $this->response->render('server/privileges/subnav', [ 'active' => 'privileges', 'is_super_user' => $this->dbi->isSuperUser(), ]); @@ -101,7 +100,7 @@ class PrivilegesController extends AbstractController $isCreateUser = $this->dbi->isCreateUser(); if (! $this->dbi->isSuperUser() && ! $isGrantUser && ! $isCreateUser) { - $this->render('server/sub_page_header', ['type' => 'privileges', 'is_image' => false]); + $this->response->render('server/sub_page_header', ['type' => 'privileges', 'is_image' => false]); $this->response->addHTML( Message::error(__('No Privileges')) ->getDisplay(), diff --git a/src/Controllers/Server/ReplicationController.php b/src/Controllers/Server/ReplicationController.php index 82bc0afecc..782a18bc2f 100644 --- a/src/Controllers/Server/ReplicationController.php +++ b/src/Controllers/Server/ReplicationController.php @@ -7,14 +7,13 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Replication\ReplicationGui; use PhpMyAdmin\Replication\ReplicationInfo; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use function is_array; @@ -22,15 +21,13 @@ use function is_array; /** * Server replications */ -class ReplicationController extends AbstractController +final class ReplicationController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private ReplicationGui $replicationGui, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly ReplicationGui $replicationGui, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -56,7 +53,7 @@ class ReplicationController extends AbstractController $primaryInfo = $replicationInfo->getPrimaryInfo(); $replicaInfo = $replicationInfo->getReplicaInfo(); - $this->addScriptFiles(['server/privileges.js', 'replication.js', 'vendor/zxcvbn-ts.js']); + $this->response->addScriptFiles(['server/privileges.js', 'replication.js', 'vendor/zxcvbn-ts.js']); $urlParams = $request->getParsedBodyParam('url_params'); if (is_array($urlParams)) { @@ -122,7 +119,7 @@ class ReplicationController extends AbstractController } } - $this->render('server/replication/index', [ + $this->response->render('server/replication/index', [ 'url_params' => $GLOBALS['urlParams'], 'is_super_user' => $this->dbi->isSuperUser(), 'error_messages' => $errorMessages, diff --git a/src/Controllers/Server/ShowEngineController.php b/src/Controllers/Server/ShowEngineController.php index 9be262cf71..b3a12eabad 100644 --- a/src/Controllers/Server/ShowEngineController.php +++ b/src/Controllers/Server/ShowEngineController.php @@ -4,13 +4,12 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\StorageEngine; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use function is_array; @@ -19,14 +18,13 @@ use function is_string; /** * Displays details about a given Storage Engine. */ -final class ShowEngineController extends AbstractController +final class ShowEngineController implements InvocableController { private string $engine = ''; private string $page = ''; - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -54,7 +52,7 @@ final class ShowEngineController extends AbstractController ]; } - $this->render('server/engines/show', ['engine' => $engine, 'page' => $this->page]); + $this->response->render('server/engines/show', ['engine' => $engine, 'page' => $this->page]); return null; } diff --git a/src/Controllers/Server/SqlController.php b/src/Controllers/Server/SqlController.php index 459feb919a..b63af0d444 100644 --- a/src/Controllers/Server/SqlController.php +++ b/src/Controllers/Server/SqlController.php @@ -5,35 +5,32 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\SqlQueryForm; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; /** * Server SQL executor */ -class SqlController extends AbstractController +final class SqlController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private SqlQueryForm $sqlQueryForm, - private DatabaseInterface $dbi, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly SqlQueryForm $sqlQueryForm, + private readonly DatabaseInterface $dbi, + private readonly PageSettings $pageSettings, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; - $this->addScriptFiles(['makegrid.js', 'vendor/jquery/jquery.uitablefilter.js', 'sql.js']); + $this->response->addScriptFiles(['makegrid.js', 'vendor/jquery/jquery.uitablefilter.js', 'sql.js']); $this->pageSettings->init('Sql'); $this->response->addHTML($this->pageSettings->getErrorHTML()); diff --git a/src/Controllers/Server/Status/AbstractController.php b/src/Controllers/Server/Status/AbstractController.php index cce27c8514..4835d302b7 100644 --- a/src/Controllers/Server/Status/AbstractController.php +++ b/src/Controllers/Server/Status/AbstractController.php @@ -4,15 +4,16 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; -use PhpMyAdmin\Controllers\AbstractController as Controller; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; use PhpMyAdmin\Template; -abstract class AbstractController extends Controller +abstract class AbstractController { - public function __construct(ResponseRenderer $response, Template $template, protected Data $data) - { - parent::__construct($response, $template); + public function __construct( + protected readonly ResponseRenderer $response, + protected readonly Template $template, + protected readonly Data $data, + ) { } } diff --git a/src/Controllers/Server/Status/AdvisorController.php b/src/Controllers/Server/Status/AdvisorController.php index 689d365dc5..7970bdbece 100644 --- a/src/Controllers/Server/Status/AdvisorController.php +++ b/src/Controllers/Server/Status/AdvisorController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; use PhpMyAdmin\Advisory\Advisor; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; @@ -14,10 +15,14 @@ use PhpMyAdmin\Template; /** * Displays the advisor feature */ -class AdvisorController extends AbstractController +final class AdvisorController extends AbstractController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, Data $data, private Advisor $advisor) - { + public function __construct( + ResponseRenderer $response, + Template $template, + Data $data, + private readonly Advisor $advisor, + ) { parent::__construct($response, $template, $data); } @@ -28,7 +33,7 @@ class AdvisorController extends AbstractController $data = $this->advisor->run(); } - $this->render('server/status/advisor/index', ['data' => $data]); + $this->response->render('server/status/advisor/index', ['data' => $data]); return null; } diff --git a/src/Controllers/Server/Status/Monitor/ChartingDataController.php b/src/Controllers/Server/Status/Monitor/ChartingDataController.php index fc09638ef1..42ce3d7107 100644 --- a/src/Controllers/Server/Status/Monitor/ChartingDataController.php +++ b/src/Controllers/Server/Status/Monitor/ChartingDataController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status\Monitor; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -14,14 +15,14 @@ use PhpMyAdmin\Server\Status\Monitor; use PhpMyAdmin\Template; use PhpMyAdmin\Url; -final class ChartingDataController extends AbstractController +final class ChartingDataController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private Monitor $monitor, - private DatabaseInterface $dbi, + private readonly Monitor $monitor, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } diff --git a/src/Controllers/Server/Status/Monitor/GeneralLogController.php b/src/Controllers/Server/Status/Monitor/GeneralLogController.php index 867cc4980a..9d294c4030 100644 --- a/src/Controllers/Server/Status/Monitor/GeneralLogController.php +++ b/src/Controllers/Server/Status/Monitor/GeneralLogController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status\Monitor; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -14,14 +15,14 @@ use PhpMyAdmin\Server\Status\Monitor; use PhpMyAdmin\Template; use PhpMyAdmin\Url; -final class GeneralLogController extends AbstractController +final class GeneralLogController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private Monitor $monitor, - private DatabaseInterface $dbi, + private readonly Monitor $monitor, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } diff --git a/src/Controllers/Server/Status/Monitor/LogVarsController.php b/src/Controllers/Server/Status/Monitor/LogVarsController.php index 4df5e4fa2e..06dfbbd612 100644 --- a/src/Controllers/Server/Status/Monitor/LogVarsController.php +++ b/src/Controllers/Server/Status/Monitor/LogVarsController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status\Monitor; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -14,14 +15,14 @@ use PhpMyAdmin\Server\Status\Monitor; use PhpMyAdmin\Template; use PhpMyAdmin\Url; -final class LogVarsController extends AbstractController +final class LogVarsController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private Monitor $monitor, - private DatabaseInterface $dbi, + private readonly Monitor $monitor, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } diff --git a/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php b/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php index 843e3b2ac7..0b2fac9494 100644 --- a/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php +++ b/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status\Monitor; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -14,14 +15,14 @@ use PhpMyAdmin\Server\Status\Monitor; use PhpMyAdmin\Template; use PhpMyAdmin\Url; -final class QueryAnalyzerController extends AbstractController +final class QueryAnalyzerController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private Monitor $monitor, - private DatabaseInterface $dbi, + private readonly Monitor $monitor, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } diff --git a/src/Controllers/Server/Status/Monitor/SlowLogController.php b/src/Controllers/Server/Status/Monitor/SlowLogController.php index be04507deb..703330ea62 100644 --- a/src/Controllers/Server/Status/Monitor/SlowLogController.php +++ b/src/Controllers/Server/Status/Monitor/SlowLogController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status\Monitor; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -14,14 +15,14 @@ use PhpMyAdmin\Server\Status\Monitor; use PhpMyAdmin\Template; use PhpMyAdmin\Url; -final class SlowLogController extends AbstractController +final class SlowLogController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private Monitor $monitor, - private DatabaseInterface $dbi, + private readonly Monitor $monitor, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } diff --git a/src/Controllers/Server/Status/MonitorController.php b/src/Controllers/Server/Status/MonitorController.php index 6e8b3e9af0..dc06d0fbce 100644 --- a/src/Controllers/Server/Status/MonitorController.php +++ b/src/Controllers/Server/Status/MonitorController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -16,13 +17,13 @@ use PhpMyAdmin\Url; use function is_numeric; use function microtime; -class MonitorController extends AbstractController +final class MonitorController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private DatabaseInterface $dbi, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } @@ -35,7 +36,7 @@ class MonitorController extends AbstractController $this->dbi->selectDb('mysql'); } - $this->addScriptFiles([ + $this->response->addScriptFiles([ 'vendor/jquery/jquery.tablesorter.js', 'jquery.sortable-table.js', 'vendor/jqplot/jquery.jqplot.js', @@ -67,7 +68,7 @@ class MonitorController extends AbstractController $javascriptVariableNames[] = $name; } - $this->render('server/status/monitor/index', [ + $this->response->render('server/status/monitor/index', [ 'javascript_variable_names' => $javascriptVariableNames, 'form' => $form, ]); diff --git a/src/Controllers/Server/Status/Processes/KillController.php b/src/Controllers/Server/Status/Processes/KillController.php index ee50dae48b..490d85b91b 100644 --- a/src/Controllers/Server/Status/Processes/KillController.php +++ b/src/Controllers/Server/Status/Processes/KillController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status\Processes; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -17,13 +18,13 @@ use function __; use function is_array; use function is_numeric; -final class KillController extends AbstractController +final class KillController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private DatabaseInterface $dbi, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } diff --git a/src/Controllers/Server/Status/Processes/RefreshController.php b/src/Controllers/Server/Status/Processes/RefreshController.php index d9bf68c38b..27401f9b66 100644 --- a/src/Controllers/Server/Status/Processes/RefreshController.php +++ b/src/Controllers/Server/Status/Processes/RefreshController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status\Processes; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -12,13 +13,13 @@ use PhpMyAdmin\Server\Status\Data; use PhpMyAdmin\Server\Status\Processes; use PhpMyAdmin\Template; -final class RefreshController extends AbstractController +final class RefreshController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private Processes $processes, + private readonly Processes $processes, ) { parent::__construct($response, $template, $data); } @@ -29,7 +30,7 @@ final class RefreshController extends AbstractController return null; } - $this->render('server/status/processes/list', $this->processes->getList( + $this->response->render('server/status/processes/list', $this->processes->getList( $request->hasBodyParam('showExecuting'), $request->hasBodyParam('full'), (string) $request->getParsedBodyParam('order_by_field', ''), diff --git a/src/Controllers/Server/Status/ProcessesController.php b/src/Controllers/Server/Status/ProcessesController.php index 3fbff15c50..81b7f8b19f 100644 --- a/src/Controllers/Server/Status/ProcessesController.php +++ b/src/Controllers/Server/Status/ProcessesController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -13,14 +14,14 @@ use PhpMyAdmin\Server\Status\Processes; use PhpMyAdmin\Template; use PhpMyAdmin\Url; -class ProcessesController extends AbstractController +final class ProcessesController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private DatabaseInterface $dbi, - private Processes $processes, + private readonly DatabaseInterface $dbi, + private readonly Processes $processes, ) { parent::__construct($response, $template, $data); } @@ -38,7 +39,7 @@ class ProcessesController extends AbstractController $this->dbi->selectDb('mysql'); } - $this->addScriptFiles(['server/status/processes.js']); + $this->response->addScriptFiles(['server/status/processes.js']); $listHtml = $this->template->render('server/status/processes/list', $this->processes->getList( $showExecuting, @@ -55,7 +56,7 @@ class ProcessesController extends AbstractController 'sort_order' => $sortOrder, ]; - $this->render('server/status/processes/index', [ + $this->response->render('server/status/processes/index', [ 'url_params' => $urlParams, 'is_checked' => $showExecuting, 'server_process_list' => $listHtml, diff --git a/src/Controllers/Server/Status/QueriesController.php b/src/Controllers/Server/Status/QueriesController.php index d83bb369dc..83b3947322 100644 --- a/src/Controllers/Server/Status/QueriesController.php +++ b/src/Controllers/Server/Status/QueriesController.php @@ -7,6 +7,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -26,13 +27,13 @@ use function str_replace; use const MB_CASE_TITLE; -class QueriesController extends AbstractController +final class QueriesController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private DatabaseInterface $dbi, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } @@ -45,7 +46,7 @@ class QueriesController extends AbstractController $this->dbi->selectDb('mysql'); } - $this->addScriptFiles(['vendor/chart.umd.js', 'server/status/queries.js']); + $this->response->addScriptFiles(['vendor/chart.umd.js', 'server/status/queries.js']); $chart = []; if ($this->data->dataLoaded) { @@ -94,7 +95,7 @@ class QueriesController extends AbstractController $chartData = ['labels' => array_keys($chart), 'data' => array_values($chart)]; - $this->render('server/status/queries/index', [ + $this->response->render('server/status/queries/index', [ 'is_data_loaded' => $this->data->dataLoaded, 'stats' => $stats ?? null, 'queries' => $queries ?? [], diff --git a/src/Controllers/Server/Status/StatusController.php b/src/Controllers/Server/Status/StatusController.php index 105e56304a..ce604b3aff 100644 --- a/src/Controllers/Server/Status/StatusController.php +++ b/src/Controllers/Server/Status/StatusController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -20,14 +21,14 @@ use function implode; /** * Object the server status page: processes, connections and traffic. */ -class StatusController extends AbstractController +final class StatusController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private ReplicationGui $replicationGui, - private DatabaseInterface $dbi, + private readonly ReplicationGui $replicationGui, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } @@ -79,7 +80,7 @@ class StatusController extends AbstractController } } - $this->render('server/status/status/index', [ + $this->response->render('server/status/status/index', [ 'is_data_loaded' => $this->data->dataLoaded, 'network_traffic' => $networkTraffic ?? null, 'uptime' => $uptime ?? null, diff --git a/src/Controllers/Server/Status/VariablesController.php b/src/Controllers/Server/Status/VariablesController.php index dcf6ad8a02..70801391d3 100644 --- a/src/Controllers/Server/Status/VariablesController.php +++ b/src/Controllers/Server/Status/VariablesController.php @@ -7,6 +7,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; @@ -21,13 +22,13 @@ use function in_array; use function is_numeric; use function str_contains; -class VariablesController extends AbstractController +final class VariablesController extends AbstractController implements InvocableController { public function __construct( ResponseRenderer $response, Template $template, Data $data, - private DatabaseInterface $dbi, + private readonly DatabaseInterface $dbi, ) { parent::__construct($response, $template, $data); } @@ -46,7 +47,7 @@ class VariablesController extends AbstractController $this->dbi->selectDb('mysql'); } - $this->addScriptFiles([ + $this->response->addScriptFiles([ 'server/status/variables.js', 'vendor/jquery/jquery.tablesorter.js', ]); @@ -119,7 +120,7 @@ class VariablesController extends AbstractController } } - $this->render('server/status/variables/index', [ + $this->response->render('server/status/variables/index', [ 'is_data_loaded' => $this->data->dataLoaded, 'filter_text' => $filterText ?: '', 'is_only_alerts' => (bool) $filterAlert, diff --git a/src/Controllers/Server/UserGroupsController.php b/src/Controllers/Server/UserGroupsController.php index a8af16a5a5..fc4776c174 100644 --- a/src/Controllers/Server/UserGroupsController.php +++ b/src/Controllers/Server/UserGroupsController.php @@ -6,13 +6,12 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\UserGroups; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function __; use function is_string; @@ -20,15 +19,13 @@ use function is_string; /** * Displays the 'User groups' sub page under 'Users' page. */ -class UserGroupsController extends AbstractController +final class UserGroupsController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -38,7 +35,7 @@ class UserGroupsController extends AbstractController return null; } - $this->addScriptFiles(['server/user_groups.js']); + $this->response->addScriptFiles(['server/user_groups.js']); /** * Only allowed to superuser @@ -52,7 +49,7 @@ class UserGroupsController extends AbstractController } $this->response->addHTML('
'); - $this->render('server/privileges/subnav', [ + $this->response->render('server/privileges/subnav', [ 'active' => 'user-groups', 'is_super_user' => $this->dbi->isSuperUser(), ]); diff --git a/src/Controllers/Server/UserGroupsFormController.php b/src/Controllers/Server/UserGroupsFormController.php index ca98c31848..5d661f3911 100644 --- a/src/Controllers/Server/UserGroupsFormController.php +++ b/src/Controllers/Server/UserGroupsFormController.php @@ -7,7 +7,7 @@ namespace PhpMyAdmin\Controllers\Server; use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\ConfigStorage\Features\ConfigurableMenusFeature; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\ConnectionType; use PhpMyAdmin\Http\Response; @@ -19,15 +19,14 @@ use PhpMyAdmin\Util; use function __; use function sprintf; -final class UserGroupsFormController extends AbstractController +final class UserGroupsFormController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Server/Variables/GetVariableController.php b/src/Controllers/Server/Variables/GetVariableController.php index ddc5f460aa..ff29d70573 100644 --- a/src/Controllers/Server/Variables/GetVariableController.php +++ b/src/Controllers/Server/Variables/GetVariableController.php @@ -4,24 +4,22 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Variables; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Providers\ServerVariables\ServerVariablesProvider; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function implode; use function is_array; use function is_string; -final class GetVariableController extends AbstractController +final class GetVariableController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Server/Variables/SetVariableController.php b/src/Controllers/Server/Variables/SetVariableController.php index df9e2e1ed8..03558cc92e 100644 --- a/src/Controllers/Server/Variables/SetVariableController.php +++ b/src/Controllers/Server/Variables/SetVariableController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Variables; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -23,11 +23,13 @@ use function mb_strtolower; use function preg_match; use function trim; -final class SetVariableController extends AbstractController +final class SetVariableController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, + ) { } /** diff --git a/src/Controllers/Server/VariablesController.php b/src/Controllers/Server/VariablesController.php index 7afa1bc4ce..3289b4f43b 100644 --- a/src/Controllers/Server/VariablesController.php +++ b/src/Controllers/Server/VariablesController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; @@ -25,11 +25,13 @@ use function trim; /** * Handles viewing and editing server variables */ -class VariablesController extends AbstractController +final class VariablesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, + ) { } public function __invoke(ServerRequest $request): Response|null @@ -42,7 +44,7 @@ class VariablesController extends AbstractController $filterValue = $request->getQueryParam('filter', ''); - $this->addScriptFiles(['server/variables.js']); + $this->response->addScriptFiles(['server/variables.js']); $variables = []; $serverVarsResult = $this->dbi->tryQuery('SHOW SESSION VARIABLES;'); @@ -84,7 +86,7 @@ class VariablesController extends AbstractController } } - $this->render('server/variables/index', [ + $this->response->render('server/variables/index', [ 'variables' => $variables, 'filter_value' => $filterValue, 'is_superuser' => $this->dbi->isSuperUser(), diff --git a/src/Controllers/Sql/ColumnPreferencesController.php b/src/Controllers/Sql/ColumnPreferencesController.php index 9c6ddc9a1f..5623de7f49 100644 --- a/src/Controllers/Sql/ColumnPreferencesController.php +++ b/src/Controllers/Sql/ColumnPreferencesController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Sql; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -12,21 +12,16 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Table; -use PhpMyAdmin\Template; use function array_map; use function explode; use function intval; use function is_string; -final class ColumnPreferencesController extends AbstractController +final class ColumnPreferencesController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) + { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php b/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php index 69ff9e8373..819f242bb5 100644 --- a/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php +++ b/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php @@ -4,13 +4,18 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Sql; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Utils\ForeignKey; -final class DefaultForeignKeyCheckValueController extends AbstractController +final class DefaultForeignKeyCheckValueController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { $this->response->addJSON('default_fk_check_value', ForeignKey::isCheckEnabled()); diff --git a/src/Controllers/Sql/EnumValuesController.php b/src/Controllers/Sql/EnumValuesController.php index ceff2327ae..b86cb58bb6 100644 --- a/src/Controllers/Sql/EnumValuesController.php +++ b/src/Controllers/Sql/EnumValuesController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Sql; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -14,14 +14,13 @@ use PhpMyAdmin\Template; use function __; -final class EnumValuesController extends AbstractController +final class EnumValuesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Sql $sql, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Sql $sql, ) { - parent::__construct($response, $template); } /** diff --git a/src/Controllers/Sql/RelationalValuesController.php b/src/Controllers/Sql/RelationalValuesController.php index 1baaa891e9..73a0744216 100644 --- a/src/Controllers/Sql/RelationalValuesController.php +++ b/src/Controllers/Sql/RelationalValuesController.php @@ -4,22 +4,17 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Sql; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; -use PhpMyAdmin\Template; -final class RelationalValuesController extends AbstractController +final class RelationalValuesController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Sql $sql, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Sql $sql) + { } /** diff --git a/src/Controllers/Sql/SetValuesController.php b/src/Controllers/Sql/SetValuesController.php index d96b3df379..81005416f3 100644 --- a/src/Controllers/Sql/SetValuesController.php +++ b/src/Controllers/Sql/SetValuesController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Sql; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -15,14 +15,13 @@ use PhpMyAdmin\Template; use function __; use function explode; -final class SetValuesController extends AbstractController +final class SetValuesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Sql $sql, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Sql $sql, ) { - parent::__construct($response, $template); } /** diff --git a/src/Controllers/Sql/SqlController.php b/src/Controllers/Sql/SqlController.php index 055155d8f9..46fc361c41 100644 --- a/src/Controllers/Sql/SqlController.php +++ b/src/Controllers/Sql/SqlController.php @@ -7,7 +7,7 @@ namespace PhpMyAdmin\Controllers\Sql; use PhpMyAdmin\Bookmarks\BookmarkRepository; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -18,7 +18,6 @@ use PhpMyAdmin\Message; use PhpMyAdmin\ParseAnalyze; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -27,17 +26,15 @@ use function mb_strpos; use function str_contains; use function urlencode; -class SqlController extends AbstractController +class SqlController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Sql $sql, - private DatabaseInterface $dbi, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly Sql $sql, + private readonly DatabaseInterface $dbi, + private readonly PageSettings $pageSettings, private readonly BookmarkRepository $bookmarkRepository, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -58,7 +55,7 @@ class SqlController extends AbstractController $this->response->addHTML($this->pageSettings->getErrorHTML()); $this->response->addHTML($this->pageSettings->getHTML()); - $this->addScriptFiles([ + $this->response->addScriptFiles([ 'vendor/jquery/jquery.uitablefilter.js', 'table/change.js', 'gis_data_editor.js', @@ -128,7 +125,7 @@ class SqlController extends AbstractController // set $goto to what will be displayed if query returns 0 rows $GLOBALS['goto'] = ''; - } elseif (! $this->checkParameters(['sql_query'])) { + } elseif (! $this->response->checkParameters(['sql_query'])) { return null; } diff --git a/src/Controllers/Table/AddFieldController.php b/src/Controllers/Table/AddFieldController.php index d976a1e4d4..118af2e9b3 100644 --- a/src/Controllers/Table/AddFieldController.php +++ b/src/Controllers/Table/AddFieldController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\CreateAddField; use PhpMyAdmin\Current; @@ -19,7 +19,6 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\ColumnsDefinition; -use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivilegesFactory; @@ -34,19 +33,17 @@ use function strlen; /** * Displays add field form and handles it. */ -class AddFieldController extends AbstractController +final class AddFieldController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Transformations $transformations, - private Config $config, - private DatabaseInterface $dbi, - private ColumnsDefinition $columnsDefinition, + private readonly ResponseRenderer $response, + private readonly Transformations $transformations, + private readonly Config $config, + private readonly DatabaseInterface $dbi, + private readonly ColumnsDefinition $columnsDefinition, private readonly DbTableExists $dbTableExists, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -57,9 +54,9 @@ class AddFieldController extends AbstractController /** @var string|null $numberOfFields */ $numberOfFields = $request->getParsedBodyParam('num_fields'); - $this->addScriptFiles(['table/structure.js']); + $this->response->addScriptFiles(['table/structure.js']); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -168,7 +165,7 @@ class AddFieldController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -182,20 +179,20 @@ class AddFieldController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } - $this->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); + $this->response->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); - if (! $this->checkParameters(['server', 'db', 'table'])) { + if (! $this->response->checkParameters(['server', 'db', 'table'])) { return null; } $templateData = $this->columnsDefinition->displayForm($userPrivileges, '/table/add-field', $numFields); - $this->render('columns_definitions/column_definitions_form', $templateData); + $this->response->render('columns_definitions/column_definitions_form', $templateData); return null; } diff --git a/src/Controllers/Table/ChangeController.php b/src/Controllers/Table/ChangeController.php index 6072d477a7..f532475884 100644 --- a/src/Controllers/Table/ChangeController.php +++ b/src/Controllers/Table/ChangeController.php @@ -7,7 +7,7 @@ namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; @@ -36,18 +36,17 @@ use function trim; /** * Displays form for editing and inserting new table rows. */ -class ChangeController extends AbstractController +class ChangeController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private InsertEdit $insertEdit, - private Relation $relation, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly InsertEdit $insertEdit, + private readonly Relation $relation, + private readonly PageSettings $pageSettings, private readonly DbTableExists $dbTableExists, private readonly Config $config, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -72,7 +71,7 @@ class ChangeController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -86,7 +85,7 @@ class ChangeController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } @@ -155,7 +154,7 @@ class ChangeController extends AbstractController * START REGULAR OUTPUT */ - $this->addScriptFiles([ + $this->response->addScriptFiles([ 'makegrid.js', 'sql.js', 'table/change.js', @@ -263,7 +262,7 @@ class ChangeController extends AbstractController ); } - $this->addScriptFiles($GLOBALS['plugin_scripts']); + $this->response->addScriptFiles($GLOBALS['plugin_scripts']); unset($GLOBALS['unsaved_values'], $GLOBALS['plugin_scripts']); diff --git a/src/Controllers/Table/ChangeRowsController.php b/src/Controllers/Table/ChangeRowsController.php index cca4a760ad..dbf33e7ec5 100644 --- a/src/Controllers/Table/ChangeRowsController.php +++ b/src/Controllers/Table/ChangeRowsController.php @@ -4,24 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function __; use function array_values; use function is_array; -final class ChangeRowsController extends AbstractController +final class ChangeRowsController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private ChangeController $changeController, + private readonly ResponseRenderer $response, + private readonly ChangeController $changeController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Table/ChartController.php b/src/Controllers/Table/ChartController.php index 43c8ce82e1..16c944e51f 100644 --- a/src/Controllers/Table/ChartController.php +++ b/src/Controllers/Table/ChartController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -20,7 +20,6 @@ use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\SqlParser\Components\Limit; use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Statements\SelectStatement; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -33,15 +32,13 @@ use function min; /** * Handles creation of the chart. */ -class ChartController extends AbstractController +final class ChartController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -49,7 +46,10 @@ class ChartController extends AbstractController $GLOBALS['errorUrl'] ??= null; if (isset($_REQUEST['pos'], $_REQUEST['session_max_rows']) && $request->isAjax()) { - if (Current::$table !== '' && Current::$database !== '' && ! $this->checkParameters(['db', 'table'])) { + if ( + Current::$table !== '' && Current::$database !== '' + && ! $this->response->checkParameters(['db', 'table']) + ) { return null; } @@ -68,7 +68,7 @@ class ChartController extends AbstractController return null; } - $this->addScriptFiles([ + $this->response->addScriptFiles([ 'chart.js', 'table/chart.js', 'vendor/jqplot/jquery.jqplot.js', @@ -90,7 +90,7 @@ class ChartController extends AbstractController * Runs common work */ if (Current::$table !== '') { - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -107,7 +107,7 @@ class ChartController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -121,7 +121,7 @@ class ChartController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } @@ -133,7 +133,7 @@ class ChartController extends AbstractController $urlParams['goto'] = Util::getScriptNameForOption($config->settings['DefaultTabDatabase'], 'database'); $urlParams['back'] = Url::getFromRoute('/sql'); - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -149,7 +149,7 @@ class ChartController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -202,7 +202,7 @@ class ChartController extends AbstractController /** * Displays the page */ - $this->render('table/chart/tbl_chart', [ + $this->response->render('table/chart/tbl_chart', [ 'url_params' => $urlParams, 'keys' => $keys, 'fields_meta' => $fieldsMeta, diff --git a/src/Controllers/Table/CreateController.php b/src/Controllers/Table/CreateController.php index 986520f6a9..d464a058e9 100644 --- a/src/Controllers/Table/CreateController.php +++ b/src/Controllers/Table/CreateController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\CreateAddField; use PhpMyAdmin\Current; @@ -15,7 +15,6 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\ColumnsDefinition; -use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivilegesFactory; @@ -31,23 +30,21 @@ use function strlen; /** * Displays table create form and handles it. */ -class CreateController extends AbstractController +final class CreateController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Transformations $transformations, - private Config $config, - private DatabaseInterface $dbi, - private ColumnsDefinition $columnsDefinition, + private readonly ResponseRenderer $response, + private readonly Transformations $transformations, + private readonly Config $config, + private readonly DatabaseInterface $dbi, + private readonly ColumnsDefinition $columnsDefinition, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -146,15 +143,15 @@ class CreateController extends AbstractController // Do not display the table in the header since it hasn't been created yet $this->response->getHeader()->getMenu()->setTable(''); - $this->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); + $this->response->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); - if (! $this->checkParameters(['server', 'db'])) { + if (! $this->response->checkParameters(['server', 'db'])) { return null; } $templateData = $this->columnsDefinition->displayForm($userPrivileges, '/table/create', $numFields); - $this->render('columns_definitions/column_definitions_form', $templateData); + $this->response->render('columns_definitions/column_definitions_form', $templateData); return null; } diff --git a/src/Controllers/Table/DeleteConfirmController.php b/src/Controllers/Table/DeleteConfirmController.php index eda3b93238..d0b33d73aa 100644 --- a/src/Controllers/Table/DeleteConfirmController.php +++ b/src/Controllers/Table/DeleteConfirmController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Http\Response; @@ -14,7 +14,6 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -22,14 +21,12 @@ use PhpMyAdmin\Utils\ForeignKey; use function __; use function is_array; -final class DeleteConfirmController extends AbstractController +final class DeleteConfirmController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, + private readonly ResponseRenderer $response, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -46,7 +43,7 @@ final class DeleteConfirmController extends AbstractController return null; } - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -66,7 +63,7 @@ final class DeleteConfirmController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -80,12 +77,12 @@ final class DeleteConfirmController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } - $this->render('table/delete/confirm', [ + $this->response->render('table/delete/confirm', [ 'db' => Current::$database, 'table' => Current::$table, 'selected' => $selected, diff --git a/src/Controllers/Table/DeleteRowsController.php b/src/Controllers/Table/DeleteRowsController.php index 1fa40da652..01fec781f5 100644 --- a/src/Controllers/Table/DeleteRowsController.php +++ b/src/Controllers/Table/DeleteRowsController.php @@ -8,7 +8,7 @@ use PhpMyAdmin\Bookmarks\BookmarkRepository; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationCleanup; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -23,14 +23,13 @@ use PhpMyAdmin\Utils\ForeignKey; use function __; use function sprintf; -final class DeleteRowsController extends AbstractController +final class DeleteRowsController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Table/DropColumnConfirmationController.php b/src/Controllers/Table/DropColumnConfirmationController.php index d171ff8cd7..d32ca7eaa2 100644 --- a/src/Controllers/Table/DropColumnConfirmationController.php +++ b/src/Controllers/Table/DropColumnConfirmationController.php @@ -4,7 +4,8 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; -use PhpMyAdmin\Controllers\AbstractController; +use Fig\Http\Message\StatusCodeInterface; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -13,20 +14,17 @@ use PhpMyAdmin\Identifiers\InvalidIdentifier; use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; -final class DropColumnConfirmationController extends AbstractController +final class DropColumnConfirmationController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, + private readonly ResponseRenderer $response, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -54,7 +52,7 @@ final class DropColumnConfirmationController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -67,12 +65,12 @@ final class DropColumnConfirmationController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } - $this->render('table/structure/drop_confirm', [ + $this->response->render('table/structure/drop_confirm', [ 'db' => $db->getName(), 'table' => $table->getName(), 'fields' => $fields, @@ -80,4 +78,19 @@ final class DropColumnConfirmationController extends AbstractController return null; } + + private function sendErrorResponse(string $message): void + { + $this->response->setStatusCode(StatusCodeInterface::STATUS_BAD_REQUEST); + $this->response->setRequestStatus(false); + + if ($this->response->isAjax()) { + $this->response->addJSON('isErrorResponse', true); + $this->response->addJSON('message', $message); + + return; + } + + $this->response->addHTML(Message::error($message)->getDisplay()); + } } diff --git a/src/Controllers/Table/DropColumnController.php b/src/Controllers/Table/DropColumnController.php index c14298c9ac..0b99e748e3 100644 --- a/src/Controllers/Table/DropColumnController.php +++ b/src/Controllers/Table/DropColumnController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\ConfigStorage\RelationCleanup; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\FlashMessages; @@ -13,23 +13,20 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function __; use function _ngettext; use function count; -final class DropColumnController extends AbstractController +final class DropColumnController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private FlashMessages $flash, - private RelationCleanup $relationCleanup, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly FlashMessages $flash, + private readonly RelationCleanup $relationCleanup, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -76,7 +73,7 @@ final class DropColumnController extends AbstractController } $this->flash->addMessage($message->isError() ? 'danger' : 'success', $message->getMessage()); - $this->redirect('/table/structure', ['db' => Current::$database, 'table' => Current::$table]); + $this->response->redirectToRoute('/table/structure', ['db' => Current::$database, 'table' => Current::$table]); return null; } diff --git a/src/Controllers/Table/ExportController.php b/src/Controllers/Table/ExportController.php index 5ead08f031..806214febc 100644 --- a/src/Controllers/Table/ExportController.php +++ b/src/Controllers/Table/ExportController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Export\Options; use PhpMyAdmin\Http\Response; @@ -17,7 +17,6 @@ use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Statements\SelectStatement; use PhpMyAdmin\SqlParser\Utils\Query; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -26,15 +25,13 @@ use function array_merge; use function implode; use function is_array; -class ExportController extends AbstractController +class ExportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Options $export, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly Options $export, + private readonly PageSettings $pageSettings, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -48,9 +45,9 @@ class ExportController extends AbstractController $pageSettingsErrorHtml = $this->pageSettings->getErrorHTML(); $pageSettingsHtml = $this->pageSettings->getHTML(); - $this->addScriptFiles(['export.js']); + $this->response->addScriptFiles(['export.js']); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -125,7 +122,7 @@ class ExportController extends AbstractController $exportList, ); - $this->render('table/export/index', array_merge($options, [ + $this->response->render('table/export/index', array_merge($options, [ 'export_type' => $exportType, 'page_settings_error_html' => $pageSettingsErrorHtml, 'page_settings_html' => $pageSettingsHtml, diff --git a/src/Controllers/Table/ExportRowsController.php b/src/Controllers/Table/ExportRowsController.php index aaa2884298..f3b4764c25 100644 --- a/src/Controllers/Table/ExportRowsController.php +++ b/src/Controllers/Table/ExportRowsController.php @@ -4,24 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use function __; use function array_values; use function is_array; -final class ExportRowsController extends AbstractController +final class ExportRowsController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private ExportController $exportController, + private readonly ResponseRenderer $response, + private readonly ExportController $exportController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Table/FindReplaceController.php b/src/Controllers/Table/FindReplaceController.php index c889b55810..1ac36db4f9 100644 --- a/src/Controllers/Table/FindReplaceController.php +++ b/src/Controllers/Table/FindReplaceController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -35,7 +35,7 @@ use function strncasecmp; * * Displays find and replace form, allows previewing and do the replacing. */ -class FindReplaceController extends AbstractController +final class FindReplaceController implements InvocableController { /** @var mixed[] */ private array $columnNames = []; @@ -44,19 +44,18 @@ class FindReplaceController extends AbstractController private array $columnTypes = []; public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -76,7 +75,7 @@ class FindReplaceController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -90,7 +89,7 @@ class FindReplaceController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } @@ -110,7 +109,7 @@ class FindReplaceController extends AbstractController return null; } - $this->addScriptFiles(['table/find_replace.js']); + $this->response->addScriptFiles(['table/find_replace.js']); if ($request->hasBodyParam('replace')) { $findString = (string) $request->getParsedBodyParam('findString'); @@ -183,7 +182,7 @@ class FindReplaceController extends AbstractController $types[$columnName] = preg_replace('@\\(.*@s', '', $this->columnTypes[$i]); } - $this->render('table/find_replace/index', [ + $this->response->render('table/find_replace/index', [ 'db' => Current::$database, 'table' => Current::$table, 'goto' => $GLOBALS['goto'], diff --git a/src/Controllers/Table/GetFieldController.php b/src/Controllers/Table/GetFieldController.php index d7d534844f..e23cc4ca3e 100644 --- a/src/Controllers/Table/GetFieldController.php +++ b/src/Controllers/Table/GetFieldController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -14,7 +14,6 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Mime; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function __; @@ -26,21 +25,17 @@ use function sprintf; /** * Provides download to a given field defined in parameters. */ -class GetFieldController extends AbstractController +final class GetFieldController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) + { } public function __invoke(ServerRequest $request): Response|null { $this->response->disable(); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } diff --git a/src/Controllers/Table/GisVisualizationController.php b/src/Controllers/Table/GisVisualizationController.php index da87a1390e..6b9be5223b 100644 --- a/src/Controllers/Table/GisVisualizationController.php +++ b/src/Controllers/Table/GisVisualizationController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -30,20 +30,19 @@ use function is_string; /** * Handles creation of the GIS visualizations. */ -final class GisVisualizationController extends AbstractController +final class GisVisualizationController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -62,7 +61,7 @@ final class GisVisualizationController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -120,7 +119,7 @@ final class GisVisualizationController extends AbstractController return null; } - $this->addScriptFiles(['vendor/openlayers/OpenLayers.js', 'table/gis_visualization.js']); + $this->response->addScriptFiles(['vendor/openlayers/OpenLayers.js', 'table/gis_visualization.js']); // If all the rows contain SRID, use OpenStreetMaps on the initial loading. $useBaseLayer = isset($_POST['redraw']) ? isset($_POST['useBaseLayer']) : $visualization->hasSrid(); diff --git a/src/Controllers/Table/ImportController.php b/src/Controllers/Table/ImportController.php index 5579c596d6..c2aea7eabf 100644 --- a/src/Controllers/Table/ImportController.php +++ b/src/Controllers/Table/ImportController.php @@ -7,7 +7,7 @@ namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Charsets; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -22,7 +22,6 @@ use PhpMyAdmin\Import\ImportSettings; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -30,16 +29,14 @@ use PhpMyAdmin\Utils\ForeignKey; use function __; use function is_numeric; -final class ImportController extends AbstractController +final class ImportController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly PageSettings $pageSettings, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -52,9 +49,9 @@ final class ImportController extends AbstractController $pageSettingsErrorHtml = $this->pageSettings->getErrorHTML(); $pageSettingsHtml = $this->pageSettings->getHTML(); - $this->addScriptFiles(['import.js']); + $this->response->addScriptFiles(['import.js']); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -72,7 +69,7 @@ final class ImportController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -86,7 +83,7 @@ final class ImportController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } @@ -135,7 +132,7 @@ final class ImportController extends AbstractController $isAllowInterruptChecked = Plugins::checkboxCheck('Import', 'allow_interrupt'); $maxUploadSize = (int) $config->get('max_upload_size'); - $this->render('table/import/index', [ + $this->response->render('table/import/index', [ 'page_settings_error_html' => $pageSettingsErrorHtml, 'page_settings_html' => $pageSettingsHtml, 'upload_id' => $uploadId, diff --git a/src/Controllers/Table/IndexRenameController.php b/src/Controllers/Table/IndexRenameController.php index 86659fb326..4e70b5a0df 100644 --- a/src/Controllers/Table/IndexRenameController.php +++ b/src/Controllers/Table/IndexRenameController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -24,16 +24,15 @@ use PhpMyAdmin\Util; use function __; -final class IndexRenameController extends AbstractController +final class IndexRenameController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private Indexes $indexes, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, + private readonly Indexes $indexes, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -41,7 +40,7 @@ final class IndexRenameController extends AbstractController $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -61,7 +60,7 @@ final class IndexRenameController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -75,7 +74,7 @@ final class IndexRenameController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } @@ -91,7 +90,7 @@ final class IndexRenameController extends AbstractController 'old_index' => $index->getName(), ]; - $this->render('table/index_rename_form', ['index' => $index, 'form_params' => $formParams]); + $this->response->render('table/index_rename_form', ['index' => $index, 'form_params' => $formParams]); return null; } diff --git a/src/Controllers/Table/IndexesController.php b/src/Controllers/Table/IndexesController.php index 2c7773e4f3..1e98e150e7 100644 --- a/src/Controllers/Table/IndexesController.php +++ b/src/Controllers/Table/IndexesController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; use PhpMyAdmin\Container\ContainerBuilder; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -33,16 +33,15 @@ use function min; /** * Displays index edit/creation form and handles it. */ -class IndexesController extends AbstractController +final class IndexesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private Indexes $indexes, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, + private readonly Indexes $indexes, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +50,7 @@ class IndexesController extends AbstractController $GLOBALS['errorUrl'] ??= null; if (! isset($_POST['create_edit_table'])) { - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -71,7 +70,7 @@ class IndexesController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -85,7 +84,7 @@ class IndexesController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } @@ -229,7 +228,7 @@ class IndexesController extends AbstractController $formParams['old_index'] = $_POST['index']; } - $this->render('table/index_form', [ + $this->response->render('table/index_form', [ 'fields' => $fields, 'index' => $index, 'form_params' => $formParams, diff --git a/src/Controllers/Table/Maintenance/AnalyzeController.php b/src/Controllers/Table/Maintenance/AnalyzeController.php index c1af92d0d5..3600a2feb0 100644 --- a/src/Controllers/Table/Maintenance/AnalyzeController.php +++ b/src/Controllers/Table/Maintenance/AnalyzeController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -15,22 +15,19 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; use function count; -final class AnalyzeController extends AbstractController +final class AnalyzeController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - private Config $config, + private readonly ResponseRenderer $response, + private readonly Maintenance $model, + private readonly Config $config, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -77,7 +74,7 @@ final class AnalyzeController extends AbstractController 'success', ); - $this->render('table/maintenance/analyze', ['message' => $message, 'rows' => $rows]); + $this->response->render('table/maintenance/analyze', ['message' => $message, 'rows' => $rows]); return null; } diff --git a/src/Controllers/Table/Maintenance/CheckController.php b/src/Controllers/Table/Maintenance/CheckController.php index 7ec546e0db..edf1621477 100644 --- a/src/Controllers/Table/Maintenance/CheckController.php +++ b/src/Controllers/Table/Maintenance/CheckController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -15,22 +15,19 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; use function count; -final class CheckController extends AbstractController +final class CheckController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - private Config $config, + private readonly ResponseRenderer $response, + private readonly Maintenance $model, + private readonly Config $config, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -79,7 +76,7 @@ final class CheckController extends AbstractController $indexesProblems = $this->model->getIndexesProblems($database, $selectedTables); - $this->render('table/maintenance/check', [ + $this->response->render('table/maintenance/check', [ 'message' => $message, 'rows' => $rows, 'indexes_problems' => $indexesProblems, diff --git a/src/Controllers/Table/Maintenance/ChecksumController.php b/src/Controllers/Table/Maintenance/ChecksumController.php index 15ac0c29c3..cc4ee31b90 100644 --- a/src/Controllers/Table/Maintenance/ChecksumController.php +++ b/src/Controllers/Table/Maintenance/ChecksumController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -15,22 +15,19 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; use function count; -final class ChecksumController extends AbstractController +final class ChecksumController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - private Config $config, + private readonly ResponseRenderer $response, + private readonly Maintenance $model, + private readonly Config $config, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -77,7 +74,11 @@ final class ChecksumController extends AbstractController 'success', ); - $this->render('table/maintenance/checksum', ['message' => $message, 'rows' => $rows, 'warnings' => $warnings]); + $this->response->render('table/maintenance/checksum', [ + 'message' => $message, + 'rows' => $rows, + 'warnings' => $warnings, + ]); return null; } diff --git a/src/Controllers/Table/Maintenance/OptimizeController.php b/src/Controllers/Table/Maintenance/OptimizeController.php index e753fe6e0f..460a8ee7f6 100644 --- a/src/Controllers/Table/Maintenance/OptimizeController.php +++ b/src/Controllers/Table/Maintenance/OptimizeController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -15,22 +15,19 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; use function count; -final class OptimizeController extends AbstractController +final class OptimizeController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - private Config $config, + private readonly ResponseRenderer $response, + private readonly Maintenance $model, + private readonly Config $config, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -77,7 +74,7 @@ final class OptimizeController extends AbstractController 'success', ); - $this->render('table/maintenance/optimize', ['message' => $message, 'rows' => $rows]); + $this->response->render('table/maintenance/optimize', ['message' => $message, 'rows' => $rows]); return null; } diff --git a/src/Controllers/Table/Maintenance/RepairController.php b/src/Controllers/Table/Maintenance/RepairController.php index c64ad2efaa..ea71ffdee6 100644 --- a/src/Controllers/Table/Maintenance/RepairController.php +++ b/src/Controllers/Table/Maintenance/RepairController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -15,22 +15,19 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; use function count; -final class RepairController extends AbstractController +final class RepairController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - private Config $config, + private readonly ResponseRenderer $response, + private readonly Maintenance $model, + private readonly Config $config, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -77,7 +74,7 @@ final class RepairController extends AbstractController 'success', ); - $this->render('table/maintenance/repair', ['message' => $message, 'rows' => $rows]); + $this->response->render('table/maintenance/repair', ['message' => $message, 'rows' => $rows]); return null; } diff --git a/src/Controllers/Table/Partition/AnalyzeController.php b/src/Controllers/Table/Partition/AnalyzeController.php index 15faa6bc04..9ac18f7a08 100644 --- a/src/Controllers/Table/Partition/AnalyzeController.php +++ b/src/Controllers/Table/Partition/AnalyzeController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Partition; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -14,20 +14,15 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; -final class AnalyzeController extends AbstractController +final class AnalyzeController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Maintenance $model) + { } public function __invoke(ServerRequest $request): Response|null @@ -53,7 +48,7 @@ final class AnalyzeController extends AbstractController 'success', ); - $this->render('table/partition/analyze', [ + $this->response->render('table/partition/analyze', [ 'partition_name' => $partitionName, 'message' => $message, 'rows' => $rows, diff --git a/src/Controllers/Table/Partition/CheckController.php b/src/Controllers/Table/Partition/CheckController.php index 05e46f7046..f7116384a7 100644 --- a/src/Controllers/Table/Partition/CheckController.php +++ b/src/Controllers/Table/Partition/CheckController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Partition; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -14,20 +14,15 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; -final class CheckController extends AbstractController +final class CheckController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Maintenance $model) + { } public function __invoke(ServerRequest $request): Response|null @@ -53,7 +48,7 @@ final class CheckController extends AbstractController 'success', ); - $this->render('table/partition/check', [ + $this->response->render('table/partition/check', [ 'partition_name' => $partitionName, 'message' => $message, 'rows' => $rows, diff --git a/src/Controllers/Table/Partition/DropController.php b/src/Controllers/Table/Partition/DropController.php index 3b5ff176a3..d86c33a47b 100644 --- a/src/Controllers/Table/Partition/DropController.php +++ b/src/Controllers/Table/Partition/DropController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Partition; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -14,20 +14,15 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; -final class DropController extends AbstractController +final class DropController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Maintenance $model) + { } public function __invoke(ServerRequest $request): Response|null @@ -61,7 +56,7 @@ final class DropController extends AbstractController ); } - $this->render('table/partition/drop', ['partition_name' => $partitionName, 'message' => $message]); + $this->response->render('table/partition/drop', ['partition_name' => $partitionName, 'message' => $message]); return null; } diff --git a/src/Controllers/Table/Partition/OptimizeController.php b/src/Controllers/Table/Partition/OptimizeController.php index 35666cb546..ce46bb5e38 100644 --- a/src/Controllers/Table/Partition/OptimizeController.php +++ b/src/Controllers/Table/Partition/OptimizeController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Partition; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -14,20 +14,15 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; -final class OptimizeController extends AbstractController +final class OptimizeController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Maintenance $model) + { } public function __invoke(ServerRequest $request): Response|null @@ -53,7 +48,7 @@ final class OptimizeController extends AbstractController 'success', ); - $this->render('table/partition/optimize', [ + $this->response->render('table/partition/optimize', [ 'partition_name' => $partitionName, 'message' => $message, 'rows' => $rows, diff --git a/src/Controllers/Table/Partition/RebuildController.php b/src/Controllers/Table/Partition/RebuildController.php index bc0a6b111a..51a5f94513 100644 --- a/src/Controllers/Table/Partition/RebuildController.php +++ b/src/Controllers/Table/Partition/RebuildController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Partition; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -14,20 +14,15 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; -final class RebuildController extends AbstractController +final class RebuildController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Maintenance $model) + { } public function __invoke(ServerRequest $request): Response|null @@ -61,7 +56,7 @@ final class RebuildController extends AbstractController ); } - $this->render('table/partition/rebuild', ['partition_name' => $partitionName, 'message' => $message]); + $this->response->render('table/partition/rebuild', ['partition_name' => $partitionName, 'message' => $message]); return null; } diff --git a/src/Controllers/Table/Partition/RepairController.php b/src/Controllers/Table/Partition/RepairController.php index 45b2b7ed69..54f06ba4a1 100644 --- a/src/Controllers/Table/Partition/RepairController.php +++ b/src/Controllers/Table/Partition/RepairController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Partition; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -14,20 +14,15 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; -final class RepairController extends AbstractController +final class RepairController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Maintenance $model) + { } public function __invoke(ServerRequest $request): Response|null @@ -53,7 +48,7 @@ final class RepairController extends AbstractController 'success', ); - $this->render('table/partition/repair', [ + $this->response->render('table/partition/repair', [ 'partition_name' => $partitionName, 'message' => $message, 'rows' => $rows, diff --git a/src/Controllers/Table/Partition/TruncateController.php b/src/Controllers/Table/Partition/TruncateController.php index d55962b60c..8770509898 100644 --- a/src/Controllers/Table/Partition/TruncateController.php +++ b/src/Controllers/Table/Partition/TruncateController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Partition; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Html\Generator; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -14,20 +14,15 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use Webmozart\Assert\InvalidArgumentException; use function __; -final class TruncateController extends AbstractController +final class TruncateController implements InvocableController { - public function __construct( - ResponseRenderer $response, - Template $template, - private Maintenance $model, - ) { - parent::__construct($response, $template); + public function __construct(private readonly ResponseRenderer $response, private readonly Maintenance $model) + { } public function __invoke(ServerRequest $request): Response|null @@ -61,7 +56,10 @@ final class TruncateController extends AbstractController ); } - $this->render('table/partition/truncate', ['partition_name' => $partitionName, 'message' => $message]); + $this->response->render('table/partition/truncate', [ + 'partition_name' => $partitionName, + 'message' => $message, + ]); return null; } diff --git a/src/Controllers/Table/PrivilegesController.php b/src/Controllers/Table/PrivilegesController.php index 85a16f149c..284ef936be 100644 --- a/src/Controllers/Table/PrivilegesController.php +++ b/src/Controllers/Table/PrivilegesController.php @@ -8,7 +8,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -19,7 +19,6 @@ use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Privileges; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function __; @@ -28,15 +27,13 @@ use function mb_strtolower; /** * Controller for table privileges */ -class PrivilegesController extends AbstractController +final class PrivilegesController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Privileges $privileges, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Privileges $privileges, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -54,7 +51,7 @@ class PrivilegesController extends AbstractController return null; } - $this->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); + $this->response->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); /** * Checks if the user is allowed to do what they try to... @@ -63,7 +60,7 @@ class PrivilegesController extends AbstractController $isCreateUser = $this->dbi->isCreateUser(); if (! $this->dbi->isSuperUser() && ! $isGrantUser && ! $isCreateUser) { - $this->render('server/sub_page_header', ['type' => 'privileges', 'is_image' => false]); + $this->response->render('server/sub_page_header', ['type' => 'privileges', 'is_image' => false]); $this->response->addHTML( Message::error(__('No Privileges')) ->getDisplay(), @@ -85,7 +82,7 @@ class PrivilegesController extends AbstractController $privileges = $this->privileges->getAllPrivileges($db, $table); } - $this->render('table/privileges/index', [ + $this->response->render('table/privileges/index', [ 'db' => $db->getName(), 'table' => $table->getName(), 'is_superuser' => $this->dbi->isSuperUser(), @@ -95,7 +92,7 @@ class PrivilegesController extends AbstractController 'is_grantuser' => $this->dbi->isGrantUser(), 'privileges' => $privileges, ]); - $this->render('export_modal'); + $this->response->render('export_modal', []); return null; } diff --git a/src/Controllers/Table/RecentFavoriteController.php b/src/Controllers/Table/RecentFavoriteController.php index edec44778d..4ba3451fc4 100644 --- a/src/Controllers/Table/RecentFavoriteController.php +++ b/src/Controllers/Table/RecentFavoriteController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Favorites\RecentFavoriteTable; use PhpMyAdmin\Favorites\RecentFavoriteTables; use PhpMyAdmin\Favorites\TableType; @@ -13,21 +13,26 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; use PhpMyAdmin\Identifiers\TableName; +use PhpMyAdmin\ResponseRenderer; use function __; /** * Browse recent and favorite tables chosen from navigation. */ -final class RecentFavoriteController extends AbstractController +final class RecentFavoriteController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { try { $db = DatabaseName::from($request->getParam('db')); $table = TableName::from($request->getParam('table')); } catch (InvalidIdentifier) { - $this->redirect('/', ['message' => __('Invalid database or table name.')]); + $this->response->redirectToRoute('/', ['message' => __('Invalid database or table name.')]); return null; } @@ -36,7 +41,7 @@ final class RecentFavoriteController extends AbstractController RecentFavoriteTables::getInstance(TableType::Recent)->removeIfInvalid($favoriteTable); RecentFavoriteTables::getInstance(TableType::Favorite)->removeIfInvalid($favoriteTable); - $this->redirect('/sql', ['db' => $db->getName(), 'table' => $table->getName()]); + $this->response->redirectToRoute('/sql', ['db' => $db->getName(), 'table' => $table->getName()]); return null; } diff --git a/src/Controllers/Table/RelationController.php b/src/Controllers/Table/RelationController.php index ba3671f067..01212835f3 100644 --- a/src/Controllers/Table/RelationController.php +++ b/src/Controllers/Table/RelationController.php @@ -8,7 +8,7 @@ use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Features\DisplayFeature; use PhpMyAdmin\ConfigStorage\Features\RelationFeature; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -37,15 +37,14 @@ use function usort; * * Includes phpMyAdmin relations and InnoDB relations. */ -final class RelationController extends AbstractController +final class RelationController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } /** @@ -88,7 +87,7 @@ final class RelationController extends AbstractController return null; } - $this->addScriptFiles(['table/relation.js']); + $this->response->addScriptFiles(['table/relation.js']); // Set the database $this->dbi->selectDb(Current::$database); @@ -293,7 +292,7 @@ final class RelationController extends AbstractController } // common form - $this->render('table/relation/common_form', [ + $this->response->render('table/relation/common_form', [ 'is_foreign_key_supported' => ForeignKey::isSupported($storageEngine), 'db' => Current::$database, 'table' => Current::$table, diff --git a/src/Controllers/Table/ReplaceController.php b/src/Controllers/Table/ReplaceController.php index 9b7b30d27d..95879f25c6 100644 --- a/src/Controllers/Table/ReplaceController.php +++ b/src/Controllers/Table/ReplaceController.php @@ -5,8 +5,8 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\SqlController as DatabaseSqlController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Sql\SqlController; use PhpMyAdmin\Controllers\Table\SqlController as TableSqlController; use PhpMyAdmin\Core; @@ -23,7 +23,6 @@ use PhpMyAdmin\Plugins\IOTransformationsPlugin; use PhpMyAdmin\Query\Generator as QueryGenerator; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Table; -use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Util; @@ -39,28 +38,26 @@ use function sprintf; /** * Manipulation of table data like inserting, replacing and updating. */ -final class ReplaceController extends AbstractController +final class ReplaceController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private InsertEdit $insertEdit, - private Transformations $transformations, - private Relation $relation, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly InsertEdit $insertEdit, + private readonly Transformations $transformations, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, private readonly SqlController $sqlController, private readonly DatabaseSqlController $databaseSqlController, private readonly ChangeController $changeController, private readonly TableSqlController $tableSqlController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['message'] ??= null; - if (! $this->checkParameters(['db', 'table', 'goto'])) { + if (! $this->response->checkParameters(['db', 'table', 'goto'])) { return null; } @@ -72,7 +69,7 @@ final class ReplaceController extends AbstractController $this->dbi->selectDb(Current::$database); - $this->addScriptFiles(['makegrid.js', 'sql.js', 'gis_data_editor.js']); + $this->response->addScriptFiles(['makegrid.js', 'sql.js', 'gis_data_editor.js']); $afterInsert = $request->getParsedBodyParam('after_insert'); if (in_array($afterInsert, ['new_insert', 'same_insert', 'edit_next'], true)) { @@ -366,7 +363,7 @@ final class ReplaceController extends AbstractController $GLOBALS['sql_query'] = $returnToSqlQuery; } - $this->addScriptFiles(['vendor/jquery/additional-methods.js', 'table/change.js']); + $this->response->addScriptFiles(['vendor/jquery/additional-methods.js', 'table/change.js']); /** * If user asked for "and then Insert another new row" we have to remove diff --git a/src/Controllers/Table/SearchController.php b/src/Controllers/Table/SearchController.php index e97c5bab40..c5ca1e41ec 100644 --- a/src/Controllers/Table/SearchController.php +++ b/src/Controllers/Table/SearchController.php @@ -8,7 +8,7 @@ use PhpMyAdmin\Bookmarks\BookmarkRepository; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationCleanup; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -45,7 +45,7 @@ use function strtoupper; * Display table search form, create SQL query from form data * and call Sql::executeQueryAndSendQueryResponse() to execute it. */ -class SearchController extends AbstractController +final class SearchController implements InvocableController { /** * Names of columns @@ -89,14 +89,13 @@ class SearchController extends AbstractController private array $foreigners = []; public function __construct( - ResponseRenderer $response, - Template $template, - private Search $search, - private Relation $relation, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Search $search, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } /** @@ -157,7 +156,7 @@ class SearchController extends AbstractController */ public function __invoke(ServerRequest $request): Response|null { - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -177,7 +176,7 @@ class SearchController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -191,14 +190,14 @@ class SearchController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } $this->loadTableInfo(); - $this->addScriptFiles([ + $this->response->addScriptFiles([ 'makegrid.js', 'sql.js', 'table/select.js', @@ -279,7 +278,7 @@ class SearchController extends AbstractController $properties[$columnIndex] = $this->getColumnProperties($columnIndex, $columnIndex); } - $this->render('table/search/index', [ + $this->response->render('table/search/index', [ 'db' => Current::$database, 'table' => Current::$table, 'goto' => $GLOBALS['goto'], diff --git a/src/Controllers/Table/SqlController.php b/src/Controllers/Table/SqlController.php index bb241fffa9..70e4e691bb 100644 --- a/src/Controllers/Table/SqlController.php +++ b/src/Controllers/Table/SqlController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Http\Response; @@ -16,7 +16,6 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\SqlQueryForm; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -26,16 +25,14 @@ use function htmlspecialchars; /** * Table SQL executor */ -class SqlController extends AbstractController +class SqlController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private SqlQueryForm $sqlQueryForm, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly SqlQueryForm $sqlQueryForm, + private readonly PageSettings $pageSettings, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -44,13 +41,13 @@ class SqlController extends AbstractController $GLOBALS['goto'] ??= null; $GLOBALS['back'] ??= null; - $this->addScriptFiles(['makegrid.js', 'vendor/jquery/jquery.uitablefilter.js', 'sql.js']); + $this->response->addScriptFiles(['makegrid.js', 'vendor/jquery/jquery.uitablefilter.js', 'sql.js']); $this->pageSettings->init('Sql'); $this->response->addHTML($this->pageSettings->getErrorHTML()); $this->response->addHTML($this->pageSettings->getHTML()); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -70,7 +67,7 @@ class SqlController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -84,7 +81,7 @@ class SqlController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } diff --git a/src/Controllers/Table/Structure/AbstractIndexController.php b/src/Controllers/Table/Structure/AbstractIndexController.php index f986493e24..203460914c 100644 --- a/src/Controllers/Table/Structure/AbstractIndexController.php +++ b/src/Controllers/Table/Structure/AbstractIndexController.php @@ -4,27 +4,23 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; -use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Query\Generator; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Indexes; -use PhpMyAdmin\Template; use function __; use function is_array; -abstract class AbstractIndexController extends AbstractController +abstract class AbstractIndexController { public function __construct( - ResponseRenderer $response, - Template $template, - protected StructureController $structureController, - protected Indexes $indexes, + protected readonly ResponseRenderer $response, + protected readonly StructureController $structureController, + protected readonly Indexes $indexes, ) { - parent::__construct($response, $template); } public function handleIndexCreation(ServerRequest $request, string $indexType): void diff --git a/src/Controllers/Table/Structure/AddIndexController.php b/src/Controllers/Table/Structure/AddIndexController.php index 3504eafa01..134431579b 100644 --- a/src/Controllers/Table/Structure/AddIndexController.php +++ b/src/Controllers/Table/Structure/AddIndexController.php @@ -4,10 +4,11 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; -final class AddIndexController extends AbstractIndexController +final class AddIndexController extends AbstractIndexController implements InvocableController { public function __invoke(ServerRequest $request): Response|null { diff --git a/src/Controllers/Table/Structure/AddKeyController.php b/src/Controllers/Table/Structure/AddKeyController.php index 0b9b95cdbf..734b85f1d4 100644 --- a/src/Controllers/Table/Structure/AddKeyController.php +++ b/src/Controllers/Table/Structure/AddKeyController.php @@ -4,23 +4,18 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Sql\SqlController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class AddKeyController extends AbstractController +final class AddKeyController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private SqlController $sqlController, - private StructureController $structureController, + private readonly SqlController $sqlController, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Table/Structure/BrowseController.php b/src/Controllers/Table/Structure/BrowseController.php index 070db1cc85..6ae2fc08d6 100644 --- a/src/Controllers/Table/Structure/BrowseController.php +++ b/src/Controllers/Table/Structure/BrowseController.php @@ -4,25 +4,23 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ParseAnalyze; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function __; use function implode; use function sprintf; -final class BrowseController extends AbstractController +final class BrowseController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private Sql $sql) + public function __construct(private readonly ResponseRenderer $response, private readonly Sql $sql) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Table/Structure/CentralColumnsAddController.php b/src/Controllers/Table/Structure/CentralColumnsAddController.php index c282557d5a..6c75c43ba9 100644 --- a/src/Controllers/Table/Structure/CentralColumnsAddController.php +++ b/src/Controllers/Table/Structure/CentralColumnsAddController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\Http\Response; @@ -12,21 +12,18 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use function __; use function is_array; -final class CentralColumnsAddController extends AbstractController +final class CentralColumnsAddController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private CentralColumns $centralColumns, - private StructureController $structureController, + private readonly ResponseRenderer $response, + private readonly CentralColumns $centralColumns, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Table/Structure/CentralColumnsRemoveController.php b/src/Controllers/Table/Structure/CentralColumnsRemoveController.php index c855506890..e35fc9d9ea 100644 --- a/src/Controllers/Table/Structure/CentralColumnsRemoveController.php +++ b/src/Controllers/Table/Structure/CentralColumnsRemoveController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\CentralColumns; @@ -12,21 +12,18 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use Webmozart\Assert\Assert; use function __; use function is_array; -final class CentralColumnsRemoveController extends AbstractController +final class CentralColumnsRemoveController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private CentralColumns $centralColumns, - private StructureController $structureController, + private readonly ResponseRenderer $response, + private readonly CentralColumns $centralColumns, + private readonly StructureController $structureController, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Table/Structure/ChangeController.php b/src/Controllers/Table/Structure/ChangeController.php index 6cee2c6143..13b383577e 100644 --- a/src/Controllers/Table/Structure/ChangeController.php +++ b/src/Controllers/Table/Structure/ChangeController.php @@ -5,14 +5,13 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\ColumnFull; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\ColumnsDefinition; -use PhpMyAdmin\Template; use PhpMyAdmin\UserPrivilegesFactory; use function __; @@ -23,21 +22,19 @@ use function count; use function in_array; use function is_array; -final class ChangeController extends AbstractController +final class ChangeController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private ColumnsDefinition $columnsDefinition, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly ColumnsDefinition $columnsDefinition, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { - if (! $this->checkParameters(['server', 'db', 'table'])) { + if (! $this->response->checkParameters(['server', 'db', 'table'])) { return null; } @@ -91,7 +88,7 @@ final class ChangeController extends AbstractController */ $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); - $this->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); + $this->response->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); $templateData = $this->columnsDefinition->displayForm( $userPrivileges, @@ -101,6 +98,6 @@ final class ChangeController extends AbstractController $fieldsMeta, ); - $this->render('columns_definitions/column_definitions_form', $templateData); + $this->response->render('columns_definitions/column_definitions_form', $templateData); } } diff --git a/src/Controllers/Table/Structure/FulltextController.php b/src/Controllers/Table/Structure/FulltextController.php index 55ef36904f..5502ec8ce1 100644 --- a/src/Controllers/Table/Structure/FulltextController.php +++ b/src/Controllers/Table/Structure/FulltextController.php @@ -4,10 +4,11 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; -final class FulltextController extends AbstractIndexController +final class FulltextController extends AbstractIndexController implements InvocableController { public function __invoke(ServerRequest $request): Response|null { diff --git a/src/Controllers/Table/Structure/MoveColumnsController.php b/src/Controllers/Table/Structure/MoveColumnsController.php index a729830392..7e154f13b3 100644 --- a/src/Controllers/Table/Structure/MoveColumnsController.php +++ b/src/Controllers/Table/Structure/MoveColumnsController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Response; @@ -27,17 +27,15 @@ use function mb_strtoupper; use function sprintf; use function str_replace; -final class MoveColumnsController extends AbstractController +final class MoveColumnsController implements InvocableController { private Table $tableObj; public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); - $this->tableObj = $this->dbi->getTable(Current::$database, Current::$table); } diff --git a/src/Controllers/Table/Structure/PartitioningController.php b/src/Controllers/Table/Structure/PartitioningController.php index cee165ddda..d6e2471296 100644 --- a/src/Controllers/Table/Structure/PartitioningController.php +++ b/src/Controllers/Table/Structure/PartitioningController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Config\PageSettings; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\CreateAddField; use PhpMyAdmin\Current; @@ -20,7 +20,6 @@ use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Statements\CreateStatement; use PhpMyAdmin\StorageEngine; use PhpMyAdmin\Table\Table; -use PhpMyAdmin\Template; use PhpMyAdmin\Util; use function __; @@ -30,17 +29,15 @@ use function strrpos; use function substr; use function trim; -final class PartitioningController extends AbstractController +final class PartitioningController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private CreateAddField $createAddField, - private StructureController $structureController, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly CreateAddField $createAddField, + private readonly StructureController $structureController, + private readonly PageSettings $pageSettings, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -57,7 +54,7 @@ final class PartitioningController extends AbstractController $this->response->addHTML($this->pageSettings->getErrorHTML()); $this->response->addHTML($this->pageSettings->getHTML()); - $this->addScriptFiles(['table/structure.js']); + $this->response->addScriptFiles(['table/structure.js']); $partitionDetails = null; if (! isset($_POST['partition_by'])) { @@ -70,7 +67,7 @@ final class PartitioningController extends AbstractController $partitionDetails = TablePartitionDefinition::getDetails(); } - $this->render('table/structure/partition_definition_form', [ + $this->response->render('table/structure/partition_definition_form', [ 'db' => Current::$database, 'table' => Current::$table, 'partition_details' => $partitionDetails, diff --git a/src/Controllers/Table/Structure/PrimaryController.php b/src/Controllers/Table/Structure/PrimaryController.php index 0e6afe052d..6aeeaaa286 100644 --- a/src/Controllers/Table/Structure/PrimaryController.php +++ b/src/Controllers/Table/Structure/PrimaryController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -16,7 +16,6 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -24,16 +23,14 @@ use function __; use function count; use function is_array; -final class PrimaryController extends AbstractController +final class PrimaryController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private StructureController $structureController, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, + private readonly StructureController $structureController, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -59,7 +56,7 @@ final class PrimaryController extends AbstractController $deletionConfirmed = $request->getParsedBodyParam('mult_btn'); if ($hasPrimary && $deletionConfirmed === null) { - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -79,7 +76,7 @@ final class PrimaryController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -93,12 +90,12 @@ final class PrimaryController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } - $this->render('table/structure/primary', [ + $this->response->render('table/structure/primary', [ 'db' => Current::$database, 'table' => Current::$table, 'selected' => $selected, diff --git a/src/Controllers/Table/Structure/ReservedWordCheckController.php b/src/Controllers/Table/Structure/ReservedWordCheckController.php index e3643fb297..015b3c0b91 100644 --- a/src/Controllers/Table/Structure/ReservedWordCheckController.php +++ b/src/Controllers/Table/Structure/ReservedWordCheckController.php @@ -5,10 +5,11 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\SqlParser\Context; use function _ngettext; @@ -17,8 +18,12 @@ use function implode; use function sprintf; use function trim; -final class ReservedWordCheckController extends AbstractController +final class ReservedWordCheckController implements InvocableController { + public function __construct(private readonly ResponseRenderer $response) + { + } + public function __invoke(ServerRequest $request): Response|null { if (Config::getInstance()->settings['ReservedWordDisableWarning'] !== false) { diff --git a/src/Controllers/Table/Structure/SaveController.php b/src/Controllers/Table/Structure/SaveController.php index 935065b68e..42fa59c3f6 100644 --- a/src/Controllers/Table/Structure/SaveController.php +++ b/src/Controllers/Table/Structure/SaveController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; @@ -18,7 +18,6 @@ use PhpMyAdmin\Index; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Table; -use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Url; use PhpMyAdmin\UserPrivileges; @@ -34,21 +33,18 @@ use function sprintf; use function str_contains; use function strlen; -final class SaveController extends AbstractController +final class SaveController implements InvocableController { private Table $tableObj; public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, - private Transformations $transformations, - private DatabaseInterface $dbi, - private StructureController $structureController, + private readonly ResponseRenderer $response, + private readonly Relation $relation, + private readonly Transformations $transformations, + private readonly DatabaseInterface $dbi, + private readonly StructureController $structureController, private readonly UserPrivilegesFactory $userPrivilegesFactory, ) { - parent::__construct($response, $template); - $this->tableObj = $this->dbi->getTable(Current::$database, Current::$table); } diff --git a/src/Controllers/Table/Structure/SpatialController.php b/src/Controllers/Table/Structure/SpatialController.php index 1ac8cc536a..78f0168dfb 100644 --- a/src/Controllers/Table/Structure/SpatialController.php +++ b/src/Controllers/Table/Structure/SpatialController.php @@ -4,10 +4,11 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; -final class SpatialController extends AbstractIndexController +final class SpatialController extends AbstractIndexController implements InvocableController { public function __invoke(ServerRequest $request): Response|null { diff --git a/src/Controllers/Table/Structure/UniqueController.php b/src/Controllers/Table/Structure/UniqueController.php index bd19086941..76c9834e1b 100644 --- a/src/Controllers/Table/Structure/UniqueController.php +++ b/src/Controllers/Table/Structure/UniqueController.php @@ -4,10 +4,11 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; -final class UniqueController extends AbstractIndexController +final class UniqueController extends AbstractIndexController implements InvocableController { public function __invoke(ServerRequest $request): Response|null { diff --git a/src/Controllers/Table/StructureController.php b/src/Controllers/Table/StructureController.php index cec4b4c940..3541f217c5 100644 --- a/src/Controllers/Table/StructureController.php +++ b/src/Controllers/Table/StructureController.php @@ -10,7 +10,7 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\DatabaseInterface; @@ -46,21 +46,19 @@ use function strtotime; * Displays table structure infos like columns, indexes, size, rows * and allows manipulation of indexes and columns. */ -class StructureController extends AbstractController +class StructureController implements InvocableController { private readonly Table $tableObj; public function __construct( - ResponseRenderer $response, - Template $template, - private Relation $relation, - private Transformations $transformations, - private DatabaseInterface $dbi, - private PageSettings $pageSettings, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Relation $relation, + private readonly Transformations $transformations, + private readonly DatabaseInterface $dbi, + private readonly PageSettings $pageSettings, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); - $this->tableObj = $this->dbi->getTable(Current::$database, Current::$table); } @@ -74,11 +72,11 @@ class StructureController extends AbstractController $this->response->addHTML($this->pageSettings->getErrorHTML()); $this->response->addHTML($this->pageSettings->getHTML()); - $this->addScriptFiles(['table/structure.js']); + $this->response->addScriptFiles(['table/structure.js']); $relationParameters = $this->relation->getRelationParameters(); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -99,7 +97,7 @@ class StructureController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -113,7 +111,7 @@ class StructureController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } diff --git a/src/Controllers/Table/TrackingController.php b/src/Controllers/Table/TrackingController.php index 2156e7be9d..a4f2143b05 100644 --- a/src/Controllers/Table/TrackingController.php +++ b/src/Controllers/Table/TrackingController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Table; use DateTimeImmutable; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; @@ -16,7 +16,6 @@ use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Tracking\LogTypeEnum; use PhpMyAdmin\Tracking\Tracker; use PhpMyAdmin\Tracking\Tracking; @@ -36,16 +35,14 @@ use function mb_strlen; use function sprintf; use function trim; -final class TrackingController extends AbstractController +final class TrackingController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Tracking $tracking, - private TrackingChecker $trackingChecker, + private readonly ResponseRenderer $response, + private readonly Tracking $tracking, + private readonly TrackingChecker $trackingChecker, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -53,9 +50,9 @@ final class TrackingController extends AbstractController $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; - $this->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'table/tracking.js']); + $this->response->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'table/tracking.js']); - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -75,7 +72,7 @@ final class TrackingController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -153,7 +150,7 @@ final class TrackingController extends AbstractController $this->tracking->exportAsSqlExecution($entries); $message = Message::success(__('SQL statements executed.'))->getDisplay(); } elseif ($reportExportType === 'sqldump') { - $this->addScriptFiles(['sql.js']); + $this->response->addScriptFiles(['sql.js']); $sqlDump = $this->tracking->exportAsSqlDump($entries); } } @@ -257,7 +254,7 @@ final class TrackingController extends AbstractController LanguageManager::$textDir, ); - $this->render('table/tracking/index', [ + $this->response->render('table/tracking/index', [ 'active_message' => $activeMessage, 'action_message' => $actionMessage, 'delete_version' => $deleteVersion, diff --git a/src/Controllers/Table/ZoomSearchController.php b/src/Controllers/Table/ZoomSearchController.php index ecf87d6502..90e4b12183 100644 --- a/src/Controllers/Table/ZoomSearchController.php +++ b/src/Controllers/Table/ZoomSearchController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -46,7 +46,7 @@ use function strtoupper; * * Display table zoom search form, create SQL queries from form data. */ -class ZoomSearchController extends AbstractController +final class ZoomSearchController implements InvocableController { /** @var list */ private array $columnNames = []; @@ -70,14 +70,13 @@ class ZoomSearchController extends AbstractController private array $foreigners = []; public function __construct( - ResponseRenderer $response, - Template $template, - private Search $search, - private Relation $relation, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly Search $search, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -85,7 +84,7 @@ class ZoomSearchController extends AbstractController $GLOBALS['goto'] ??= null; $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -103,7 +102,7 @@ class ZoomSearchController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -117,14 +116,14 @@ class ZoomSearchController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } $this->loadTableInfo(); - $this->addScriptFiles([ + $this->response->addScriptFiles([ 'makegrid.js', 'sql.js', 'vendor/jqplot/jquery.jqplot.js', @@ -271,7 +270,7 @@ class ZoomSearchController extends AbstractController ); } - $this->render('table/zoom_search/index', [ + $this->response->render('table/zoom_search/index', [ 'db' => Current::$database, 'table' => Current::$table, 'goto' => $GLOBALS['goto'], @@ -416,7 +415,7 @@ class ZoomSearchController extends AbstractController ); } - $this->render('table/zoom_search/result_form', [ + $this->response->render('table/zoom_search/result_form', [ 'db' => Current::$database, 'table' => Current::$table, 'column_names' => $this->columnNames, diff --git a/src/Controllers/TableController.php b/src/Controllers/TableController.php index 4508e9b75c..474cb62089 100644 --- a/src/Controllers/TableController.php +++ b/src/Controllers/TableController.php @@ -9,13 +9,11 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; -final class TableController extends AbstractController +final class TableController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) + public function __construct(private readonly ResponseRenderer $response, private readonly DatabaseInterface $dbi) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/ThemeSetController.php b/src/Controllers/ThemeSetController.php index 3ad648eaee..906d97a4c7 100644 --- a/src/Controllers/ThemeSetController.php +++ b/src/Controllers/ThemeSetController.php @@ -8,22 +8,19 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; use PhpMyAdmin\Url; use PhpMyAdmin\UserPreferences; use function is_string; -final class ThemeSetController extends AbstractController +final class ThemeSetController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private ThemeManager $themeManager, - private UserPreferences $userPreferences, + private readonly ResponseRenderer $response, + private readonly ThemeManager $themeManager, + private readonly UserPreferences $userPreferences, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/ThemesController.php b/src/Controllers/ThemesController.php index 6ef2b5abaf..64cf628ea1 100644 --- a/src/Controllers/ThemesController.php +++ b/src/Controllers/ThemesController.php @@ -10,11 +10,13 @@ use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use PhpMyAdmin\Theme\ThemeManager; -class ThemesController extends AbstractController +final class ThemesController implements InvocableController { - public function __construct(ResponseRenderer $response, Template $template, private ThemeManager $themeManager) - { - parent::__construct($response, $template); + public function __construct( + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly ThemeManager $themeManager, + ) { } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Transformation/OverviewController.php b/src/Controllers/Transformation/OverviewController.php index 2d55db7c75..96abfb2eba 100644 --- a/src/Controllers/Transformation/OverviewController.php +++ b/src/Controllers/Transformation/OverviewController.php @@ -4,11 +4,10 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Transformation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use function array_keys; @@ -16,14 +15,12 @@ use function array_keys; /** * Lists available transformation plugins */ -class OverviewController extends AbstractController +final class OverviewController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Transformations $transformations, + private readonly ResponseRenderer $response, + private readonly Transformations $transformations, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -49,7 +46,10 @@ class OverviewController extends AbstractController } } - $this->render('transformation_overview', ['mime_types' => $mimeTypes, 'transformations' => $transformations]); + $this->response->render('transformation_overview', [ + 'mime_types' => $mimeTypes, + 'transformations' => $transformations, + ]); return null; } diff --git a/src/Controllers/Transformation/WrapperController.php b/src/Controllers/Transformation/WrapperController.php index 1cc333fcae..e9b9b0d479 100644 --- a/src/Controllers/Transformation/WrapperController.php +++ b/src/Controllers/Transformation/WrapperController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Transformation; use PhpMyAdmin\ConfigStorage\Relation; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -17,7 +17,6 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Image\ImageWrapper; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Util; @@ -35,17 +34,15 @@ use function strtolower; /** * Wrapper script for rendering transformations */ -class WrapperController extends AbstractController +final class WrapperController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private Transformations $transformations, - private Relation $relation, - private DatabaseInterface $dbi, - private DbTableExists $dbTableExists, + private readonly ResponseRenderer $response, + private readonly Transformations $transformations, + private readonly Relation $relation, + private readonly DatabaseInterface $dbi, + private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/Triggers/IndexController.php b/src/Controllers/Triggers/IndexController.php index cbcec9a108..6430237661 100644 --- a/src/Controllers/Triggers/IndexController.php +++ b/src/Controllers/Triggers/IndexController.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Triggers; use PhpMyAdmin\Config; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -33,16 +33,15 @@ use function trim; /** * Triggers management. */ -final class IndexController extends AbstractController +final class IndexController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, - private Triggers $triggers, + private readonly ResponseRenderer $response, + private readonly Template $template, + private readonly DatabaseInterface $dbi, + private readonly Triggers $triggers, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -51,7 +50,7 @@ final class IndexController extends AbstractController $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; - $this->addScriptFiles(['triggers.js', 'sql.js']); + $this->response->addScriptFiles(['triggers.js', 'sql.js']); if (! $request->isAjax()) { $config = Config::getInstance(); @@ -59,7 +58,7 @@ final class IndexController extends AbstractController * Displays the header and tabs */ if (Current::$table !== '' && in_array(Current::$table, $this->dbi->getTables(Current::$database), true)) { - if (! $this->checkParameters(['db', 'table'])) { + if (! $this->response->checkParameters(['db', 'table'])) { return null; } @@ -69,21 +68,24 @@ final class IndexController extends AbstractController $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute( + '/', + ['reload' => true, 'message' => __('No databases selected.')], + ); return null; } $tableName = TableName::tryFrom($request->getParam('table')); if ($tableName === null || ! $this->dbTableExists->hasTable($databaseName, $tableName)) { - $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); return null; } } else { Current::$table = ''; - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -95,7 +97,10 @@ final class IndexController extends AbstractController $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute( + '/', + ['reload' => true, 'message' => __('No databases selected.')], + ); return null; } @@ -259,7 +264,10 @@ final class IndexController extends AbstractController } if ($exportData !== null) { - $this->render('triggers/export', ['data' => $exportData, 'item_name' => $triggerName->getName()]); + $this->response->render('triggers/export', [ + 'data' => $exportData, + 'item_name' => $triggerName->getName(), + ]); return null; } @@ -281,7 +289,7 @@ final class IndexController extends AbstractController $hasTriggerPrivilege = Util::currentUserHasPrivilege('TRIGGER', Current::$database, Current::$table); $isAjax = $request->isAjax() && empty($request->getParam('ajax_page_request')); - $this->render('triggers/list', [ + $this->response->render('triggers/list', [ 'db' => Current::$database, 'table' => Current::$table, 'triggers' => $triggers, diff --git a/src/Controllers/UserPasswordController.php b/src/Controllers/UserPasswordController.php index 216e1299ec..e358ef6375 100644 --- a/src/Controllers/UserPasswordController.php +++ b/src/Controllers/UserPasswordController.php @@ -11,7 +11,6 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\UserPassword; use function __; @@ -19,15 +18,13 @@ use function __; /** * Displays and handles the form where the user can change their password. */ -class UserPasswordController extends AbstractController +final class UserPasswordController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private UserPassword $userPassword, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly UserPassword $userPassword, + private readonly DatabaseInterface $dbi, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null @@ -36,7 +33,7 @@ class UserPasswordController extends AbstractController $GLOBALS['username'] ??= null; $GLOBALS['change_password_message'] ??= null; - $this->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); + $this->response->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); $config = Config::getInstance(); /** @@ -87,7 +84,7 @@ class UserPasswordController extends AbstractController $this->response->addHTML('

' . __('Change password') . '

' . "\n\n"); $this->response->addHTML(Generator::getMessage($message, $sqlQuery, 'success')); - $this->render('user_password'); + $this->response->render('user_password', []); return null; } diff --git a/src/Controllers/VersionCheckController.php b/src/Controllers/VersionCheckController.php index 12232fad5f..38c116cae5 100644 --- a/src/Controllers/VersionCheckController.php +++ b/src/Controllers/VersionCheckController.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\VersionInformation; use function header; @@ -18,14 +17,12 @@ use function sprintf; /** * A caching proxy for retrieving version information from https://www.phpmyadmin.net/. */ -class VersionCheckController extends AbstractController +final class VersionCheckController implements InvocableController { public function __construct( - ResponseRenderer $response, - Template $template, - private VersionInformation $versionInformation, + private readonly ResponseRenderer $response, + private readonly VersionInformation $versionInformation, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null diff --git a/src/Controllers/View/CreateController.php b/src/Controllers/View/CreateController.php index 6c9b541edf..5195c9b1c7 100644 --- a/src/Controllers/View/CreateController.php +++ b/src/Controllers/View/CreateController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\View; use PhpMyAdmin\Config; use PhpMyAdmin\Container\ContainerBuilder; -use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -22,7 +22,6 @@ use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Statements\CreateStatement; use PhpMyAdmin\SqlParser\TokensList; use PhpMyAdmin\SystemDatabase; -use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -38,7 +37,7 @@ use function substr; /** * Handles creation of VIEWs. */ -class CreateController extends AbstractController +final class CreateController implements InvocableController { /** @todo Move the whole view rebuilding logic to SQL parser */ private const VIEW_SECURITY_OPTIONS = ['DEFINER', 'INVOKER']; @@ -48,17 +47,15 @@ class CreateController extends AbstractController private const VIEW_WITH_OPTIONS = ['CASCADED', 'LOCAL']; public function __construct( - ResponseRenderer $response, - Template $template, - private DatabaseInterface $dbi, + private readonly ResponseRenderer $response, + private readonly DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { - parent::__construct($response, $template); } public function __invoke(ServerRequest $request): Response|null { - if (! $this->checkParameters(['db'])) { + if (! $this->response->checkParameters(['db'])) { return null; } @@ -80,7 +77,7 @@ class CreateController extends AbstractController return null; } - $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); + $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); return null; } @@ -190,9 +187,9 @@ class CreateController extends AbstractController $GLOBALS['urlParams']['db'] = Current::$database; $GLOBALS['urlParams']['reload'] = 1; - $this->addScriptFiles(['sql.js']); + $this->response->addScriptFiles(['sql.js']); - $this->render('view_create', [ + $this->response->render('view_create', [ 'ajax_dialog' => $ajaxdialog, 'text_dir' => LanguageManager::$textDir, 'url_params' => $GLOBALS['urlParams'], diff --git a/src/ResponseRenderer.php b/src/ResponseRenderer.php index 31fc2162be..6231f5090d 100644 --- a/src/ResponseRenderer.php +++ b/src/ResponseRenderer.php @@ -1,7 +1,4 @@ addHeader('Location', $url); $this->setStatusCode($statusCode); } + + /** @param array $params */ + public function redirectToRoute(string $route, array $params = []): void + { + $this->redirect('./index.php?route=' . $route . Url::getCommonRaw($params, '&')); + } + + /** @psalm-param list $files */ + public function addScriptFiles(array $files): void + { + $this->getHeader()->getScripts()->addFiles($files); + } + + /** + * Function added to avoid path disclosures. + * Called by each script that needs parameters. + * + * @param bool $request Check parameters in request + * @psalm-param non-empty-list $params The names of the parameters needed by the calling script + */ + public function checkParameters(array $params, bool $request = false): bool + { + $foundError = false; + $errorMessage = ''; + $array = $request ? $_REQUEST : $GLOBALS; + + foreach ($params as $param) { + if (isset($array[$param]) && $array[$param] !== '') { + continue; + } + + if (! $request && $param === 'server' && Current::$server > 0) { + continue; + } + + if (! $request && $param === 'db' && Current::$database !== '') { + continue; + } + + if (! $request && $param === 'table' && Current::$table !== '') { + continue; + } + + $errorMessage .= + __('Missing parameter:') . ' ' + . $param + . MySQLDocumentation::showDocumentation('faq', 'faqmissingparameters', true) + . '[br]'; + $foundError = true; + } + + if ($foundError) { + $this->setStatusCode(StatusCodeInterface::STATUS_BAD_REQUEST); + $this->setRequestStatus(false); + $this->addHTML(Message::error($errorMessage)->getDisplay()); + } + + return ! $foundError; + } + + /** @param array $templateData */ + public function render(string $templatePath, array $templateData = []): void + { + $this->addHTML($this->template->render($templatePath, $templateData)); + } } diff --git a/tests/unit/Controllers/AbstractControllerTest.php b/tests/unit/Controllers/AbstractControllerTest.php deleted file mode 100644 index 0c90435e81..0000000000 --- a/tests/unit/Controllers/AbstractControllerTest.php +++ /dev/null @@ -1,144 +0,0 @@ -createDatabaseInterface(); - } - - public function testCheckParametersWithMissingParameters(): void - { - $_REQUEST = []; - - $response = new ResponseRenderer(); - $template = new Template(); - $controller = new class ($response, $template) extends AbstractController { - public function __invoke(ServerRequest $request): Response|null - { - return null; - } - - /** @psalm-param non-empty-list $params */ - public function testCheckParameters(array $params): bool - { - return $this->checkParameters($params); - } - }; - - \PhpMyAdmin\ResponseRenderer::getInstance()->setAjax(false); - - $GLOBALS['param1'] = 'param1'; - $GLOBALS['param2'] = null; - - $message = 'Missing parameter: param2'; - $message .= MySQLDocumentation::showDocumentation('faq', 'faqmissingparameters', true); - $message .= '[br]'; - $expected = Message::error($message)->getDisplay(); - - self::assertFalse($controller->testCheckParameters(['param1', 'param2'])); - self::assertSame($expected, $response->getHTMLResult()); - self::assertSame(400, $response->getResponse()->getStatusCode()); - } - - public function testCheckParametersWithAllParameters(): void - { - $_REQUEST = []; - - $response = new ResponseRenderer(); - $controller = new class ($response, new Template()) extends AbstractController { - public function __invoke(ServerRequest $request): Response|null - { - return null; - } - - /** @psalm-param non-empty-list $params */ - public function testCheckParameters(array $params): bool - { - return $this->checkParameters($params); - } - }; - - \PhpMyAdmin\ResponseRenderer::getInstance()->setAjax(false); - - $GLOBALS['param1'] = 'param1'; - $GLOBALS['param2'] = 'param2'; - - self::assertTrue($controller->testCheckParameters(['param1', 'param2'])); - self::assertSame(200, $response->getResponse()->getStatusCode()); - } - - public function testSendErrorResponseWithJson(): void - { - $response = new ResponseRenderer(); - $response->setAjax(true); - - $controller = new class ($response, new Template()) extends AbstractController { - public function __invoke(ServerRequest $request): Response|null - { - return null; - } - - /** @psalm-param StatusCodeInterface::STATUS_* $statusCode */ - public function testSendErrorResponse(string $message, int $statusCode = 400): void - { - $this->sendErrorResponse($message, $statusCode); - } - }; - - $controller->testSendErrorResponse('Error message.', 404); - - self::assertSame(404, $response->getResponse()->getStatusCode()); - self::assertFalse($response->hasSuccessState()); - self::assertSame('', $response->getHTMLResult()); - self::assertSame(['isErrorResponse' => true, 'message' => 'Error message.'], $response->getJSONResult()); - } - - public function testSendErrorResponseWithHtml(): void - { - $response = new ResponseRenderer(); - $response->setAjax(false); - - $controller = new class ($response, new Template()) extends AbstractController { - public function __invoke(ServerRequest $request): Response|null - { - return null; - } - - /** @psalm-param StatusCodeInterface::STATUS_* $statusCode */ - public function testSendErrorResponse(string $message, int $statusCode = 400): void - { - $this->sendErrorResponse($message, $statusCode); - } - }; - - $controller->testSendErrorResponse('Error message.', 404); - - self::assertSame(404, $response->getResponse()->getStatusCode()); - self::assertFalse($response->hasSuccessState()); - self::assertSame( - Message::error('Error message.')->getDisplay(), - $response->getHTMLResult(), - ); - self::assertSame([], $response->getJSONResult()); - } -} diff --git a/tests/unit/Controllers/BrowseForeignersControllerTest.php b/tests/unit/Controllers/BrowseForeignersControllerTest.php index 30c6643ad6..75f15cafb5 100644 --- a/tests/unit/Controllers/BrowseForeignersControllerTest.php +++ b/tests/unit/Controllers/BrowseForeignersControllerTest.php @@ -160,7 +160,6 @@ HTML; (new BrowseForeignersController( $response, - $template, new BrowseForeigners($template, $config, new ThemeManager()), new Relation($dbi), ))($request); diff --git a/tests/unit/Controllers/ChangeLogControllerTest.php b/tests/unit/Controllers/ChangeLogControllerTest.php index 97327f51be..95c3c7bff8 100644 --- a/tests/unit/Controllers/ChangeLogControllerTest.php +++ b/tests/unit/Controllers/ChangeLogControllerTest.php @@ -27,7 +27,7 @@ final class ChangeLogControllerTest extends AbstractTestCase $responseRenderer = new ResponseRenderer(); $template = new Template(); - $controller = new ChangeLogController($responseRenderer, $template, $config); + $controller = new ChangeLogController($responseRenderer, $config); $controller($request); self::assertTrue($responseRenderer->isDisabled()); @@ -66,7 +66,7 @@ HTML; $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/'); $responseRenderer = new ResponseRenderer(); - $controller = new ChangeLogController($responseRenderer, new Template(), $config); + $controller = new ChangeLogController($responseRenderer, $config); $controller($request); self::assertStringContainsString( @@ -87,7 +87,7 @@ HTML; $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/'); $responseRenderer = new ResponseRenderer(); - $controller = new ChangeLogController($responseRenderer, new Template(), $config); + $controller = new ChangeLogController($responseRenderer, $config); $controller($request); self::assertSame('', $responseRenderer->getHTMLResult()); diff --git a/tests/unit/Controllers/CheckRelationsControllerTest.php b/tests/unit/Controllers/CheckRelationsControllerTest.php index b4a68aac7a..74054af3ba 100644 --- a/tests/unit/Controllers/CheckRelationsControllerTest.php +++ b/tests/unit/Controllers/CheckRelationsControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Controllers\CheckRelationsController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -48,7 +47,7 @@ class CheckRelationsControllerTest extends AbstractTestCase $response = new ResponseRenderer(); Config::getInstance()->selectedServer['pmadb'] = ''; (new ReflectionProperty(Relation::class, 'cache'))->setValue(null, null); - $controller = new CheckRelationsController($response, new Template(), new Relation($this->dbi)); + $controller = new CheckRelationsController($response, new Relation($this->dbi)); $controller($request); $actual = $response->getHTMLResult(); diff --git a/tests/unit/Controllers/CollationConnectionControllerTest.php b/tests/unit/Controllers/CollationConnectionControllerTest.php index a71e0a596d..ea2154be69 100644 --- a/tests/unit/Controllers/CollationConnectionControllerTest.php +++ b/tests/unit/Controllers/CollationConnectionControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\CollationConnectionController; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Url; use PHPUnit\Framework\Attributes\CoversClass; @@ -29,10 +28,6 @@ class CollationConnectionControllerTest extends AbstractTestCase $config->expects(self::once())->method('setUserValue') ->with(null, 'DefaultConnectionCollation', 'utf8mb4_general_ci', 'utf8mb4_unicode_ci'); - (new CollationConnectionController( - $response, - new Template(), - $config, - ))($request); + (new CollationConnectionController($response, $config))($request); } } diff --git a/tests/unit/Controllers/ColumnControllerTest.php b/tests/unit/Controllers/ColumnControllerTest.php index f6828828ef..d79a7ad084 100644 --- a/tests/unit/Controllers/ColumnControllerTest.php +++ b/tests/unit/Controllers/ColumnControllerTest.php @@ -4,11 +4,9 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers; -use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\ColumnController; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\Message; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -23,7 +21,7 @@ final class ColumnControllerTest extends AbstractTestCase $dbi = $this->createDatabaseInterface(); $responseRenderer = new ResponseRenderer(); - $controller = new ColumnController($responseRenderer, new Template(new Config()), $dbi); + $controller = new ColumnController($responseRenderer, $dbi); $controller($request); self::assertTrue($responseRenderer->hasSuccessState()); @@ -37,7 +35,7 @@ final class ColumnControllerTest extends AbstractTestCase $dbi = $this->createDatabaseInterface(); $responseRenderer = new ResponseRenderer(); - $controller = new ColumnController($responseRenderer, new Template(new Config()), $dbi); + $controller = new ColumnController($responseRenderer, $dbi); $controller($request); self::assertFalse($responseRenderer->hasSuccessState()); diff --git a/tests/unit/Controllers/Console/Bookmark/AddControllerTest.php b/tests/unit/Controllers/Console/Bookmark/AddControllerTest.php index af900910e5..8f693b585d 100644 --- a/tests/unit/Controllers/Console/Bookmark/AddControllerTest.php +++ b/tests/unit/Controllers/Console/Bookmark/AddControllerTest.php @@ -11,7 +11,6 @@ use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\Controllers\Console\Bookmark\AddController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -34,7 +33,7 @@ class AddControllerTest extends AbstractTestCase ]); $relation = new Relation($dbi); $bookmarkRepository = new BookmarkRepository($dbi, $relation); - $controller = new AddController($response, new Template(), $bookmarkRepository); + $controller = new AddController($response, $bookmarkRepository); $controller($request); self::assertSame(['message' => 'Incomplete params'], $response->getJSONResult()); } @@ -55,7 +54,7 @@ class AddControllerTest extends AbstractTestCase ]); $relation = new Relation($dbi); $bookmarkRepository = new BookmarkRepository($dbi, $relation); - $controller = new AddController($response, new Template(), $bookmarkRepository); + $controller = new AddController($response, $bookmarkRepository); $controller($request); self::assertSame(['message' => 'Failed'], $response->getJSONResult()); } @@ -89,7 +88,7 @@ class AddControllerTest extends AbstractTestCase ]); $relation = new Relation($dbi); $bookmarkRepository = new BookmarkRepository($dbi, $relation); - $controller = new AddController($response, new Template(), $bookmarkRepository); + $controller = new AddController($response, $bookmarkRepository); $controller($request); self::assertSame( [ diff --git a/tests/unit/Controllers/Console/Bookmark/RefreshControllerTest.php b/tests/unit/Controllers/Console/Bookmark/RefreshControllerTest.php index a31a16d90f..6ed1d234e0 100644 --- a/tests/unit/Controllers/Console/Bookmark/RefreshControllerTest.php +++ b/tests/unit/Controllers/Console/Bookmark/RefreshControllerTest.php @@ -28,7 +28,6 @@ class RefreshControllerTest extends AbstractTestCase $template = new Template(); $controller = new RefreshController( $response, - $template, new Console($relation, $template, $bookmarkRepository), ); $controller(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Console/UpdateConfigControllerTest.php b/tests/unit/Controllers/Console/UpdateConfigControllerTest.php index 531b964b0e..dcbdb1fb92 100644 --- a/tests/unit/Controllers/Console/UpdateConfigControllerTest.php +++ b/tests/unit/Controllers/Console/UpdateConfigControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Console\UpdateConfigController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\Message; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -30,7 +29,7 @@ final class UpdateConfigControllerTest extends AbstractTestCase $config = new Config(); $responseRenderer = new ResponseRenderer(); $responseRenderer->setAjax(true); - $controller = new UpdateConfigController($responseRenderer, new Template($config), $config); + $controller = new UpdateConfigController($responseRenderer, $config); $response = $controller($request); $responseBody = (string) $response->getBody(); @@ -83,7 +82,7 @@ final class UpdateConfigControllerTest extends AbstractTestCase $config = new Config(); $responseRenderer = new ResponseRenderer(); $responseRenderer->setAjax(true); - $controller = new UpdateConfigController($responseRenderer, new Template($config), $config); + $controller = new UpdateConfigController($responseRenderer, $config); $response = $controller($request); $responseBody = (string) $response->getBody(); @@ -143,7 +142,7 @@ final class UpdateConfigControllerTest extends AbstractTestCase $config->method('setUserValue')->willReturn(Message::error('Could not save configuration')); $responseRenderer = new ResponseRenderer(); $responseRenderer->setAjax(true); - $controller = new UpdateConfigController($responseRenderer, new Template($config), $config); + $controller = new UpdateConfigController($responseRenderer, $config); $response = $controller($request); $responseBody = (string) $response->getBody(); diff --git a/tests/unit/Controllers/Database/MultiTableQuery/TablesControllerTest.php b/tests/unit/Controllers/Database/MultiTableQuery/TablesControllerTest.php index 168aa6cd6b..0a274f6beb 100644 --- a/tests/unit/Controllers/Database/MultiTableQuery/TablesControllerTest.php +++ b/tests/unit/Controllers/Database/MultiTableQuery/TablesControllerTest.php @@ -7,7 +7,6 @@ namespace PhpMyAdmin\Tests\Controllers\Database\MultiTableQuery; use PhpMyAdmin\Controllers\Database\MultiTableQuery\TablesController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -37,7 +36,7 @@ class TablesControllerTest extends AbstractTestCase $_GET['db'] = 'test'; $responseRenderer = new ResponseRenderer(); - $multiTableQueryController = new TablesController($responseRenderer, new Template(), $this->dbi); + $multiTableQueryController = new TablesController($responseRenderer, $this->dbi); $request = self::createStub(ServerRequest::class); $request->method('getQueryParam')->willReturn($_GET['tables'], $_GET['db']); diff --git a/tests/unit/Controllers/Database/PrivilegesControllerTest.php b/tests/unit/Controllers/Database/PrivilegesControllerTest.php index 06eaa3341b..282fa6814f 100644 --- a/tests/unit/Controllers/Database/PrivilegesControllerTest.php +++ b/tests/unit/Controllers/Database/PrivilegesControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Server\Privileges; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -68,7 +67,6 @@ class PrivilegesControllerTest extends AbstractTestCase $response = new ResponseRenderer(); (new PrivilegesController( $response, - new Template(), $serverPrivileges, DatabaseInterface::getInstance(), ))($request); @@ -115,7 +113,6 @@ class PrivilegesControllerTest extends AbstractTestCase $response = new ResponseRenderer(); (new PrivilegesController( $response, - new Template(), self::createStub(Privileges::class), $this->createDatabaseInterface(), ))($request); diff --git a/tests/unit/Controllers/Database/Structure/RealRowCountControllerTest.php b/tests/unit/Controllers/Database/Structure/RealRowCountControllerTest.php index 6fefa3d694..fcce542d64 100644 --- a/tests/unit/Controllers/Database/Structure/RealRowCountControllerTest.php +++ b/tests/unit/Controllers/Database/Structure/RealRowCountControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Http\Factory\ServerRequestFactory; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer as ResponseStub; use PHPUnit\Framework\Attributes\CoversClass; @@ -35,14 +34,14 @@ class RealRowCountControllerTest extends AbstractTestCase $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withQueryParams(['db' => 'world', 'table' => 'City', 'ajax_request' => '1']); - (new RealRowCountController($response, new Template(), $dbi, new DbTableExists($dbi)))($request); + (new RealRowCountController($response, $dbi, new DbTableExists($dbi)))($request); $json = $response->getJSONResult(); self::assertSame('4,079', $json['real_row_count']); $_REQUEST['real_row_count_all'] = 'on'; - (new RealRowCountController($response, new Template(), $dbi, new DbTableExists($dbi)))($request); + (new RealRowCountController($response, $dbi, new DbTableExists($dbi)))($request); $json = $response->getJSONResult(); $expected = [ diff --git a/tests/unit/Controllers/DatabaseControllerTest.php b/tests/unit/Controllers/DatabaseControllerTest.php index d78eb6acde..5fa16d1879 100644 --- a/tests/unit/Controllers/DatabaseControllerTest.php +++ b/tests/unit/Controllers/DatabaseControllerTest.php @@ -4,12 +4,10 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers; -use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\DatabaseController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\ListDatabase; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -31,7 +29,7 @@ class DatabaseControllerTest extends AbstractTestCase ); $responseRenderer = new ResponseRenderer(); - $controller = new DatabaseController($responseRenderer, new Template(new Config()), $dbi); + $controller = new DatabaseController($responseRenderer, $dbi); $controller($request); $output = $responseRenderer->getJSONResult(); diff --git a/tests/unit/Controllers/Export/ExportControllerTest.php b/tests/unit/Controllers/Export/ExportControllerTest.php index bd87ed8fcf..b7cdaca618 100644 --- a/tests/unit/Controllers/Export/ExportControllerTest.php +++ b/tests/unit/Controllers/Export/ExportControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Export\ExportController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Export\Export; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\FieldHelper; use PhpMyAdmin\Tests\Stubs\DbiDummy; @@ -195,7 +194,7 @@ ALTER TABLE `test_table` COMMIT; SQL; - $exportController = new ExportController(new ResponseRenderer(), new Template(), new Export($this->dbi)); + $exportController = new ExportController(new ResponseRenderer(), new Export($this->dbi)); $exportController($request); $output = $this->getActualOutputForAssertion(); diff --git a/tests/unit/Controllers/Export/Template/DeleteControllerTest.php b/tests/unit/Controllers/Export/Template/DeleteControllerTest.php index bfd009a6d9..674eb9466b 100644 --- a/tests/unit/Controllers/Export/Template/DeleteControllerTest.php +++ b/tests/unit/Controllers/Export/Template/DeleteControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Controllers\Export\Template\DeleteController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Export\TemplateModel; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -42,7 +41,6 @@ class DeleteControllerTest extends AbstractTestCase (new DeleteController( $response, - new Template(), new TemplateModel($this->dbi), new Relation($this->dbi), ))($request); diff --git a/tests/unit/Controllers/Export/Template/LoadControllerTest.php b/tests/unit/Controllers/Export/Template/LoadControllerTest.php index 3ed5aa0d32..980fe4b3c3 100644 --- a/tests/unit/Controllers/Export/Template/LoadControllerTest.php +++ b/tests/unit/Controllers/Export/Template/LoadControllerTest.php @@ -11,7 +11,6 @@ use PhpMyAdmin\Controllers\Export\Template\LoadController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Export\TemplateModel; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -51,7 +50,6 @@ class LoadControllerTest extends AbstractTestCase (new LoadController( $response, - new Template(), new TemplateModel($this->dbi), new Relation($this->dbi), ))($request); diff --git a/tests/unit/Controllers/Export/Template/UpdateControllerTest.php b/tests/unit/Controllers/Export/Template/UpdateControllerTest.php index 0c9625ef7a..f3c8d6df71 100644 --- a/tests/unit/Controllers/Export/Template/UpdateControllerTest.php +++ b/tests/unit/Controllers/Export/Template/UpdateControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Controllers\Export\Template\UpdateController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Export\TemplateModel; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -45,7 +44,6 @@ class UpdateControllerTest extends AbstractTestCase (new UpdateController( $response, - new Template(), new TemplateModel($this->dbi), new Relation($this->dbi), ))($request); diff --git a/tests/unit/Controllers/HomeControllerTest.php b/tests/unit/Controllers/HomeControllerTest.php index abfd1be8c7..aa1da1ed8b 100644 --- a/tests/unit/Controllers/HomeControllerTest.php +++ b/tests/unit/Controllers/HomeControllerTest.php @@ -11,7 +11,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\ResponseRenderer; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Theme\ThemeManager; use PHPUnit\Framework\Attributes\CoversClass; @@ -25,7 +24,6 @@ final class HomeControllerTest extends AbstractTestCase ->withQueryParams(['db' => 'test_db']); $controller = new HomeController( self::createStub(ResponseRenderer::class), - self::createStub(Template::class), self::createStub(Config::class), self::createStub(ThemeManager::class), self::createStub(DatabaseInterface::class), @@ -44,7 +42,6 @@ final class HomeControllerTest extends AbstractTestCase ->withQueryParams(['db' => 'test_db', 'table' => 'test_table']); $controller = new HomeController( self::createStub(ResponseRenderer::class), - self::createStub(Template::class), self::createStub(Config::class), self::createStub(ThemeManager::class), self::createStub(DatabaseInterface::class), diff --git a/tests/unit/Controllers/Import/ImportControllerTest.php b/tests/unit/Controllers/Import/ImportControllerTest.php index 009729aba4..a752782511 100644 --- a/tests/unit/Controllers/Import/ImportControllerTest.php +++ b/tests/unit/Controllers/Import/ImportControllerTest.php @@ -97,7 +97,6 @@ class ImportControllerTest extends AbstractTestCase $importController = new ImportController( $responseRenderer, - $template, new Import(), $sql, $this->dbi, diff --git a/tests/unit/Controllers/LintControllerTest.php b/tests/unit/Controllers/LintControllerTest.php index 60d9f40535..7d7669ad9d 100644 --- a/tests/unit/Controllers/LintControllerTest.php +++ b/tests/unit/Controllers/LintControllerTest.php @@ -7,7 +7,6 @@ namespace PhpMyAdmin\Tests\Controllers; use PhpMyAdmin\Controllers\LintController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -109,6 +108,6 @@ class LintControllerTest extends AbstractTestCase private function getLintController(): LintController { - return new LintController(new ResponseRenderer(), new Template()); + return new LintController(new ResponseRenderer()); } } diff --git a/tests/unit/Controllers/Navigation/UpdateNavWidthConfigControllerTest.php b/tests/unit/Controllers/Navigation/UpdateNavWidthConfigControllerTest.php index 00c6eac8c9..aab97e8744 100644 --- a/tests/unit/Controllers/Navigation/UpdateNavWidthConfigControllerTest.php +++ b/tests/unit/Controllers/Navigation/UpdateNavWidthConfigControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\Navigation\UpdateNavWidthConfigController; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\Message; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -25,7 +24,7 @@ final class UpdateNavWidthConfigControllerTest extends AbstractTestCase $config = new Config(); $responseRenderer = new ResponseRenderer(); - $controller = new UpdateNavWidthConfigController($responseRenderer, new Template($config), $config); + $controller = new UpdateNavWidthConfigController($responseRenderer, $config); $controller($request); self::assertSame($expected, $config->settings['NavigationWidth']); @@ -50,7 +49,7 @@ final class UpdateNavWidthConfigControllerTest extends AbstractTestCase $config = new Config(); $responseRenderer = new ResponseRenderer(); - $controller = new UpdateNavWidthConfigController($responseRenderer, new Template($config), $config); + $controller = new UpdateNavWidthConfigController($responseRenderer, $config); $controller($request); self::assertSame( @@ -77,7 +76,7 @@ final class UpdateNavWidthConfigControllerTest extends AbstractTestCase $config = self::createStub(Config::class); $config->method('setUserValue')->willReturn(Message::error('Could not save configuration')); $responseRenderer = new ResponseRenderer(); - $controller = new UpdateNavWidthConfigController($responseRenderer, new Template($config), $config); + $controller = new UpdateNavWidthConfigController($responseRenderer, $config); $controller($request); self::assertSame( diff --git a/tests/unit/Controllers/NavigationControllerTest.php b/tests/unit/Controllers/NavigationControllerTest.php index 7adbfc97d2..e3df2d7e78 100644 --- a/tests/unit/Controllers/NavigationControllerTest.php +++ b/tests/unit/Controllers/NavigationControllerTest.php @@ -122,7 +122,6 @@ class NavigationControllerTest extends AbstractTestCase $relation = new Relation($this->dbi); $navigationController = new NavigationController( $responseRenderer, - $template, new Navigation($template, $relation, $this->dbi, $config), $relation, new PageSettings(new UserPreferences($this->dbi, $relation, $template)), @@ -272,7 +271,6 @@ class NavigationControllerTest extends AbstractTestCase $relation = new Relation($this->dbi); $navigationController = new NavigationController( $responseRenderer, - $template, new Navigation($template, $relation, $this->dbi, $config), $relation, new PageSettings(new UserPreferences($this->dbi, $relation, $template)), diff --git a/tests/unit/Controllers/Normalization/AddNewPrimaryControllerTest.php b/tests/unit/Controllers/Normalization/AddNewPrimaryControllerTest.php index 5daf993ad1..f13eaaa9dc 100644 --- a/tests/unit/Controllers/Normalization/AddNewPrimaryControllerTest.php +++ b/tests/unit/Controllers/Normalization/AddNewPrimaryControllerTest.php @@ -36,7 +36,6 @@ class AddNewPrimaryControllerTest extends AbstractTestCase $controller = new AddNewPrimaryController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), new UserPrivilegesFactory($dbi), ); diff --git a/tests/unit/Controllers/Normalization/CreateNewColumnControllerTest.php b/tests/unit/Controllers/Normalization/CreateNewColumnControllerTest.php index 6e2d873fcf..b2180f9d4e 100644 --- a/tests/unit/Controllers/Normalization/CreateNewColumnControllerTest.php +++ b/tests/unit/Controllers/Normalization/CreateNewColumnControllerTest.php @@ -38,7 +38,6 @@ class CreateNewColumnControllerTest extends AbstractTestCase $controller = new CreateNewColumnController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), new UserPrivilegesFactory($dbi), ); diff --git a/tests/unit/Controllers/Normalization/FirstNormalForm/FirstStepControllerTest.php b/tests/unit/Controllers/Normalization/FirstNormalForm/FirstStepControllerTest.php index 11fb2aa67f..f4fbe49a93 100644 --- a/tests/unit/Controllers/Normalization/FirstNormalForm/FirstStepControllerTest.php +++ b/tests/unit/Controllers/Normalization/FirstNormalForm/FirstStepControllerTest.php @@ -41,7 +41,6 @@ class FirstStepControllerTest extends AbstractTestCase $controller = new FirstStepController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller($request); diff --git a/tests/unit/Controllers/Normalization/FirstNormalForm/FourthStepControllerTest.php b/tests/unit/Controllers/Normalization/FirstNormalForm/FourthStepControllerTest.php index b01f14ae7f..72a2e23975 100644 --- a/tests/unit/Controllers/Normalization/FirstNormalForm/FourthStepControllerTest.php +++ b/tests/unit/Controllers/Normalization/FirstNormalForm/FourthStepControllerTest.php @@ -34,7 +34,6 @@ class FourthStepControllerTest extends AbstractTestCase $controller = new FourthStepController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Normalization/FirstNormalForm/SecondStepControllerTest.php b/tests/unit/Controllers/Normalization/FirstNormalForm/SecondStepControllerTest.php index d4dc3b0005..e4d029aece 100644 --- a/tests/unit/Controllers/Normalization/FirstNormalForm/SecondStepControllerTest.php +++ b/tests/unit/Controllers/Normalization/FirstNormalForm/SecondStepControllerTest.php @@ -31,7 +31,6 @@ class SecondStepControllerTest extends AbstractTestCase $controller = new SecondStepController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Normalization/FirstNormalForm/ThirdStepControllerTest.php b/tests/unit/Controllers/Normalization/FirstNormalForm/ThirdStepControllerTest.php index 0c774de6f0..60a0a13244 100644 --- a/tests/unit/Controllers/Normalization/FirstNormalForm/ThirdStepControllerTest.php +++ b/tests/unit/Controllers/Normalization/FirstNormalForm/ThirdStepControllerTest.php @@ -34,7 +34,6 @@ class ThirdStepControllerTest extends AbstractTestCase $controller = new ThirdStepController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Normalization/GetColumnsControllerTest.php b/tests/unit/Controllers/Normalization/GetColumnsControllerTest.php index be04a37d4e..6604ca9cd8 100644 --- a/tests/unit/Controllers/Normalization/GetColumnsControllerTest.php +++ b/tests/unit/Controllers/Normalization/GetColumnsControllerTest.php @@ -34,7 +34,6 @@ class GetColumnsControllerTest extends AbstractTestCase $controller = new GetColumnsController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Normalization/MainControllerTest.php b/tests/unit/Controllers/Normalization/MainControllerTest.php index a62cb26b91..fe457ae1b3 100644 --- a/tests/unit/Controllers/Normalization/MainControllerTest.php +++ b/tests/unit/Controllers/Normalization/MainControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\Normalization\MainController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -43,7 +42,7 @@ class MainControllerTest extends AbstractTestCase Current::$table = 'test_table'; $response = new ResponseRenderer(); - $controller = new MainController($response, new Template()); + $controller = new MainController($response); $controller(self::createStub(ServerRequest::class)); $files = $response->getHeader()->getScripts()->getFiles(); diff --git a/tests/unit/Controllers/Normalization/MoveRepeatingGroupTest.php b/tests/unit/Controllers/Normalization/MoveRepeatingGroupTest.php index fe22744abc..63dd23bd81 100644 --- a/tests/unit/Controllers/Normalization/MoveRepeatingGroupTest.php +++ b/tests/unit/Controllers/Normalization/MoveRepeatingGroupTest.php @@ -49,7 +49,6 @@ class MoveRepeatingGroupTest extends AbstractTestCase $controller = new MoveRepeatingGroup( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller($request); diff --git a/tests/unit/Controllers/Normalization/PartialDependenciesControllerTest.php b/tests/unit/Controllers/Normalization/PartialDependenciesControllerTest.php index f5ddbbaa90..2197dfc3e6 100644 --- a/tests/unit/Controllers/Normalization/PartialDependenciesControllerTest.php +++ b/tests/unit/Controllers/Normalization/PartialDependenciesControllerTest.php @@ -42,7 +42,6 @@ class PartialDependenciesControllerTest extends AbstractTestCase $controller = new PartialDependenciesController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Normalization/SecondNormalForm/CreateNewTablesControllerTest.php b/tests/unit/Controllers/Normalization/SecondNormalForm/CreateNewTablesControllerTest.php index 708276b25f..ecddddf1bc 100644 --- a/tests/unit/Controllers/Normalization/SecondNormalForm/CreateNewTablesControllerTest.php +++ b/tests/unit/Controllers/Normalization/SecondNormalForm/CreateNewTablesControllerTest.php @@ -44,7 +44,6 @@ class CreateNewTablesControllerTest extends AbstractTestCase $controller = new CreateNewTablesController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller($request); diff --git a/tests/unit/Controllers/Normalization/SecondNormalForm/FirstStepControllerTest.php b/tests/unit/Controllers/Normalization/SecondNormalForm/FirstStepControllerTest.php index 116d0b871c..10be82ceec 100644 --- a/tests/unit/Controllers/Normalization/SecondNormalForm/FirstStepControllerTest.php +++ b/tests/unit/Controllers/Normalization/SecondNormalForm/FirstStepControllerTest.php @@ -31,7 +31,6 @@ class FirstStepControllerTest extends AbstractTestCase $controller = new FirstStepController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Normalization/SecondNormalForm/NewTablesControllerTest.php b/tests/unit/Controllers/Normalization/SecondNormalForm/NewTablesControllerTest.php index 3bc2aa466f..58a64de048 100644 --- a/tests/unit/Controllers/Normalization/SecondNormalForm/NewTablesControllerTest.php +++ b/tests/unit/Controllers/Normalization/SecondNormalForm/NewTablesControllerTest.php @@ -36,7 +36,6 @@ class NewTablesControllerTest extends AbstractTestCase ]); $controller = new NewTablesController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller($request); diff --git a/tests/unit/Controllers/Normalization/ThirdNormalForm/CreateNewTablesControllerTest.php b/tests/unit/Controllers/Normalization/ThirdNormalForm/CreateNewTablesControllerTest.php index 904afa9dae..7efdc0f788 100644 --- a/tests/unit/Controllers/Normalization/ThirdNormalForm/CreateNewTablesControllerTest.php +++ b/tests/unit/Controllers/Normalization/ThirdNormalForm/CreateNewTablesControllerTest.php @@ -58,7 +58,6 @@ class CreateNewTablesControllerTest extends AbstractTestCase $controller = new CreateNewTablesController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller($request); diff --git a/tests/unit/Controllers/Normalization/ThirdNormalForm/FirstStepControllerTest.php b/tests/unit/Controllers/Normalization/ThirdNormalForm/FirstStepControllerTest.php index f1157c42a0..f6ffa0b3d9 100644 --- a/tests/unit/Controllers/Normalization/ThirdNormalForm/FirstStepControllerTest.php +++ b/tests/unit/Controllers/Normalization/ThirdNormalForm/FirstStepControllerTest.php @@ -36,7 +36,6 @@ class FirstStepControllerTest extends AbstractTestCase $controller = new FirstStepController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller($request); diff --git a/tests/unit/Controllers/Normalization/ThirdNormalForm/NewTablesControllerTest.php b/tests/unit/Controllers/Normalization/ThirdNormalForm/NewTablesControllerTest.php index 3bff5a2e8e..21aa97553e 100644 --- a/tests/unit/Controllers/Normalization/ThirdNormalForm/NewTablesControllerTest.php +++ b/tests/unit/Controllers/Normalization/ThirdNormalForm/NewTablesControllerTest.php @@ -44,7 +44,6 @@ class NewTablesControllerTest extends AbstractTestCase $controller = new NewTablesController( $response, - $template, new Normalization($dbi, new Relation($dbi), new Transformations(), $template), ); $controller($request); diff --git a/tests/unit/Controllers/Operations/TableControllerTest.php b/tests/unit/Controllers/Operations/TableControllerTest.php index 388bb8b9b6..b4640e114e 100644 --- a/tests/unit/Controllers/Operations/TableControllerTest.php +++ b/tests/unit/Controllers/Operations/TableControllerTest.php @@ -124,7 +124,6 @@ class TableControllerTest extends AbstractTestCase $relation = new Relation($this->dbi); $controller = new TableController( $responseRenderer, - new Template($config), new Operations($this->dbi, $relation), new UserPrivilegesFactory($this->dbi), $relation, diff --git a/tests/unit/Controllers/Server/BinlogControllerTest.php b/tests/unit/Controllers/Server/BinlogControllerTest.php index 0b99cb5c19..5550860ae2 100644 --- a/tests/unit/Controllers/Server/BinlogControllerTest.php +++ b/tests/unit/Controllers/Server/BinlogControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Server\BinlogController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -49,7 +48,7 @@ class BinlogControllerTest extends AbstractTestCase { $response = new ResponseRenderer(); - $controller = new BinlogController($response, new Template(), DatabaseInterface::getInstance()); + $controller = new BinlogController($response, DatabaseInterface::getInstance()); $request = self::createStub(ServerRequest::class); $request->method('getParsedBodyParam')->willReturnMap([['log', null, 'index1'], ['pos', 0, '3']]); diff --git a/tests/unit/Controllers/Server/CollationsControllerTest.php b/tests/unit/Controllers/Server/CollationsControllerTest.php index e56a3f1b6f..c84c423fec 100644 --- a/tests/unit/Controllers/Server/CollationsControllerTest.php +++ b/tests/unit/Controllers/Server/CollationsControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Server\CollationsController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -44,7 +43,7 @@ class CollationsControllerTest extends AbstractTestCase { $response = new ResponseRenderer(); - $controller = new CollationsController($response, new Template(), DatabaseInterface::getInstance()); + $controller = new CollationsController($response, DatabaseInterface::getInstance()); $this->dummyDbi->addSelectDb('mysql'); $controller(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Server/Databases/CreateControllerTest.php b/tests/unit/Controllers/Server/Databases/CreateControllerTest.php index 48cbf40297..19c621a9dd 100644 --- a/tests/unit/Controllers/Server/Databases/CreateControllerTest.php +++ b/tests/unit/Controllers/Server/Databases/CreateControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Server\Databases\CreateController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -42,8 +41,7 @@ final class CreateControllerTest extends AbstractTestCase $response = new ResponseRenderer(); - $template = new Template(); - $controller = new CreateController($response, $template, $this->dbi); + $controller = new CreateController($response, $this->dbi); $request = self::createStub(ServerRequest::class); $request->method('getParsedBodyParam')->willReturnMap([ @@ -59,7 +57,7 @@ final class CreateControllerTest extends AbstractTestCase $response = new ResponseRenderer(); - $controller = new CreateController($response, $template, $this->dbi); + $controller = new CreateController($response, $this->dbi); $request = self::createStub(ServerRequest::class); $request->method('isAjax')->willReturn(true); diff --git a/tests/unit/Controllers/Server/Databases/DestroyControllerTest.php b/tests/unit/Controllers/Server/Databases/DestroyControllerTest.php index 1273ec6953..cce3c61bc8 100644 --- a/tests/unit/Controllers/Server/Databases/DestroyControllerTest.php +++ b/tests/unit/Controllers/Server/Databases/DestroyControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\Server\Databases\DestroyController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Transformations; @@ -41,7 +40,6 @@ class DestroyControllerTest extends AbstractTestCase $controller = new DestroyController( $response, - new Template(), $dbi, new Transformations(), new RelationCleanup($dbi, new Relation($dbi)), diff --git a/tests/unit/Controllers/Server/DatabasesControllerTest.php b/tests/unit/Controllers/Server/DatabasesControllerTest.php index 75c1435881..235d5ec2c1 100644 --- a/tests/unit/Controllers/Server/DatabasesControllerTest.php +++ b/tests/unit/Controllers/Server/DatabasesControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Server\DatabasesController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Factory\ServerRequestFactory; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -44,11 +43,10 @@ class DatabasesControllerTest extends AbstractTestCase { $config = Config::getInstance(); $config->selectedServer['only_db'] = ''; - $template = new Template(); $response = new ResponseRenderer(); - $controller = new DatabasesController($response, $template, $this->dbi, new UserPrivilegesFactory($this->dbi)); + $controller = new DatabasesController($response, $this->dbi, new UserPrivilegesFactory($this->dbi)); $this->dummyDbi->addResult( 'SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`', @@ -86,7 +84,7 @@ class DatabasesControllerTest extends AbstractTestCase $response = new ResponseRenderer(); $dbi = DatabaseInterface::getInstance(); - $controller = new DatabasesController($response, $template, $dbi, new UserPrivilegesFactory($dbi)); + $controller = new DatabasesController($response, $dbi, new UserPrivilegesFactory($dbi)); $config->settings['ShowCreateDb'] = true; diff --git a/tests/unit/Controllers/Server/EnginesControllerTest.php b/tests/unit/Controllers/Server/EnginesControllerTest.php index 1d188e5d04..4fca232e42 100644 --- a/tests/unit/Controllers/Server/EnginesControllerTest.php +++ b/tests/unit/Controllers/Server/EnginesControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Server\EnginesController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -44,7 +43,7 @@ class EnginesControllerTest extends AbstractTestCase { $response = new ResponseRenderer(); - $controller = new EnginesController($response, new Template(), DatabaseInterface::getInstance()); + $controller = new EnginesController($response, DatabaseInterface::getInstance()); $this->dummyDbi->addSelectDb('mysql'); $controller->__invoke(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Server/PluginsControllerTest.php b/tests/unit/Controllers/Server/PluginsControllerTest.php index 2ef678bb9b..51930c58d2 100644 --- a/tests/unit/Controllers/Server/PluginsControllerTest.php +++ b/tests/unit/Controllers/Server/PluginsControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Server\Plugins; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\DummyResult; @@ -74,7 +73,7 @@ class PluginsControllerTest extends AbstractTestCase $response = new ResponseRenderer(); - $controller = new PluginsController($response, new Template(), new Plugins($dbi), $this->dbi); + $controller = new PluginsController($response, new Plugins($dbi), $this->dbi); $this->dummyDbi->addSelectDb('mysql'); $controller(self::createStub(ServerRequest::class)); $this->dummyDbi->assertAllSelectsConsumed(); diff --git a/tests/unit/Controllers/Server/Privileges/AccountLockControllerTest.php b/tests/unit/Controllers/Server/Privileges/AccountLockControllerTest.php index fb0f276883..629f12146c 100644 --- a/tests/unit/Controllers/Server/Privileges/AccountLockControllerTest.php +++ b/tests/unit/Controllers/Server/Privileges/AccountLockControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Server\Privileges\AccountLocking; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -44,7 +43,6 @@ class AccountLockControllerTest extends AbstractTestCase $this->controller = new AccountLockController( $this->responseRendererStub, - new Template(), new AccountLocking($this->dbiStub), ); } diff --git a/tests/unit/Controllers/Server/Privileges/AccountUnlockControllerTest.php b/tests/unit/Controllers/Server/Privileges/AccountUnlockControllerTest.php index 34566e2977..92907c3f36 100644 --- a/tests/unit/Controllers/Server/Privileges/AccountUnlockControllerTest.php +++ b/tests/unit/Controllers/Server/Privileges/AccountUnlockControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Server\Privileges\AccountLocking; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -44,7 +43,6 @@ class AccountUnlockControllerTest extends AbstractTestCase $this->controller = new AccountUnlockController( $this->responseRendererStub, - new Template(), new AccountLocking($this->dbiStub), ); } diff --git a/tests/unit/Controllers/Server/ShowEngineControllerTest.php b/tests/unit/Controllers/Server/ShowEngineControllerTest.php index 2460f89737..9711413a18 100644 --- a/tests/unit/Controllers/Server/ShowEngineControllerTest.php +++ b/tests/unit/Controllers/Server/ShowEngineControllerTest.php @@ -11,7 +11,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\MySQLDocumentation; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\StorageEngine; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -49,7 +48,7 @@ class ShowEngineControllerTest extends AbstractTestCase $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withAttribute('routeVars', ['engine' => 'Pbxt', 'page' => 'page']); - (new ShowEngineController($response, new Template(), DatabaseInterface::getInstance()))($request); + (new ShowEngineController($response, DatabaseInterface::getInstance()))($request); $this->dummyDbi->assertAllSelectsConsumed(); $actual = $response->getHTMLResult(); diff --git a/tests/unit/Controllers/Table/AddFieldControllerTest.php b/tests/unit/Controllers/Table/AddFieldControllerTest.php index 1af596fdc8..fcc0a00977 100644 --- a/tests/unit/Controllers/Table/AddFieldControllerTest.php +++ b/tests/unit/Controllers/Table/AddFieldControllerTest.php @@ -260,7 +260,6 @@ class AddFieldControllerTest extends AbstractTestCase $transformations = new Transformations(); (new AddFieldController( $response, - $template, $transformations, $this->createConfig(), $dbi, diff --git a/tests/unit/Controllers/Table/ChangeRowsControllerTest.php b/tests/unit/Controllers/Table/ChangeRowsControllerTest.php index 67487f0d87..f981a22b07 100644 --- a/tests/unit/Controllers/Table/ChangeRowsControllerTest.php +++ b/tests/unit/Controllers/Table/ChangeRowsControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Table\ChangeRowsController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\Factory\ServerRequestFactory; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -35,7 +34,7 @@ class ChangeRowsControllerTest extends AbstractTestCase $mock = self::createMock(ChangeController::class); $mock->expects(self::once())->method('__invoke')->with($request); - (new ChangeRowsController(new ResponseRenderer(), new Template(), $mock))($request); + (new ChangeRowsController(new ResponseRenderer(), $mock))($request); /** @psalm-suppress InvalidArrayOffset */ self::assertSame([], $GLOBALS['where_clause']); @@ -50,7 +49,7 @@ class ChangeRowsControllerTest extends AbstractTestCase $mock->expects(self::never())->method('__invoke')->with($request); $response = new ResponseRenderer(); - (new ChangeRowsController($response, new Template(), $mock))($request); + (new ChangeRowsController($response, $mock))($request); self::assertSame(['message' => 'No row selected.'], $response->getJSONResult()); self::assertFalse($response->hasSuccessState()); @@ -66,7 +65,7 @@ class ChangeRowsControllerTest extends AbstractTestCase $mock = self::createMock(ChangeController::class); $mock->expects(self::once())->method('__invoke')->with($request); - (new ChangeRowsController(new ResponseRenderer(), new Template(), $mock))($request); + (new ChangeRowsController(new ResponseRenderer(), $mock))($request); /** @psalm-suppress InvalidArrayOffset */ self::assertSame(['row1', 'row2'], $GLOBALS['where_clause']); diff --git a/tests/unit/Controllers/Table/ChartControllerTest.php b/tests/unit/Controllers/Table/ChartControllerTest.php index 94df09575d..e43af89011 100644 --- a/tests/unit/Controllers/Table/ChartControllerTest.php +++ b/tests/unit/Controllers/Table/ChartControllerTest.php @@ -104,7 +104,7 @@ class ChartControllerTest extends AbstractTestCase 'unlim_num_rows' => '4', ]); - (new ChartController($response, $template, $dbi, new DbTableExists($dbi)))($request); + (new ChartController($response, $dbi, new DbTableExists($dbi)))($request); self::assertSame($expected, $response->getHTMLResult()); } } diff --git a/tests/unit/Controllers/Table/CreateControllerTest.php b/tests/unit/Controllers/Table/CreateControllerTest.php index b07aca326e..5af85b99e7 100644 --- a/tests/unit/Controllers/Table/CreateControllerTest.php +++ b/tests/unit/Controllers/Table/CreateControllerTest.php @@ -255,7 +255,6 @@ class CreateControllerTest extends AbstractTestCase $transformations = new Transformations(); (new CreateController( $response, - $template, $transformations, $this->createConfig(), $dbi, diff --git a/tests/unit/Controllers/Table/DeleteConfirmControllerTest.php b/tests/unit/Controllers/Table/DeleteConfirmControllerTest.php index 802c65b4d2..2ede60888e 100644 --- a/tests/unit/Controllers/Table/DeleteConfirmControllerTest.php +++ b/tests/unit/Controllers/Table/DeleteConfirmControllerTest.php @@ -52,7 +52,7 @@ class DeleteConfirmControllerTest extends AbstractTestCase 'sql_query' => 'SELECT * FROM `test_db`.`test_table`', ]); - (new DeleteConfirmController($response, $template, new DbTableExists($dbi)))($request); + (new DeleteConfirmController($response, new DbTableExists($dbi)))($request); self::assertSame($expected, $response->getHTMLResult()); } } diff --git a/tests/unit/Controllers/Table/DropColumnConfirmationControllerTest.php b/tests/unit/Controllers/Table/DropColumnConfirmationControllerTest.php index 089bb716a9..6873a7eff3 100644 --- a/tests/unit/Controllers/Table/DropColumnConfirmationControllerTest.php +++ b/tests/unit/Controllers/Table/DropColumnConfirmationControllerTest.php @@ -48,7 +48,7 @@ class DropColumnConfirmationControllerTest extends AbstractTestCase 'fields' => ['name', 'datetimefield'], ]); - (new DropColumnConfirmationController($response, $template, new DbTableExists($dbi)))($request); + (new DropColumnConfirmationController($response, new DbTableExists($dbi)))($request); self::assertSame(200, $response->getResponse()->getStatusCode()); self::assertTrue($response->hasSuccessState()); @@ -70,7 +70,6 @@ class DropColumnConfirmationControllerTest extends AbstractTestCase (new DropColumnConfirmationController( $response, - new Template(), new DbTableExists(DatabaseInterface::getInstance()), ))($request); @@ -94,7 +93,6 @@ class DropColumnConfirmationControllerTest extends AbstractTestCase (new DropColumnConfirmationController( $response, - new Template(), new DbTableExists(DatabaseInterface::getInstance()), ))($request); diff --git a/tests/unit/Controllers/Table/DropColumnControllerTest.php b/tests/unit/Controllers/Table/DropColumnControllerTest.php index be2b6091de..087dcb1f56 100644 --- a/tests/unit/Controllers/Table/DropColumnControllerTest.php +++ b/tests/unit/Controllers/Table/DropColumnControllerTest.php @@ -11,7 +11,6 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\FlashMessages; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -47,7 +46,6 @@ class DropColumnControllerTest extends AbstractTestCase (new DropColumnController( new ResponseRenderer(), - new Template(), $dbi, new FlashMessages(), new RelationCleanup($dbi, new Relation($dbi)), diff --git a/tests/unit/Controllers/Table/ExportControllerTest.php b/tests/unit/Controllers/Table/ExportControllerTest.php index e177332046..e69ce41ea4 100644 --- a/tests/unit/Controllers/Table/ExportControllerTest.php +++ b/tests/unit/Controllers/Table/ExportControllerTest.php @@ -114,7 +114,6 @@ class ExportControllerTest extends AbstractTestCase (new ExportController( $response, - $template, new Options(new Relation($dbi), new TemplateModel($dbi)), $pageSettings, ))(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Table/ExportRowsControllerTest.php b/tests/unit/Controllers/Table/ExportRowsControllerTest.php index c8d89dba7d..8e270cb946 100644 --- a/tests/unit/Controllers/Table/ExportRowsControllerTest.php +++ b/tests/unit/Controllers/Table/ExportRowsControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Controllers\Table\ExportRowsController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -37,7 +36,6 @@ class ExportRowsControllerTest extends AbstractTestCase (new ExportRowsController( new ResponseRenderer(), - new Template(), $controller, ))(self::createStub(ServerRequest::class)); @@ -55,11 +53,7 @@ class ExportRowsControllerTest extends AbstractTestCase $controller->expects(self::never())->method('__invoke'); $response = new ResponseRenderer(); - (new ExportRowsController( - $response, - new Template(), - $controller, - ))(self::createStub(ServerRequest::class)); + (new ExportRowsController($response, $controller))(self::createStub(ServerRequest::class)); self::assertSame(['message' => 'No row selected.'], $response->getJSONResult()); self::assertFalse($response->hasSuccessState()); @@ -79,7 +73,6 @@ class ExportRowsControllerTest extends AbstractTestCase (new ExportRowsController( new ResponseRenderer(), - new Template(), $controller, ))(self::createStub(ServerRequest::class)); diff --git a/tests/unit/Controllers/Table/GetFieldControllerTest.php b/tests/unit/Controllers/Table/GetFieldControllerTest.php index d624796439..ec9f7173d0 100644 --- a/tests/unit/Controllers/Table/GetFieldControllerTest.php +++ b/tests/unit/Controllers/Table/GetFieldControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -52,7 +51,7 @@ class GetFieldControllerTest extends AbstractTestCase $dbi = $this->createDatabaseInterface($dummyDbi); DatabaseInterface::$instance = $dbi; - (new GetFieldController(new ResponseRenderer(), new Template(), $dbi))($request); + (new GetFieldController(new ResponseRenderer(), $dbi))($request); $this->expectOutputString('46494c45'); } } diff --git a/tests/unit/Controllers/Table/ImportControllerTest.php b/tests/unit/Controllers/Table/ImportControllerTest.php index 583d3620a4..9e94800df9 100644 --- a/tests/unit/Controllers/Table/ImportControllerTest.php +++ b/tests/unit/Controllers/Table/ImportControllerTest.php @@ -95,7 +95,7 @@ class ImportControllerTest extends AbstractTestCase ->withQueryParams(['db' => 'test_db', 'table' => 'test_table']); $response = new ResponseRenderer(); - (new ImportController($response, $template, $dbi, $pageSettings, new DbTableExists($dbi)))($request); + (new ImportController($response, $dbi, $pageSettings, new DbTableExists($dbi)))($request); self::assertSame($expected, $response->getHTMLResult()); } } diff --git a/tests/unit/Controllers/Table/Maintenance/AnalyzeControllerTest.php b/tests/unit/Controllers/Table/Maintenance/AnalyzeControllerTest.php index 5579c65625..fd5d17ab32 100644 --- a/tests/unit/Controllers/Table/Maintenance/AnalyzeControllerTest.php +++ b/tests/unit/Controllers/Table/Maintenance/AnalyzeControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\Table\Maintenance\AnalyzeController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -26,7 +25,7 @@ class AnalyzeControllerTest extends AbstractTestCase $dbi = $this->createDatabaseInterface(); DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new AnalyzeController($response, new Template(), new Maintenance($dbi), $this->createConfig()); + $controller = new AnalyzeController($response, new Maintenance($dbi), $this->createConfig()); $controller($request); self::assertFalse($response->hasSuccessState()); self::assertSame(['message' => 'No table selected.'], $response->getJSONResult()); diff --git a/tests/unit/Controllers/Table/Maintenance/CheckControllerTest.php b/tests/unit/Controllers/Table/Maintenance/CheckControllerTest.php index 60e5803b5a..5a311619b0 100644 --- a/tests/unit/Controllers/Table/Maintenance/CheckControllerTest.php +++ b/tests/unit/Controllers/Table/Maintenance/CheckControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\Table\Maintenance\CheckController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -26,7 +25,7 @@ class CheckControllerTest extends AbstractTestCase $dbi = $this->createDatabaseInterface(); DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new CheckController($response, new Template(), new Maintenance($dbi), $this->createConfig()); + $controller = new CheckController($response, new Maintenance($dbi), $this->createConfig()); $controller($request); self::assertFalse($response->hasSuccessState()); self::assertSame(['message' => 'No table selected.'], $response->getJSONResult()); diff --git a/tests/unit/Controllers/Table/Maintenance/ChecksumControllerTest.php b/tests/unit/Controllers/Table/Maintenance/ChecksumControllerTest.php index 0e481e5a60..04ffa99b15 100644 --- a/tests/unit/Controllers/Table/Maintenance/ChecksumControllerTest.php +++ b/tests/unit/Controllers/Table/Maintenance/ChecksumControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\Table\Maintenance\ChecksumController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -26,7 +25,7 @@ class ChecksumControllerTest extends AbstractTestCase $dbi = $this->createDatabaseInterface(); DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new ChecksumController($response, new Template(), new Maintenance($dbi), $this->createConfig()); + $controller = new ChecksumController($response, new Maintenance($dbi), $this->createConfig()); $controller($request); self::assertFalse($response->hasSuccessState()); self::assertSame(['message' => 'No table selected.'], $response->getJSONResult()); diff --git a/tests/unit/Controllers/Table/Maintenance/OptimizeControllerTest.php b/tests/unit/Controllers/Table/Maintenance/OptimizeControllerTest.php index 19a51d34fc..f4144e4146 100644 --- a/tests/unit/Controllers/Table/Maintenance/OptimizeControllerTest.php +++ b/tests/unit/Controllers/Table/Maintenance/OptimizeControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\Table\Maintenance\OptimizeController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -26,7 +25,7 @@ class OptimizeControllerTest extends AbstractTestCase $dbi = $this->createDatabaseInterface(); DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new OptimizeController($response, new Template(), new Maintenance($dbi), $this->createConfig()); + $controller = new OptimizeController($response, new Maintenance($dbi), $this->createConfig()); $controller($request); self::assertFalse($response->hasSuccessState()); self::assertSame(['message' => 'No table selected.'], $response->getJSONResult()); diff --git a/tests/unit/Controllers/Table/Maintenance/RepairControllerTest.php b/tests/unit/Controllers/Table/Maintenance/RepairControllerTest.php index a085db5e43..0faff935eb 100644 --- a/tests/unit/Controllers/Table/Maintenance/RepairControllerTest.php +++ b/tests/unit/Controllers/Table/Maintenance/RepairControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\Table\Maintenance\RepairController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Table\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -26,7 +25,7 @@ class RepairControllerTest extends AbstractTestCase $dbi = $this->createDatabaseInterface(); DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new RepairController($response, new Template(), new Maintenance($dbi), $this->createConfig()); + $controller = new RepairController($response, new Maintenance($dbi), $this->createConfig()); $controller($request); self::assertFalse($response->hasSuccessState()); self::assertSame(['message' => 'No table selected.'], $response->getJSONResult()); diff --git a/tests/unit/Controllers/Table/Partition/AnalyzeControllerTest.php b/tests/unit/Controllers/Table/Partition/AnalyzeControllerTest.php index 4ef8ad7eda..c948724edd 100644 --- a/tests/unit/Controllers/Table/Partition/AnalyzeControllerTest.php +++ b/tests/unit/Controllers/Table/Partition/AnalyzeControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -32,7 +31,7 @@ class AnalyzeControllerTest extends AbstractTestCase DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new AnalyzeController($response, new Template(), new Maintenance($dbi)); + $controller = new AnalyzeController($response, new Maintenance($dbi)); $controller($request); self::assertSame(Message::error($message)->getDisplay(), $response->getHTMLResult()); diff --git a/tests/unit/Controllers/Table/Partition/CheckControllerTest.php b/tests/unit/Controllers/Table/Partition/CheckControllerTest.php index d51e72b368..a8ae7544a4 100644 --- a/tests/unit/Controllers/Table/Partition/CheckControllerTest.php +++ b/tests/unit/Controllers/Table/Partition/CheckControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -32,7 +31,7 @@ class CheckControllerTest extends AbstractTestCase DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new CheckController($response, new Template(), new Maintenance($dbi)); + $controller = new CheckController($response, new Maintenance($dbi)); $controller($request); self::assertSame(Message::error($message)->getDisplay(), $response->getHTMLResult()); diff --git a/tests/unit/Controllers/Table/Partition/DropControllerTest.php b/tests/unit/Controllers/Table/Partition/DropControllerTest.php index 77d53986f4..4661ed568f 100644 --- a/tests/unit/Controllers/Table/Partition/DropControllerTest.php +++ b/tests/unit/Controllers/Table/Partition/DropControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -32,7 +31,7 @@ class DropControllerTest extends AbstractTestCase DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new DropController($response, new Template(), new Maintenance($dbi)); + $controller = new DropController($response, new Maintenance($dbi)); $controller($request); self::assertSame(Message::error($message)->getDisplay(), $response->getHTMLResult()); diff --git a/tests/unit/Controllers/Table/Partition/OptimizeControllerTest.php b/tests/unit/Controllers/Table/Partition/OptimizeControllerTest.php index 4ee6da1693..b0ae29efd4 100644 --- a/tests/unit/Controllers/Table/Partition/OptimizeControllerTest.php +++ b/tests/unit/Controllers/Table/Partition/OptimizeControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -32,7 +31,7 @@ class OptimizeControllerTest extends AbstractTestCase DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new OptimizeController($response, new Template(), new Maintenance($dbi)); + $controller = new OptimizeController($response, new Maintenance($dbi)); $controller($request); self::assertSame(Message::error($message)->getDisplay(), $response->getHTMLResult()); diff --git a/tests/unit/Controllers/Table/Partition/RebuildControllerTest.php b/tests/unit/Controllers/Table/Partition/RebuildControllerTest.php index 2e1477c9a5..3f7ee38b76 100644 --- a/tests/unit/Controllers/Table/Partition/RebuildControllerTest.php +++ b/tests/unit/Controllers/Table/Partition/RebuildControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -32,7 +31,7 @@ class RebuildControllerTest extends AbstractTestCase DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new RebuildController($response, new Template(), new Maintenance($dbi)); + $controller = new RebuildController($response, new Maintenance($dbi)); $controller($request); self::assertSame(Message::error($message)->getDisplay(), $response->getHTMLResult()); diff --git a/tests/unit/Controllers/Table/Partition/RepairControllerTest.php b/tests/unit/Controllers/Table/Partition/RepairControllerTest.php index 4c0e45b3fd..74257a7af8 100644 --- a/tests/unit/Controllers/Table/Partition/RepairControllerTest.php +++ b/tests/unit/Controllers/Table/Partition/RepairControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -32,7 +31,7 @@ class RepairControllerTest extends AbstractTestCase DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new RepairController($response, new Template(), new Maintenance($dbi)); + $controller = new RepairController($response, new Maintenance($dbi)); $controller($request); self::assertSame(Message::error($message)->getDisplay(), $response->getHTMLResult()); diff --git a/tests/unit/Controllers/Table/Partition/TruncateControllerTest.php b/tests/unit/Controllers/Table/Partition/TruncateControllerTest.php index 7a820805ea..445fb2c5a8 100644 --- a/tests/unit/Controllers/Table/Partition/TruncateControllerTest.php +++ b/tests/unit/Controllers/Table/Partition/TruncateControllerTest.php @@ -9,7 +9,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\Maintenance; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -32,7 +31,7 @@ class TruncateControllerTest extends AbstractTestCase DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); - $controller = new TruncateController($response, new Template(), new Maintenance($dbi)); + $controller = new TruncateController($response, new Maintenance($dbi)); $controller($request); self::assertSame(Message::error($message)->getDisplay(), $response->getHTMLResult()); diff --git a/tests/unit/Controllers/Table/PrivilegesControllerTest.php b/tests/unit/Controllers/Table/PrivilegesControllerTest.php index a781ed5c2a..a7a3d1a983 100644 --- a/tests/unit/Controllers/Table/PrivilegesControllerTest.php +++ b/tests/unit/Controllers/Table/PrivilegesControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Server\Privileges; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Url; @@ -51,7 +50,6 @@ class PrivilegesControllerTest extends AbstractTestCase $response = new ResponseRenderer(); (new PrivilegesController( $response, - new Template(), $serverPrivileges, DatabaseInterface::getInstance(), ))($request); @@ -102,7 +100,6 @@ class PrivilegesControllerTest extends AbstractTestCase $response = new ResponseRenderer(); (new PrivilegesController( $response, - new Template(), self::createStub(Privileges::class), $this->createDatabaseInterface(), ))($request); @@ -120,7 +117,6 @@ class PrivilegesControllerTest extends AbstractTestCase $response = new ResponseRenderer(); (new PrivilegesController( $response, - new Template(), self::createStub(Privileges::class), $this->createDatabaseInterface(), ))($request); diff --git a/tests/unit/Controllers/Table/RecentFavoriteControllerTest.php b/tests/unit/Controllers/Table/RecentFavoriteControllerTest.php index 1e7ddaf13a..2b07b087d8 100644 --- a/tests/unit/Controllers/Table/RecentFavoriteControllerTest.php +++ b/tests/unit/Controllers/Table/RecentFavoriteControllerTest.php @@ -14,7 +14,6 @@ use PhpMyAdmin\Favorites\TableType; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -53,7 +52,7 @@ class RecentFavoriteControllerTest extends AbstractTestCase ->withQueryParams(['db' => 'test_db', 'table' => 'test_table']); $responseRenderer = new ResponseRenderer(); - (new RecentFavoriteController($responseRenderer, new Template()))($request); + (new RecentFavoriteController($responseRenderer))($request); $response = $responseRenderer->getResponse(); self::assertSame(302, $response->getStatusCode()); @@ -92,7 +91,7 @@ class RecentFavoriteControllerTest extends AbstractTestCase ->withQueryParams(['db' => 'invalid_db', 'table' => 'invalid_table']); $responseRenderer = new ResponseRenderer(); - (new RecentFavoriteController($responseRenderer, new Template()))($request); + (new RecentFavoriteController($responseRenderer))($request); $response = $responseRenderer->getResponse(); self::assertSame(302, $response->getStatusCode()); @@ -114,7 +113,7 @@ class RecentFavoriteControllerTest extends AbstractTestCase ->withQueryParams(['db' => '', 'table' => '']); $responseRenderer = new ResponseRenderer(); - (new RecentFavoriteController($responseRenderer, new Template()))($request); + (new RecentFavoriteController($responseRenderer))($request); $response = $responseRenderer->getResponse(); self::assertSame(302, $response->getStatusCode()); diff --git a/tests/unit/Controllers/Table/ReplaceControllerTest.php b/tests/unit/Controllers/Table/ReplaceControllerTest.php index 8ab9c558cd..fc2191c912 100644 --- a/tests/unit/Controllers/Table/ReplaceControllerTest.php +++ b/tests/unit/Controllers/Table/ReplaceControllerTest.php @@ -103,7 +103,6 @@ class ReplaceControllerTest extends AbstractTestCase $bookmarkRepository = new BookmarkRepository($dbi, $relation); $sqlController = new SqlController( $response, - $template, new Sql( $dbi, $relation, @@ -120,7 +119,6 @@ class ReplaceControllerTest extends AbstractTestCase $replaceController = new ReplaceController( $response, - $template, new InsertEdit($dbi, $relation, $transformations, new FileListing(), $template, Config::getInstance()), $transformations, $relation, @@ -157,7 +155,6 @@ class ReplaceControllerTest extends AbstractTestCase $replaceController = new ReplaceController( self::createStub(ResponseRenderer::class), - self::createStub(Template::class), self::createStub(InsertEdit::class), self::createStub(Transformations::class), self::createStub(Relation::class), diff --git a/tests/unit/Controllers/Table/SqlControllerTest.php b/tests/unit/Controllers/Table/SqlControllerTest.php index bda2c0bc87..d0fdc6bbd8 100644 --- a/tests/unit/Controllers/Table/SqlControllerTest.php +++ b/tests/unit/Controllers/Table/SqlControllerTest.php @@ -94,7 +94,6 @@ class SqlControllerTest extends AbstractTestCase $bookmarkRepository = new BookmarkRepository($this->dbi, $relation); (new SqlController( $response, - $template, new SqlQueryForm($template, $this->dbi, $bookmarkRepository), $pageSettings, new DbTableExists($this->dbi), diff --git a/tests/unit/Controllers/Table/Structure/ChangeControllerTest.php b/tests/unit/Controllers/Table/Structure/ChangeControllerTest.php index 988b2f2346..7ab0475455 100644 --- a/tests/unit/Controllers/Table/Structure/ChangeControllerTest.php +++ b/tests/unit/Controllers/Table/Structure/ChangeControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Controllers\Table\Structure\ChangeController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Table\ColumnsDefinition; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer as ResponseStub; @@ -49,7 +48,6 @@ class ChangeControllerTest extends AbstractTestCase $ctrl = new ChangeController( $response, - new Template(), $this->dbi, new ColumnsDefinition($this->dbi, new Relation($this->dbi), new Transformations()), new UserPrivilegesFactory($this->dbi), diff --git a/tests/unit/Controllers/Table/Structure/SaveControllerTest.php b/tests/unit/Controllers/Table/Structure/SaveControllerTest.php index 8f26eb34b9..b025fdedef 100644 --- a/tests/unit/Controllers/Table/Structure/SaveControllerTest.php +++ b/tests/unit/Controllers/Table/Structure/SaveControllerTest.php @@ -10,7 +10,6 @@ use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Transformations; @@ -94,7 +93,6 @@ class SaveControllerTest extends AbstractTestCase (new SaveController( new ResponseRenderer(), - new Template(), new Relation($dbi), new Transformations(), $dbi, @@ -117,7 +115,6 @@ class SaveControllerTest extends AbstractTestCase $ctrl = new SaveController( new ResponseRenderer(), - new Template(), new Relation($dbi), new Transformations(), $dbi, diff --git a/tests/unit/Controllers/Table/Structure/SpatialControllerTest.php b/tests/unit/Controllers/Table/Structure/SpatialControllerTest.php index 1930e2f58c..0a23a594de 100644 --- a/tests/unit/Controllers/Table/Structure/SpatialControllerTest.php +++ b/tests/unit/Controllers/Table/Structure/SpatialControllerTest.php @@ -11,7 +11,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Table\Indexes; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -37,7 +36,7 @@ class SpatialControllerTest extends AbstractTestCase $controllerStub->expects(self::once())->method('__invoke')->with($request); $indexes = new Indexes(DatabaseInterface::getInstance()); - $controller = new SpatialController(new ResponseRenderer(), new Template(), $controllerStub, $indexes); + $controller = new SpatialController(new ResponseRenderer(), $controllerStub, $indexes); $controller($request); self::assertEquals(Message::success(), $GLOBALS['message']); @@ -65,7 +64,7 @@ class SpatialControllerTest extends AbstractTestCase $controllerStub->expects(self::once())->method('__invoke')->with($request); $indexes = new Indexes(DatabaseInterface::getInstance()); - $controller = new SpatialController(new ResponseRenderer(), new Template(), $controllerStub, $indexes); + $controller = new SpatialController(new ResponseRenderer(), $controllerStub, $indexes); $controller($request); self::assertEquals(Message::success(), $GLOBALS['message']); @@ -91,7 +90,7 @@ class SpatialControllerTest extends AbstractTestCase $response = new ResponseRenderer(); $indexes = new Indexes(DatabaseInterface::getInstance()); - $controller = new SpatialController($response, new Template(), $controllerStub, $indexes); + $controller = new SpatialController($response, $controllerStub, $indexes); $controller($request); self::assertFalse($response->hasSuccessState()); @@ -121,7 +120,7 @@ class SpatialControllerTest extends AbstractTestCase $controllerStub->expects(self::once())->method('__invoke')->with($request); $indexes = new Indexes(DatabaseInterface::getInstance()); - $controller = new SpatialController(new ResponseRenderer(), new Template(), $controllerStub, $indexes); + $controller = new SpatialController(new ResponseRenderer(), $controllerStub, $indexes); $controller($request); self::assertEquals( diff --git a/tests/unit/Controllers/Table/Structure/UniqueControllerTest.php b/tests/unit/Controllers/Table/Structure/UniqueControllerTest.php index 131255d5ad..90dc2e24b5 100644 --- a/tests/unit/Controllers/Table/Structure/UniqueControllerTest.php +++ b/tests/unit/Controllers/Table/Structure/UniqueControllerTest.php @@ -11,7 +11,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Table\Indexes; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; @@ -37,7 +36,7 @@ class UniqueControllerTest extends AbstractTestCase $controllerStub->expects(self::once())->method('__invoke')->with($request); $indexes = new Indexes(DatabaseInterface::getInstance()); - $controller = new UniqueController(new ResponseRenderer(), new Template(), $controllerStub, $indexes); + $controller = new UniqueController(new ResponseRenderer(), $controllerStub, $indexes); $controller($request); self::assertEquals(Message::success(), $GLOBALS['message']); @@ -65,7 +64,7 @@ class UniqueControllerTest extends AbstractTestCase $controllerStub->expects(self::once())->method('__invoke')->with($request); $indexes = new Indexes(DatabaseInterface::getInstance()); - $controller = new UniqueController(new ResponseRenderer(), new Template(), $controllerStub, $indexes); + $controller = new UniqueController(new ResponseRenderer(), $controllerStub, $indexes); $controller($request); self::assertEquals(Message::success(), $GLOBALS['message']); @@ -91,7 +90,7 @@ class UniqueControllerTest extends AbstractTestCase $response = new ResponseRenderer(); $indexes = new Indexes(DatabaseInterface::getInstance()); - $controller = new UniqueController($response, new Template(), $controllerStub, $indexes); + $controller = new UniqueController($response, $controllerStub, $indexes); $controller($request); self::assertFalse($response->hasSuccessState()); @@ -121,7 +120,7 @@ class UniqueControllerTest extends AbstractTestCase $controllerStub->expects(self::once())->method('__invoke')->with($request); $indexes = new Indexes(DatabaseInterface::getInstance()); - $controller = new UniqueController(new ResponseRenderer(), new Template(), $controllerStub, $indexes); + $controller = new UniqueController(new ResponseRenderer(), $controllerStub, $indexes); $controller($request); self::assertEquals( diff --git a/tests/unit/Controllers/Table/TrackingControllerTest.php b/tests/unit/Controllers/Table/TrackingControllerTest.php index 54fd392f94..952edb783b 100644 --- a/tests/unit/Controllers/Table/TrackingControllerTest.php +++ b/tests/unit/Controllers/Table/TrackingControllerTest.php @@ -58,7 +58,6 @@ class TrackingControllerTest extends AbstractTestCase $bookmarkRepository = new BookmarkRepository($this->dbi, $relation); (new TrackingController( $response, - $template, new Tracking( new SqlQueryForm($template, $this->dbi, $bookmarkRepository), $template, diff --git a/tests/unit/Controllers/ThemeSetControllerTest.php b/tests/unit/Controllers/ThemeSetControllerTest.php index a6d516ebe4..91a98b83d5 100644 --- a/tests/unit/Controllers/ThemeSetControllerTest.php +++ b/tests/unit/Controllers/ThemeSetControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\ThemeSetController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Theme\ThemeManager; @@ -43,7 +42,7 @@ class ThemeSetControllerTest extends AbstractTestCase $userPreferences->expects(self::once())->method('save') ->with(self::equalTo(['ThemeDefault' => 'theme_name'])); - (new ThemeSetController(new ResponseRenderer(), new Template(), $themeManager, $userPreferences))($request); + (new ThemeSetController(new ResponseRenderer(), $themeManager, $userPreferences))($request); } /** @param string[]|string|null $themeName */ @@ -63,7 +62,7 @@ class ThemeSetControllerTest extends AbstractTestCase $userPreferences->expects(self::never())->method('load'); $userPreferences->expects(self::never())->method('save'); - (new ThemeSetController(new ResponseRenderer(), new Template(), $themeManager, $userPreferences))($request); + (new ThemeSetController(new ResponseRenderer(), $themeManager, $userPreferences))($request); } /** diff --git a/tests/unit/Controllers/Transformation/OverviewControllerTest.php b/tests/unit/Controllers/Transformation/OverviewControllerTest.php index f5d27238b9..e9bf00b1c9 100644 --- a/tests/unit/Controllers/Transformation/OverviewControllerTest.php +++ b/tests/unit/Controllers/Transformation/OverviewControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\Transformation\OverviewController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Transformations; @@ -38,7 +37,7 @@ class OverviewControllerTest extends AbstractTestCase { $response = new ResponseRenderer(); - $controller = new OverviewController($response, new Template(), new Transformations()); + $controller = new OverviewController($response, new Transformations()); $controller(self::createStub(ServerRequest::class)); $actual = $response->getHTMLResult(); diff --git a/tests/unit/Controllers/VersionCheckControllerTest.php b/tests/unit/Controllers/VersionCheckControllerTest.php index da1cf8b1e3..21d2f7d609 100644 --- a/tests/unit/Controllers/VersionCheckControllerTest.php +++ b/tests/unit/Controllers/VersionCheckControllerTest.php @@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\VersionCheckController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Release; -use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\VersionInformation; @@ -42,7 +41,6 @@ class VersionCheckControllerTest extends AbstractTestCase (new VersionCheckController( new ResponseRenderer(), - new Template(), $versionInformation, ))(self::createStub(ServerRequest::class)); @@ -67,7 +65,6 @@ class VersionCheckControllerTest extends AbstractTestCase (new VersionCheckController( new ResponseRenderer(), - new Template(), $versionInformation, ))(self::createStub(ServerRequest::class)); @@ -86,7 +83,6 @@ class VersionCheckControllerTest extends AbstractTestCase (new VersionCheckController( new ResponseRenderer(), - new Template(), $versionInformation, ))(self::createStub(ServerRequest::class)); diff --git a/tests/unit/ResponseRendererTest.php b/tests/unit/ResponseRendererTest.php index 7266523a42..fd2a2b3f44 100644 --- a/tests/unit/ResponseRendererTest.php +++ b/tests/unit/ResponseRendererTest.php @@ -4,15 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; +use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Footer; use PhpMyAdmin\Header; +use PhpMyAdmin\Html\MySQLDocumentation; +use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; +use PhpMyAdmin\Scripts; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\PreserveGlobalState; use PHPUnit\Framework\Attributes\RunInSeparateProcess; use ReflectionProperty; +use function array_column; + #[CoversClass(ResponseRenderer::class)] class ResponseRendererTest extends AbstractTestCase { @@ -30,6 +36,7 @@ class ResponseRendererTest extends AbstractTestCase public function testSetAjax(): void { $_REQUEST = []; + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); $response = ResponseRenderer::getInstance(); $header = $response->getHeader(); $footer = (new ReflectionProperty(ResponseRenderer::class, 'footer'))->getValue($response); @@ -50,5 +57,73 @@ class ResponseRendererTest extends AbstractTestCase self::assertFalse($response->isAjax()); self::assertFalse($headerIsAjax->getValue($header)); self::assertFalse($footerIsAjax->getValue($footer)); + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); + } + + public function testAddScriptFiles(): void + { + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); + $response = ResponseRenderer::getInstance(); + $header = $response->getHeader(); + $headerScripts = (new ReflectionProperty(Header::class, 'scripts'))->getValue($header); + self::assertInstanceOf(Scripts::class, $headerScripts); + $files = array_column($headerScripts->getFiles(), 'name'); + self::assertNotContains('server/privileges.js', $files); + self::assertNotContains('vendor/zxcvbn-ts.js', $files); + + $response->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); + + $files = array_column($headerScripts->getFiles(), 'name'); + self::assertContains('server/privileges.js', $files); + self::assertContains('vendor/zxcvbn-ts.js', $files); + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); + } + + public function testCheckParametersWithMissingParameters(): void + { + $_REQUEST = []; + $GLOBALS['param1'] = 'param1'; + $GLOBALS['param2'] = null; + + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); + $responseRenderer = ResponseRenderer::getInstance(); + $responseRenderer->setAjax(false); + + $message = 'Missing parameter: param2'; + $message .= MySQLDocumentation::showDocumentation('faq', 'faqmissingparameters', true); + $message .= '[br]'; + $expected = Message::error($message)->getDisplay(); + + self::assertFalse($responseRenderer->checkParameters(['param1', 'param2'])); + $response = $responseRenderer->response(); + + self::assertStringContainsString($expected, (string) $response->getBody()); + self::assertSame(StatusCodeInterface::STATUS_BAD_REQUEST, $response->getStatusCode()); + + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); + } + + public function testCheckParametersWithAllParameters(): void + { + $_REQUEST = []; + $GLOBALS['param1'] = 'param1'; + $GLOBALS['param2'] = 'param2'; + + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); + $responseRenderer = ResponseRenderer::getInstance(); + $responseRenderer->setAjax(false); + + $message = 'Missing parameter: param2'; + $message .= MySQLDocumentation::showDocumentation('faq', 'faqmissingparameters', true); + $message .= '[br]'; + $expected = Message::error($message)->getDisplay(); + + self::assertTrue($responseRenderer->checkParameters(['param1', 'param2'])); + $response = $responseRenderer->response(); + + self::assertStringNotContainsString($expected, (string) $response->getBody()); + self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); + + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); } }