Skip to content

Commit aa1dd0d

Browse files
Merge pull request #20130 from MauricioFauth/ResponseRenderer-di-refactor
Extract ResponseRenderer dependency from some classes
2 parents e704c81 + 364e8e5 commit aa1dd0d

File tree

101 files changed

+844
-694
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+844
-694
lines changed

app/services.php

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
use PhpMyAdmin\Export\TemplateModel;
3131
use PhpMyAdmin\FileListing;
3232
use PhpMyAdmin\FlashMessenger;
33+
use PhpMyAdmin\Footer;
3334
use PhpMyAdmin\Header;
3435
use PhpMyAdmin\Http\Factory\ResponseFactory;
3536
use PhpMyAdmin\Http\Middleware;
@@ -63,6 +64,7 @@
6364
use PhpMyAdmin\Tracking\TrackingChecker;
6465
use PhpMyAdmin\Transformations;
6566
use PhpMyAdmin\Triggers\Triggers;
67+
use PhpMyAdmin\UrlRedirector;
6668
use PhpMyAdmin\UserPassword;
6769
use PhpMyAdmin\UserPrivilegesFactory;
6870
use PhpMyAdmin\Utils\HttpRequest;
@@ -72,13 +74,19 @@
7274

7375
return [
7476
Advisor::class => ['class' => Advisor::class, 'arguments' => [DatabaseInterface::class, ExpressionLanguage::class]],
75-
Application::class => ['class' => Application::class, 'arguments' => [ResponseFactory::class]],
77+
Application::class => [
78+
'class' => Application::class,
79+
'arguments' => [ResponseFactory::class, ResponseRenderer::class],
80+
],
7681
BrowseForeigners::class => [
7782
'class' => BrowseForeigners::class,
7883
'arguments' => [Template::class, Config::class, ThemeManager::class],
7984
],
8085
Config::class => ['class' => Config::class, 'factory' => [Config::class, 'getInstance']],
81-
Config\PageSettings::class => ['class' => Config\PageSettings::class, 'arguments' => [UserPreferences::class]],
86+
Config\PageSettings::class => [
87+
'class' => Config\PageSettings::class,
88+
'arguments' => [UserPreferences::class, ResponseRenderer::class],
89+
],
8290
CentralColumns::class => ['class' => CentralColumns::class, 'arguments' => [DatabaseInterface::class]],
8391
CreateAddField::class => ['class' => CreateAddField::class, 'arguments' => [DatabaseInterface::class]],
8492
DatabaseInterface::class => [
@@ -138,6 +146,7 @@
138146
FileListing::class,
139147
Template::class,
140148
Config::class,
149+
ResponseRenderer::class,
141150
],
142151
],
143152
Middleware\ErrorHandling::class => [
@@ -172,7 +181,10 @@
172181
'class' => Middleware\UrlParamsSetting::class,
173182
'arguments' => [Config::class],
174183
],
175-
Middleware\TokenRequestParamChecking::class => ['class' => Middleware\TokenRequestParamChecking::class],
184+
Middleware\TokenRequestParamChecking::class => [
185+
'class' => Middleware\TokenRequestParamChecking::class,
186+
'arguments' => [ResponseRenderer::class],
187+
],
176188
Middleware\DatabaseAndTableSetting::class => ['class' => Middleware\DatabaseAndTableSetting::class],
177189
Middleware\SqlQueryGlobalSetting::class => ['class' => Middleware\SqlQueryGlobalSetting::class],
178190
Middleware\LanguageLoading::class => ['class' => Middleware\LanguageLoading::class],
@@ -191,15 +203,15 @@
191203
Middleware\ThemeInitialization::class => ['class' => Middleware\ThemeInitialization::class],
192204
Middleware\UrlRedirection::class => [
193205
'class' => Middleware\UrlRedirection::class,
194-
'arguments' => [Template::class, ResponseFactory::class, UserPreferencesHandler::class],
206+
'arguments' => [UrlRedirector::class, UserPreferencesHandler::class],
195207
],
196208
Middleware\SetupPageRedirection::class => [
197209
'class' => Middleware\SetupPageRedirection::class,
198-
'arguments' => [Config::class, ResponseFactory::class, UserPreferencesHandler::class],
210+
'arguments' => [Config::class, ResponseFactory::class, UserPreferencesHandler::class, ResponseRenderer::class],
199211
],
200212
Middleware\MinimumCommonRedirection::class => [
201213
'class' => Middleware\MinimumCommonRedirection::class,
202-
'arguments' => [ResponseFactory::class, UserPreferencesHandler::class],
214+
'arguments' => [ResponseFactory::class, UserPreferencesHandler::class, ResponseRenderer::class],
203215
],
204216
Middleware\LanguageAndThemeCookieSaving::class => [
205217
'class' => Middleware\LanguageAndThemeCookieSaving::class,
@@ -231,9 +243,12 @@
231243
],
232244
Middleware\ResponseRendererLoading::class => [
233245
'class' => Middleware\ResponseRendererLoading::class,
234-
'arguments' => [Config::class],
246+
'arguments' => [Config::class, ResponseRenderer::class],
247+
],
248+
Middleware\ProfilingChecking::class => [
249+
'class' => Middleware\ProfilingChecking::class,
250+
'arguments' => [ResponseRenderer::class, DatabaseInterface::class],
235251
],
236-
Middleware\ProfilingChecking::class => ['class' => Middleware\ProfilingChecking::class],
237252
Middleware\UserPreferencesLoading::class => [
238253
'class' => Middleware\UserPreferencesLoading::class,
239254
'arguments' => [UserPreferencesHandler::class],
@@ -260,7 +275,10 @@
260275
],
261276
OutputHandler::class => ['class' => OutputHandler::class],
262277
Maintenance::class => ['class' => Maintenance::class, 'arguments' => [DatabaseInterface::class]],
263-
AuthenticationPluginFactory::class => ['class' => AuthenticationPluginFactory::class],
278+
AuthenticationPluginFactory::class => [
279+
'class' => AuthenticationPluginFactory::class,
280+
'arguments' => [ResponseRenderer::class],
281+
],
264282
Relation::class => ['class' => Relation::class, 'arguments' => [DatabaseInterface::class, Config::class]],
265283
RelationCleanup::class => [
266284
'class' => RelationCleanup::class,
@@ -271,6 +289,15 @@
271289
ResponseRenderer::class => [
272290
'class' => ResponseRenderer::class,
273291
'factory' => [ResponseRenderer::class, 'getInstance'],
292+
'arguments' => [
293+
Config::class,
294+
Template::class,
295+
Header::class,
296+
Footer::class,
297+
ErrorHandler::class,
298+
DatabaseInterface::class,
299+
ResponseFactory::class,
300+
],
274301
],
275302
Routines::class => ['class' => Routines::class, 'arguments' => [DatabaseInterface::class, Config::class]],
276303
Plugins::class => ['class' => Plugins::class, 'arguments' => [DatabaseInterface::class]],
@@ -296,6 +323,7 @@
296323
Template::class,
297324
BookmarkRepository::class,
298325
Config::class,
326+
ResponseRenderer::class,
299327
],
300328
],
301329
SqlQueryForm::class => [
@@ -380,4 +408,9 @@
380408
],
381409
LanguageManager::class => ['class' => LanguageManager::class, 'factory' => [LanguageManager::class, 'getInstance']],
382410
ClockInterface::class => ['class' => Clock::class],
411+
Footer::class => ['class' => Footer::class, 'arguments' => [Template::class, Config::class]],
412+
UrlRedirector::class => [
413+
'class' => UrlRedirector::class,
414+
'arguments' => [ResponseRenderer::class, Template::class, ResponseFactory::class],
415+
],
383416
];

