diff --git a/libraries/classes/Controllers/Table/IndexRenameController.php b/libraries/classes/Controllers/Table/IndexRenameController.php index ca7613e2ed..9fc1c4d822 100644 --- a/libraries/classes/Controllers/Table/IndexRenameController.php +++ b/libraries/classes/Controllers/Table/IndexRenameController.php @@ -88,6 +88,7 @@ final class IndexRenameController extends AbstractController if (isset($_POST['do_save_data'])) { $oldIndexName = $request->getParsedBodyParam('old_index', ''); $this->indexes->doSaveData( + $request, $index, true, $GLOBALS['db'], diff --git a/libraries/classes/Controllers/Table/IndexesController.php b/libraries/classes/Controllers/Table/IndexesController.php index 9942631c05..938441930e 100644 --- a/libraries/classes/Controllers/Table/IndexesController.php +++ b/libraries/classes/Controllers/Table/IndexesController.php @@ -94,6 +94,7 @@ class IndexesController extends AbstractController if (isset($_POST['do_save_data'])) { $this->indexes->doSaveData( + $request, $index, false, $GLOBALS['db'], diff --git a/libraries/classes/Table/Indexes.php b/libraries/classes/Table/Indexes.php index 938d11578d..66d9d1514f 100644 --- a/libraries/classes/Table/Indexes.php +++ b/libraries/classes/Table/Indexes.php @@ -4,11 +4,11 @@ declare(strict_types=1); namespace PhpMyAdmin\Table; -use PhpMyAdmin\Application; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Core; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Index; use PhpMyAdmin\Message; @@ -37,6 +37,7 @@ final class Indexes * @param bool $renameMode Rename the Index mode */ public function doSaveData( + ServerRequest $request, Index $index, bool $renameMode, string $db, @@ -85,8 +86,7 @@ final class Indexes } $this->dbi->query($sqlQuery); - $response = ResponseRenderer::getInstance(); - if ($response->isAjax()) { + if ($request->isAjax()) { $message = Message::success( __('Table %1$s has been altered successfully.'), ); @@ -113,7 +113,7 @@ final class Indexes /** @var StructureController $controller */ $controller = Core::getContainerBuilder()->get(StructureController::class); - $controller(Application::getRequest()); + $controller($request); } public function executeAddIndexSql(string|DatabaseName $db, string $sql): Message diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index b64019831b..7d212e3353 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -7761,17 +7761,17 @@ parameters: path: libraries/classes/Controllers/Table/IndexRenameController.php - - message: "#^Parameter \\#3 \\$db of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" + message: "#^Parameter \\#4 \\$db of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" count: 1 path: libraries/classes/Controllers/Table/IndexRenameController.php - - message: "#^Parameter \\#4 \\$table of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" + message: "#^Parameter \\#5 \\$table of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" count: 1 path: libraries/classes/Controllers/Table/IndexRenameController.php - - message: "#^Parameter \\#6 \\$oldIndexName of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" + message: "#^Parameter \\#7 \\$oldIndexName of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" count: 1 path: libraries/classes/Controllers/Table/IndexRenameController.php @@ -7836,12 +7836,12 @@ parameters: path: libraries/classes/Controllers/Table/IndexesController.php - - message: "#^Parameter \\#3 \\$db of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" + message: "#^Parameter \\#4 \\$db of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" count: 1 path: libraries/classes/Controllers/Table/IndexesController.php - - message: "#^Parameter \\#4 \\$table of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" + message: "#^Parameter \\#5 \\$table of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" count: 1 path: libraries/classes/Controllers/Table/IndexesController.php @@ -32225,18 +32225,18 @@ parameters: count: 1 path: test/classes/Table/IndexesTest.php - - - message: "#^Parameter \\#3 \\$db of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" - count: 2 - path: test/classes/Table/IndexesTest.php - - message: "#^Parameter \\#3 \\$dbi of class PhpMyAdmin\\\\Table\\\\Indexes constructor expects PhpMyAdmin\\\\DatabaseInterface, mixed given\\.$#" count: 1 path: test/classes/Table/IndexesTest.php - - message: "#^Parameter \\#4 \\$table of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" + message: "#^Parameter \\#4 \\$db of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" + count: 2 + path: test/classes/Table/IndexesTest.php + + - + message: "#^Parameter \\#5 \\$table of method PhpMyAdmin\\\\Table\\\\Indexes\\:\\:doSaveData\\(\\) expects string, mixed given\\.$#" count: 2 path: test/classes/Table/IndexesTest.php diff --git a/test/classes/Table/IndexesTest.php b/test/classes/Table/IndexesTest.php index 49741eebc4..1ae98dc165 100644 --- a/test/classes/Table/IndexesTest.php +++ b/test/classes/Table/IndexesTest.php @@ -5,8 +5,8 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Table; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\Index; -use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table; use PhpMyAdmin\Table\Indexes; use PhpMyAdmin\Template; @@ -70,19 +70,20 @@ class IndexesTest extends AbstractTestCase $indexes = new Indexes($response, new Template(), $GLOBALS['dbi']); + $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') + ->withQueryParams(['ajax_request' => '1']); + // Preview SQL - $indexes->doSaveData($index, false, $GLOBALS['db'], $GLOBALS['table'], true); + $indexes->doSaveData($request, $index, false, $GLOBALS['db'], $GLOBALS['table'], true); $jsonArray = $response->getJSONResult(); $this->assertArrayHasKey('sql_data', $jsonArray); $this->assertStringContainsString($sqlQuery, $jsonArray['sql_data']); // Alter success $response->clear(); - ResponseRenderer::getInstance()->setAjax(true); - $indexes->doSaveData($index, false, $GLOBALS['db'], $GLOBALS['table'], false); + $indexes->doSaveData($request, $index, false, $GLOBALS['db'], $GLOBALS['table'], false); $jsonArray = $response->getJSONResult(); $this->assertArrayHasKey('index_table', $jsonArray); $this->assertArrayHasKey('message', $jsonArray); - ResponseRenderer::getInstance()->setAjax(false); } }