Skip to content

Commit 9550066

Browse files
committed
Introduce the ServerRequest object to AddFieldController
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
1 parent 25daf89 commit 9550066

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

libraries/classes/Controllers/Table/AddFieldController.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use PhpMyAdmin\DatabaseInterface;
1212
use PhpMyAdmin\DbTableExists;
1313
use PhpMyAdmin\Html\Generator;
14+
use PhpMyAdmin\Http\ServerRequest;
1415
use PhpMyAdmin\Message;
1516
use PhpMyAdmin\ResponseRenderer;
1617
use PhpMyAdmin\Table\ColumnsDefinition;
@@ -22,6 +23,7 @@
2223
use function __;
2324
use function intval;
2425
use function is_array;
26+
use function is_numeric;
2527
use function min;
2628
use function strlen;
2729

@@ -57,7 +59,7 @@ public function __construct(
5759
$this->columnsDefinition = $columnsDefinition;
5860
}
5961

60-
public function __invoke(): void
62+
public function __invoke(ServerRequest $request): void
6163
{
6264
$GLOBALS['errorUrl'] = $GLOBALS['errorUrl'] ?? null;
6365
$GLOBALS['message'] = $GLOBALS['message'] ?? null;
@@ -66,6 +68,9 @@ public function __invoke(): void
6668
$GLOBALS['regenerate'] = $GLOBALS['regenerate'] ?? null;
6769
$GLOBALS['result'] = $GLOBALS['result'] ?? null;
6870

71+
/** @var string|null $numberOfFields */
72+
$numberOfFields = $request->getParsedBodyParam('num_fields');
73+
6974
$this->addScriptFiles(['table/structure.js']);
7075

7176
$this->checkParameters(['db', 'table']);
@@ -95,8 +100,8 @@ public function __invoke(): void
95100
4096
96101
);
97102
$GLOBALS['regenerate'] = true;
98-
} elseif (isset($_POST['num_fields']) && intval($_POST['num_fields']) > 0) {
99-
$GLOBALS['num_fields'] = min(4096, intval($_POST['num_fields']));
103+
} elseif (is_numeric($numberOfFields) && $numberOfFields > 0) {
104+
$GLOBALS['num_fields'] = min(4096, (int) $numberOfFields);
100105
} else {
101106
$GLOBALS['num_fields'] = 1;
102107
}

test/classes/Controllers/Table/AddFieldControllerTest.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use PhpMyAdmin\Config;
88
use PhpMyAdmin\ConfigStorage\Relation;
99
use PhpMyAdmin\Controllers\Table\AddFieldController;
10+
use PhpMyAdmin\Http\ServerRequest;
1011
use PhpMyAdmin\Table\ColumnsDefinition;
1112
use PhpMyAdmin\Template;
1213
use PhpMyAdmin\Tests\AbstractTestCase;
@@ -250,6 +251,9 @@ public function testInvoke(): void
250251
'disable_is' => true,
251252
]);
252253

254+
$request = $this->createStub(ServerRequest::class);
255+
$request->method('getParsedBodyParam')->willReturnMap([['num_fields', null, '1']]);
256+
253257
$transformations = new Transformations();
254258
(new AddFieldController(
255259
$response,
@@ -258,7 +262,7 @@ public function testInvoke(): void
258262
new Config(),
259263
$dbi,
260264
new ColumnsDefinition($dbi, $relation, $transformations)
261-
))();
265+
))($request);
262266

263267
$this->assertSame($expected, $response->getHTMLResult());
264268
}

0 commit comments

Comments
 (0)