Skip to content

Commit 3ac11ff

Browse files
committed
Introduce the ServerRequest object to ChangeController
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
1 parent c947f28 commit 3ac11ff

6 files changed

Lines changed: 36 additions & 20 deletions

File tree

libraries/classes/Controllers/Table/ChangeController.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use PhpMyAdmin\Controllers\AbstractController;
1010
use PhpMyAdmin\DbTableExists;
1111
use PhpMyAdmin\Html\Generator;
12+
use PhpMyAdmin\Http\ServerRequest;
1213
use PhpMyAdmin\InsertEdit;
1314
use PhpMyAdmin\ResponseRenderer;
1415
use PhpMyAdmin\Template;
@@ -18,6 +19,7 @@
1819
use function array_fill;
1920
use function count;
2021
use function is_array;
22+
use function is_string;
2123
use function str_contains;
2224
use function strlen;
2325
use function strpos;
@@ -44,7 +46,7 @@ public function __construct(
4446
$this->relation = $relation;
4547
}
4648

47-
public function __invoke(): void
49+
public function __invoke(ServerRequest $request): void
4850
{
4951
$GLOBALS['text_dir'] = $GLOBALS['text_dir'] ?? null;
5052
$GLOBALS['disp_message'] = $GLOBALS['disp_message'] ?? null;
@@ -116,10 +118,9 @@ public function __invoke(): void
116118
}
117119
}
118120

119-
$GLOBALS['urlParams'] = [
120-
'db' => $GLOBALS['db'],
121-
'sql_query' => $_POST['sql_query'] ?? '',
122-
];
121+
/** @var mixed $sqlQuery */
122+
$sqlQuery = $request->getParsedBodyParam('sql_query');
123+
$GLOBALS['urlParams'] = ['db' => $GLOBALS['db'], 'sql_query' => is_string($sqlQuery) ? $sqlQuery : ''];
123124

124125
if (strpos($GLOBALS['goto'] ?? '', 'index.php?route=/table') === 0) {
125126
$GLOBALS['urlParams']['table'] = $GLOBALS['table'];

libraries/classes/Controllers/Table/ChangeRowsController.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace PhpMyAdmin\Controllers\Table;
66

77
use PhpMyAdmin\Controllers\AbstractController;
8+
use PhpMyAdmin\Http\ServerRequest;
89
use PhpMyAdmin\ResponseRenderer;
910
use PhpMyAdmin\Template;
1011
use PhpMyAdmin\Url;
@@ -26,7 +27,7 @@ public function __construct(
2627
$this->changeController = $changeController;
2728
}
2829

29-
public function __invoke(): void
30+
public function __invoke(ServerRequest $request): void
3031
{
3132
$GLOBALS['active_page'] = $GLOBALS['active_page'] ?? null;
3233
$GLOBALS['where_clause'] = $GLOBALS['where_clause'] ?? null;
@@ -51,6 +52,6 @@ public function __invoke(): void
5152

5253
$GLOBALS['active_page'] = Url::getFromRoute('/table/change');
5354

54-
($this->changeController)();
55+
($this->changeController)($request);
5556
}
5657
}

libraries/classes/Controllers/Table/ReplaceController.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use PhpMyAdmin\DatabaseInterface;
1414
use PhpMyAdmin\File;
1515
use PhpMyAdmin\Html\Generator;
16+
use PhpMyAdmin\Http\ServerRequest;
1617
use PhpMyAdmin\InsertEdit;
1718
use PhpMyAdmin\Message;
1819
use PhpMyAdmin\Plugins\IOTransformationsPlugin;
@@ -67,7 +68,7 @@ public function __construct(
6768
$this->dbi = $dbi;
6869
}
6970

70-
public function __invoke(): void
71+
public function __invoke(ServerRequest $request): void
7172
{
7273
$GLOBALS['containerBuilder'] = $GLOBALS['containerBuilder'] ?? null;
7374
$GLOBALS['urlParams'] = $GLOBALS['urlParams'] ?? null;
@@ -120,7 +121,7 @@ public function __invoke(): void
120121
$GLOBALS['cfg']['InsertRows'] = $_POST['insert_rows'];
121122
/** @var ChangeController $controller */
122123
$controller = $GLOBALS['containerBuilder']->get(ChangeController::class);
123-
$controller();
124+
$controller($request);
124125

125126
return;
126127
}
@@ -466,7 +467,7 @@ public function __invoke(): void
466467
if ($GLOBALS['goto_include'] === '/table/change') {
467468
/** @var ChangeController $controller */
468469
$controller = $GLOBALS['containerBuilder']->get(ChangeController::class);
469-
$controller();
470+
$controller($request);
470471

471472
return;
472473
}
@@ -674,7 +675,7 @@ public function __invoke(): void
674675
if ($GLOBALS['goto_include'] === '/table/change') {
675676
/** @var ChangeController $controller */
676677
$controller = $GLOBALS['containerBuilder']->get(ChangeController::class);
677-
$controller();
678+
$controller($request);
678679

679680
return;
680681
}

test/classes/Controllers/Table/ChangeControllerTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use PhpMyAdmin\ConfigStorage\Relation;
99
use PhpMyAdmin\Controllers\Table\ChangeController;
1010
use PhpMyAdmin\FileListing;
11+
use PhpMyAdmin\Http\ServerRequest;
1112
use PhpMyAdmin\InsertEdit;
1213
use PhpMyAdmin\Template;
1314
use PhpMyAdmin\Tests\AbstractTestCase;
@@ -39,14 +40,16 @@ public function testChangeController(): void
3940
$response = new ResponseRenderer();
4041
$pageSettings = new PageSettings('Edit');
4142