app/services_controllers.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,10 +445,13 @@
445445
'class' => LicenseController::class,
446446
'arguments' => [ResponseRenderer::class, ResponseFactory::class],
447447
],
448-
LintController::class => ['class' => LintController::class, 'arguments' => [ResponseFactory::class]],
448+
LintController::class => [
449+
'class' => LintController::class,
450+
'arguments' => [ResponseFactory::class, ResponseRenderer::class],
451+
],
449452
LogoutController::class => [
450453
'class' => LogoutController::class,
451-
'arguments' => [AuthenticationPluginFactory::class],
454+
'arguments' => [AuthenticationPluginFactory::class, ResponseRenderer::class],
452455
],
453456
NavigationController::class => [
454457
'class' => NavigationController::class,
@@ -842,6 +845,7 @@
842845
ColumnsDefinition::class,
843846
DbTableExists::class,
844847
UserPrivilegesFactory::class,
848+
Template::class,
845849
],
846850
],
847851
Table\ChangeController::class => [
@@ -873,6 +877,7 @@
873877
DatabaseInterface::class,
874878
ColumnsDefinition::class,
875879
UserPrivilegesFactory::class,
880+
Template::class,
876881
],
877882
],
878883
Table\DeleteConfirmController::class => [
@@ -1050,6 +1055,7 @@
10501055
Database\SqlController::class,
10511056
Table\ChangeController::class,
10521057
Table\SqlController::class,
1058+
Template::class,
10531059
],
10541060
],
10551061
Table\SearchController::class => [
@@ -1139,6 +1145,7 @@
11391145
Table\StructureController::class,
11401146
UserPrivilegesFactory::class,
11411147
Config::class,
1148+
Template::class,
11421149
],
11431150
],
11441151
Table\Structure\SpatialController::class => [

phpstan-baseline.neon

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2020,7 +2020,7 @@ parameters:
20202020
path: src/Controllers/Import/ImportController.php
20212021

20222022
-
2023-
message: '#^Parameter \#4 \$backUrl of static method PhpMyAdmin\\Html\\Generator\:\:mysqlDie\(\) expects string, mixed given\.$#'
2023+
message: '#^Parameter \#1 \$backUrl of static method PhpMyAdmin\\Html\\Generator\:\:getBackUrlHtml\(\) expects string, mixed given\.$#'
20242024
identifier: argument.type
20252025
count: 1
20262026
path: src/Controllers/Import/ImportController.php
@@ -2206,7 +2206,7 @@ parameters:
22062206
path: src/Controllers/Preferences/ManageController.php
22072207

22082208
-
2209-
message: '#^Parameter \#1 \$fileName of method PhpMyAdmin\\Config\\UserPreferences\:\:redirect\(\) expects string, string\|false given\.$#'
2209+
message: '#^Parameter \#1 \$fileName of method PhpMyAdmin\\Config\\UserPreferences\:\:getUrlToRedirect\(\) expects string, string\|false given\.$#'
22102210
identifier: argument.type
22112211
count: 1
22122212
path: src/Controllers/Preferences/ManageController.php
@@ -6972,15 +6972,6 @@ parameters:
69726972
count: 1
69736973
path: src/Http/Middleware/DatabaseServerVersionChecking.php
69746974

6975-
-
6976-
message: '''
6977-
#^Call to deprecated method getInstance\(\) of class PhpMyAdmin\\Dbal\\DatabaseInterface\:
6978-
Use dependency injection instead\.$#
6979-
'''
6980-
identifier: staticMethod.deprecated
6981-
count: 1
6982-
path: src/Http/Middleware/ProfilingChecking.php
6983-
69846975
-
69856976
message: '''
69866977
#^Access to deprecated static property \$route of class PhpMyAdmin\\Routing\\Routing\:
@@ -10815,24 +10806,6 @@ parameters:
1081510806
count: 1
1081610807
path: src/Replication/ReplicationInfo.php
1081710808

10818-
-
10819-
message: '''
10820-
#^Call to deprecated method getInstance\(\) of class PhpMyAdmin\\Config\:
10821-
Use dependency injection instead\.$#
10822-
'''
10823-
identifier: staticMethod.deprecated
10824-
count: 1
10825-
path: src/ResponseRenderer.php
10826-
10827-
-
10828-
message: '''
10829-
#^Call to deprecated method getInstance\(\) of class PhpMyAdmin\\Dbal\\DatabaseInterface\:
10830-
Use dependency injection instead\.$#
10831-
'''
10832-
identifier: staticMethod.deprecated
10833-
count: 1
10834-
path: src/ResponseRenderer.php
10835-
1083610809
-
1083710810
message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#'
1083810811
identifier: empty.notAllowed
@@ -13017,12 +12990,6 @@ parameters:
1301712990
count: 1
1301812991
path: src/UserPassword.php
1301912992

13020-
-
13021-
message: '#^Only booleans are allowed in a negated boolean, PhpMyAdmin\\Dbal\\ResultInterface\|false given\.$#'
13022-
identifier: booleanNot.exprNotBoolean
13023-
count: 1
13024-
path: src/UserPassword.php
13025-
1302612993
-
1302712994
message: '#^Parameter \#1 \$password of method PhpMyAdmin\\Server\\Privileges\:\:getHashedPassword\(\) expects string, mixed given\.$#'
1302812995
identifier: argument.type
@@ -14220,7 +14187,7 @@ parameters:
1422014187
Use dependency injection instead\.$#
1422114188
'''
1422214189
identifier: staticMethod.deprecated
14223-
count: 8
14190+
count: 7
1422414191
path: tests/unit/Config/UserPreferencesTest.php
1422514192

1422614193
-
@@ -14229,7 +14196,7 @@ parameters:
1422914196
Use dependency injection instead\.$#
1423014197
'''
1423114198
identifier: staticMethod.deprecated
14232-
count: 8
14199+
count: 7
1423314200
path: tests/unit/Config/UserPreferencesTest.php
1423414201

1423514202
-

psalm-baseline.xml

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@
364364
</file>
365365
<file src="src/Config/PageSettings.php">
366366
<ArgumentTypeCoercion>
367-
<code><![CDATA[$response->getSelfUrl()]]></code>
367+
<code><![CDATA[$this->responseRenderer->getSelfUrl()]]></code>
368368
</ArgumentTypeCoercion>
369369
<DeprecatedMethod>
370370
<code><![CDATA[Config::getInstance()]]></code>
@@ -2248,6 +2248,7 @@
22482248
<MixedArgument>
22492249
<code><![CDATA[Current::$database]]></code>
22502250
<code><![CDATA[Current::$table]]></code>
2251+
<code><![CDATA[Current::$table]]></code>
22512252
</MixedArgument>
22522253
<PossiblyInvalidArgument>
22532254
<code><![CDATA[Current::$database]]></code>
@@ -4854,9 +4855,9 @@
48544855
</PossiblyUnusedMethod>
48554856
</file>
48564857
<file src="src/Http/Middleware/ProfilingChecking.php">
4857-
<DeprecatedMethod>
4858-
<code><![CDATA[DatabaseInterface::getInstance()]]></code>
4859-
</DeprecatedMethod>
4858+
<PossiblyUnusedMethod>
4859+
<code><![CDATA[__construct]]></code>
4860+
</PossiblyUnusedMethod>
48604861
</file>
48614862
<file src="src/Http/Middleware/RequestProblemChecking.php">
48624863
<PossiblyUnusedMethod>
@@ -5793,9 +5794,6 @@
57935794
<DeprecatedMethod>
57945795
<code><![CDATA[Config::getInstance()]]></code>
57955796
</DeprecatedMethod>
5796-
<UnsafeInstantiation>
5797-
<code><![CDATA[new $class()]]></code>
5798-
</UnsafeInstantiation>
57995797
</file>
58005798
<file src="src/Plugins/Export/ExportCodegen.php">
58015799
<PossiblyNullArgument>
@@ -7320,10 +7318,6 @@
73207318
</MixedArgument>
73217319
</file>
73227320
<file src="src/ResponseRenderer.php">
7323-
<DeprecatedMethod>
7324-
<code><![CDATA[Config::getInstance()]]></code>
7325-
<code><![CDATA[DatabaseInterface::getInstance()]]></code>
7326-
</DeprecatedMethod>
73277321
<MixedArgumentTypeCoercion>
73287322
<code><![CDATA[$params]]></code>
73297323
</MixedArgumentTypeCoercion>
@@ -8179,10 +8173,6 @@
81798173
<code><![CDATA[$column['Extra']]]></code>
81808174
<code><![CDATA[$existrelForeign[$masterFieldMd5]->refTableName]]></code>
81818175
</PossiblyNullArgument>
8182-
<PossiblyNullOperand>
8183-
<code><![CDATA[Generator::mysqlDie($tmpErrorCreate, $createQuery, false, '', false)]]></code>
8184-
<code><![CDATA[Generator::mysqlDie($tmpErrorDrop, $dropQuery, false, '', false)]]></code>
8185-
</PossiblyNullOperand>
81868176
<PossiblyUnusedReturnValue>
81878177
<code><![CDATA[true|Message]]></code>
81888178
</PossiblyUnusedReturnValue>
@@ -8998,8 +8988,6 @@
89988988
<code><![CDATA[Config::getInstance()]]></code>
89998989
<code><![CDATA[Config::getInstance()]]></code>
90008990
<code><![CDATA[Config::getInstance()]]></code>
9001-
<code><![CDATA[Config::getInstance()]]></code>
9002-
<code><![CDATA[DatabaseInterface::getInstance()]]></code>
90038991
<code><![CDATA[DatabaseInterface::getInstance()]]></code>
90048992
<code><![CDATA[DatabaseInterface::getInstance()]]></code>
90058993
<code><![CDATA[DatabaseInterface::getInstance()]]></code>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<div class="preview_sql">
2+
{% if query_data is empty %}
3+
{{ t('No change') }}
4+
{% elseif query_data is iterable %}
5+
{% for query in query_data %}
6+
{{ format_sql(query) }}
7+
{% endfor %}
8+
{% else %}
9+
{{ format_sql(query_data) }}
10+
{% endif %}
11+
</div>

resources/templates/preview_sql.twig

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/Application.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555

5656
readonly class Application
5757
{
58-
public function __construct(private ResponseFactory $responseFactory)
58+
public function __construct(private ResponseFactory $responseFactory, private ResponseRenderer $responseRenderer)
5959
{
6060
}
6161

@@ -67,7 +67,7 @@ public static function init(): self
6767
public function run(bool $isSetupPage = false): void
6868
{
6969
$container = ContainerBuilder::getContainer();
70-
$requestHandler = new QueueRequestHandler($container, new ApplicationHandler($this));
70+
$requestHandler = new QueueRequestHandler($container, new ApplicationHandler($this, $this->responseRenderer));
7171
$requestHandler->add(ErrorHandling::class);
7272
$requestHandler->add(OutputBuffering::class);
7373
$requestHandler->add(PhpExtensionsChecking::class);

0 commit comments

Comments
 (0)