43+
$request = $this->createStub(ServerRequest::class);
44+
4245
$relation = new Relation($dbi);
4346
$template = new Template();
4447
(new ChangeController(
4548
$response,
4649
$template,
4750
new InsertEdit($dbi, $relation, new Transformations(), new FileListing(), $template),
4851
$relation
49-
))();
52+
))($request);
5053
$actual = $response->getHTMLResult();
5154

5255
$this->assertStringContainsString($pageSettings->getHTML(), $actual);

test/classes/Controllers/Table/ChangeRowsControllerTest.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use PhpMyAdmin\Controllers\Table\ChangeController;
88
use PhpMyAdmin\Controllers\Table\ChangeRowsController;
9+
use PhpMyAdmin\Http\ServerRequest;
910
use PhpMyAdmin\Template;
1011
use PhpMyAdmin\Tests\AbstractTestCase;
1112
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
@@ -28,10 +29,11 @@ public function testChangeRowsController(): void
2829
{
2930
$_POST['rows_to_delete'] = 'row';
3031

32+
$request = $this->createStub(ServerRequest::class);
3133
$mock = $this->createMock(ChangeController::class);
32-
$mock->expects($this->once())->method('__invoke');
34+
$mock->expects($this->once())->method('__invoke')->with($request);
3335

34-
(new ChangeRowsController(new ResponseRenderer(), new Template(), $mock))();
36+
(new ChangeRowsController(new ResponseRenderer(), new Template(), $mock))($request);
3537

3638
/** @psalm-suppress InvalidArrayOffset */
3739
$this->assertSame('index.php?route=/table/change&server=2&lang=en', $GLOBALS['active_page']);
@@ -43,11 +45,12 @@ public function testWithoutRowsToDelete(): void
4345
{
4446
$_POST['goto'] = 'goto';
4547

48+
$request = $this->createStub(ServerRequest::class);
4649
$mock = $this->createMock(ChangeController::class);
47-
$mock->expects($this->never())->method('__invoke');
50+
$mock->expects($this->never())->method('__invoke')->with($request);
4851

4952
$response = new ResponseRenderer();
50-
(new ChangeRowsController($response, new Template(), $mock))();
53+
(new ChangeRowsController($response, new Template(), $mock))($request);
5154

5255
$this->assertSame(['message' => 'No row selected.'], $response->getJSONResult());
5356
$this->assertFalse($response->hasSuccessState());
@@ -62,10 +65,11 @@ public function testWithRowsToDelete(): void
6265
$_POST['goto'] = 'goto';
6366
$_POST['rows_to_delete'] = ['key1' => 'row1', 'key2' => 'row2'];
6467

68+
$request = $this->createStub(ServerRequest::class);
6569
$mock = $this->createMock(ChangeController::class);
66-
$mock->expects($this->once())->method('__invoke');
70+
$mock->expects($this->once())->method('__invoke')->with($request);
6771

68-
(new ChangeRowsController(new ResponseRenderer(), new Template(), $mock))();
72+
(new ChangeRowsController(new ResponseRenderer(), new Template(), $mock))($request);
6973

7074
/** @psalm-suppress InvalidArrayOffset */
7175
$this->assertSame('index.php?route=/table/change&server=2&lang=en', $GLOBALS['active_page']);

test/classes/Controllers/Table/ReplaceControllerTest.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use PhpMyAdmin\ConfigStorage\RelationParameters;
88
use PhpMyAdmin\Controllers\Table\ReplaceController;
9+
use PhpMyAdmin\Http\ServerRequest;
910
use PhpMyAdmin\ResponseRenderer;
1011
use PhpMyAdmin\Tests\AbstractTestCase;
1112

@@ -88,14 +89,17 @@ public function testReplace(): void
8889
1 => [],
8990
],
9091
];
92+
93+
$request = $this->createStub(ServerRequest::class);
94+
9195
$GLOBALS['goto'] = 'index.php?route=/sql';
9296
$GLOBALS['containerBuilder']->setParameter('db', $GLOBALS['db']);
9397
$GLOBALS['containerBuilder']->setParameter('table', $GLOBALS['table']);
9498
/** @var ReplaceController $replaceController */
9599
$replaceController = $GLOBALS['containerBuilder']->get(ReplaceController::class);
96100
$this->dummyDbi->addSelectDb('my_db');
97101
$this->dummyDbi->addSelectDb('my_db');
98-
$replaceController();
102+
$replaceController($request);
99103
$this->assertAllSelectsConsumed();
100104
$this->assertStringContainsString(
101105
'class="icon ic_s_success"> Showing rows 0 - 1 (2 total, Query took',
@@ -129,14 +133,16 @@ public function testIsInsertRow(): void
129133
[]
130134
);
131135

136+
$request = $this->createStub(ServerRequest::class);
137+
132138
$GLOBALS['containerBuilder']->setParameter('db', $GLOBALS['db']);
133139
$GLOBALS['containerBuilder']->setParameter('table', $GLOBALS['table']);
134140
/** @var ReplaceController $replaceController */
135141
$replaceController = $GLOBALS['containerBuilder']->get(ReplaceController::class);
136142
$this->dummyDbi->addSelectDb('my_db');
137143
$this->dummyDbi->addSelectDb('my_db');
138144
$this->dummyDbi->addSelectDb('my_db');
139-
$replaceController();
145+
$replaceController($request);
140146
$this->assertAllSelectsConsumed();
141147
$this->assertEquals(5, $GLOBALS['cfg']['InsertRows']);
142148
$this->assertStringContainsString(

0 commit comments

Comments
 (0)