Remove method Core::previewSQL()
Inlines it to remove the ResponseRenderer dependency. Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
This commit is contained in:
parent
ef2477bae2
commit
ce3db158d7
@ -842,6 +842,7 @@ return [
|
||||
ColumnsDefinition::class,
|
||||
DbTableExists::class,
|
||||
UserPrivilegesFactory::class,
|
||||
Template::class,
|
||||
],
|
||||
],
|
||||
Table\ChangeController::class => [
|
||||
@ -873,6 +874,7 @@ return [
|
||||
DatabaseInterface::class,
|
||||
ColumnsDefinition::class,
|
||||
UserPrivilegesFactory::class,
|
||||
Template::class,
|
||||
],
|
||||
],
|
||||
Table\DeleteConfirmController::class => [
|
||||
@ -1050,6 +1052,7 @@ return [
|
||||
Database\SqlController::class,
|
||||
Table\ChangeController::class,
|
||||
Table\SqlController::class,
|
||||
Template::class,
|
||||
],
|
||||
],
|
||||
Table\SearchController::class => [
|
||||
@ -1139,6 +1142,7 @@ return [
|
||||
Table\StructureController::class,
|
||||
UserPrivilegesFactory::class,
|
||||
Config::class,
|
||||
Template::class,
|
||||
],
|
||||
],
|
||||
Table\Structure\SpatialController::class => [
|
||||
|
||||
11
resources/templates/components/_preview_sql.twig
Normal file
11
resources/templates/components/_preview_sql.twig
Normal file
@ -0,0 +1,11 @@
|
||||
<div class="preview_sql">
|
||||
{% if query_data is empty %}
|
||||
{{ t('No change') }}
|
||||
{% elseif query_data is iterable %}
|
||||
{% for query in query_data %}
|
||||
{{ format_sql(query) }}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{{ format_sql(query_data) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
@ -1,11 +0,0 @@
|
||||
<div class="preview_sql">
|
||||
{% if query_data is empty %}
|
||||
{{ t('No change') }}
|
||||
{% elseif query_data is iterable %}
|
||||
{% for query in query_data %}
|
||||
{{ format_sql(query) }}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{{ format_sql(query_data) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
@ -6,7 +6,6 @@ namespace PhpMyAdmin\Controllers\Table;
|
||||
|
||||
use PhpMyAdmin\Config;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Core;
|
||||
use PhpMyAdmin\CreateAddField;
|
||||
use PhpMyAdmin\Current;
|
||||
use PhpMyAdmin\Dbal\DatabaseInterface;
|
||||
@ -21,6 +20,7 @@ use PhpMyAdmin\MessageType;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Routing\Route;
|
||||
use PhpMyAdmin\Table\ColumnsDefinition;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Transformations;
|
||||
use PhpMyAdmin\Url;
|
||||
use PhpMyAdmin\UserPrivilegesFactory;
|
||||
@ -35,16 +35,17 @@ use function strlen;
|
||||
* Displays add field form and handles it.
|
||||
*/
|
||||
#[Route('/table/add-field', ['GET', 'POST'])]
|
||||
final class AddFieldController implements InvocableController
|
||||
final readonly class AddFieldController implements InvocableController
|
||||
{
|
||||
public function __construct(
|
||||
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,
|
||||
private ResponseRenderer $response,
|
||||
private Transformations $transformations,
|
||||
private Config $config,
|
||||
private DatabaseInterface $dbi,
|
||||
private ColumnsDefinition $columnsDefinition,
|
||||
private DbTableExists $dbTableExists,
|
||||
private UserPrivilegesFactory $userPrivilegesFactory,
|
||||
private Template $template,
|
||||
) {
|
||||
}
|
||||
|
||||
@ -92,7 +93,10 @@ final class AddFieldController implements InvocableController
|
||||
|
||||
// If there is a request for SQL previewing.
|
||||
if (isset($_POST['preview_sql'])) {
|
||||
Core::previewSQL(Current::$sqlQuery);
|
||||
$this->response->addJSON(
|
||||
'sql_data',
|
||||
$this->template->render('components/_preview_sql', ['query_data' => Current::$sqlQuery]),
|
||||
);
|
||||
|
||||
return $this->response->response();
|
||||
}
|
||||
|
||||
@ -6,7 +6,6 @@ namespace PhpMyAdmin\Controllers\Table;
|
||||
|
||||
use PhpMyAdmin\Config;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Core;
|
||||
use PhpMyAdmin\CreateAddField;
|
||||
use PhpMyAdmin\Current;
|
||||
use PhpMyAdmin\Dbal\DatabaseInterface;
|
||||
@ -16,6 +15,7 @@ use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Routing\Route;
|
||||
use PhpMyAdmin\Table\ColumnsDefinition;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Transformations;
|
||||
use PhpMyAdmin\Url;
|
||||
use PhpMyAdmin\UserPrivilegesFactory;
|
||||
@ -32,15 +32,16 @@ use function strlen;
|
||||
* Displays table create form and handles it.
|
||||
*/
|
||||
#[Route('/table/create', ['GET', 'POST'])]
|
||||
final class CreateController implements InvocableController
|
||||
final readonly class CreateController implements InvocableController
|
||||
{
|
||||
public function __construct(
|
||||
private readonly ResponseRenderer $response,
|
||||
private readonly Transformations $transformations,
|
||||
private readonly Config $config,
|
||||
private readonly DatabaseInterface $dbi,
|
||||
private readonly ColumnsDefinition $columnsDefinition,
|
||||
private readonly UserPrivilegesFactory $userPrivilegesFactory,
|
||||
private ResponseRenderer $response,
|
||||
private Transformations $transformations,
|
||||
private Config $config,
|
||||
private DatabaseInterface $dbi,
|
||||
private ColumnsDefinition $columnsDefinition,
|
||||
private UserPrivilegesFactory $userPrivilegesFactory,
|
||||
private Template $template,
|
||||
) {
|
||||
}
|
||||
|
||||
@ -93,7 +94,10 @@ final class CreateController implements InvocableController
|
||||
|
||||
// If there is a request for SQL previewing.
|
||||
if (isset($_POST['preview_sql'])) {
|
||||
Core::previewSQL(Current::$sqlQuery);
|
||||
$this->response->addJSON(
|
||||
'sql_data',
|
||||
$this->template->render('components/_preview_sql', ['query_data' => Current::$sqlQuery]),
|
||||
);
|
||||
|
||||
return $this->response->response();
|
||||
}
|
||||
|
||||
@ -104,7 +104,7 @@ final class IndexRenameController implements InvocableController
|
||||
if ($previewSql) {
|
||||
$this->response->addJSON(
|
||||
'sql_data',
|
||||
$this->template->render('preview_sql', ['query_data' => $sqlQuery]),
|
||||
$this->template->render('components/_preview_sql', ['query_data' => $sqlQuery]),
|
||||
);
|
||||
|
||||
return $this->response->response();
|
||||
|
||||
@ -118,7 +118,7 @@ final readonly class IndexesController implements InvocableController
|
||||
if ($previewSql) {
|
||||
$this->response->addJSON(
|
||||
'sql_data',
|
||||
$this->template->render('preview_sql', ['query_data' => $sqlQuery]),
|
||||
$this->template->render('components/_preview_sql', ['query_data' => $sqlQuery]),
|
||||
);
|
||||
|
||||
return $this->response->response();
|
||||
|
||||
@ -9,7 +9,6 @@ use PhpMyAdmin\ConfigStorage\Features\DisplayFeature;
|
||||
use PhpMyAdmin\ConfigStorage\Features\RelationFeature;
|
||||
use PhpMyAdmin\ConfigStorage\Relation;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Core;
|
||||
use PhpMyAdmin\Current;
|
||||
use PhpMyAdmin\Dbal\DatabaseInterface;
|
||||
use PhpMyAdmin\Html\Generator;
|
||||
@ -133,7 +132,10 @@ final readonly class RelationController implements InvocableController
|
||||
|
||||
// If there is a request for SQL previewing.
|
||||
if (isset($_POST['preview_sql'])) {
|
||||
Core::previewSQL($previewSqlData);
|
||||
$this->response->addJSON(
|
||||
'sql_data',
|
||||
$this->template->render('components/_preview_sql', ['query_data' => $previewSqlData]),
|
||||
);
|
||||
|
||||
return $this->response->response();
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ use PhpMyAdmin\Query\Generator as QueryGenerator;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Routing\Route;
|
||||
use PhpMyAdmin\Table\Table;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Transformations;
|
||||
use PhpMyAdmin\UrlParams;
|
||||
use PhpMyAdmin\Util;
|
||||
@ -43,18 +44,19 @@ use function sprintf;
|
||||
* Manipulation of table data like inserting, replacing and updating.
|
||||
*/
|
||||
#[Route('/table/replace', ['GET', 'POST'])]
|
||||
final class ReplaceController implements InvocableController
|
||||
final readonly class ReplaceController implements InvocableController
|
||||
{
|
||||
public function __construct(
|
||||
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,
|
||||
private ResponseRenderer $response,
|
||||
private InsertEdit $insertEdit,
|
||||
private Transformations $transformations,
|
||||
private Relation $relation,
|
||||
private DatabaseInterface $dbi,
|
||||
private SqlController $sqlController,
|
||||
private DatabaseSqlController $databaseSqlController,
|
||||
private ChangeController $changeController,
|
||||
private TableSqlController $tableSqlController,
|
||||
private Template $template,
|
||||
) {
|
||||
}
|
||||
|
||||
@ -297,7 +299,10 @@ final class ReplaceController implements InvocableController
|
||||
|
||||
// If there is a request for SQL previewing.
|
||||
if ($request->hasBodyParam('preview_sql')) {
|
||||
Core::previewSQL($query);
|
||||
$this->response->addJSON(
|
||||
'sql_data',
|
||||
$this->template->render('components/_preview_sql', ['query_data' => $query]),
|
||||
);
|
||||
|
||||
return $this->response->response();
|
||||
}
|
||||
|
||||
@ -63,7 +63,7 @@ final class MoveColumnsController implements InvocableController
|
||||
if ($previewSql) {
|
||||
$this->response->addJSON(
|
||||
'sql_data',
|
||||
$this->template->render('preview_sql', ['query_data' => $sqlQuery]),
|
||||
$this->template->render('components/_preview_sql', ['query_data' => $sqlQuery]),
|
||||
);
|
||||
|
||||
return $this->response->response();
|
||||
|
||||
@ -8,7 +8,6 @@ use PhpMyAdmin\Config;
|
||||
use PhpMyAdmin\ConfigStorage\Relation;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Controllers\Table\StructureController;
|
||||
use PhpMyAdmin\Core;
|
||||
use PhpMyAdmin\Current;
|
||||
use PhpMyAdmin\Dbal\DatabaseInterface;
|
||||
use PhpMyAdmin\Html\Generator;
|
||||
@ -21,6 +20,7 @@ use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Routing\Route;
|
||||
use PhpMyAdmin\Table\Table;
|
||||
use PhpMyAdmin\Table\UiProperty;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Transformations;
|
||||
use PhpMyAdmin\Url;
|
||||
use PhpMyAdmin\UserPrivileges;
|
||||
@ -49,6 +49,7 @@ final class SaveController implements InvocableController
|
||||
private readonly StructureController $structureController,
|
||||
private readonly UserPrivilegesFactory $userPrivilegesFactory,
|
||||
private readonly Config $config,
|
||||
private readonly Template $template,
|
||||
) {
|
||||
$this->tableObj = $this->dbi->getTable(Current::$database, Current::$table);
|
||||
}
|
||||
@ -154,7 +155,12 @@ final class SaveController implements InvocableController
|
||||
|
||||
// If there is a request for SQL previewing.
|
||||
if (isset($_POST['preview_sql'])) {
|
||||
Core::previewSQL($changes !== [] ? $sqlQuery : '');
|
||||
$this->response->addJSON(
|
||||
'sql_data',
|
||||
$this->template->render('components/_preview_sql', [
|
||||
'query_data' => $changes !== [] ? $sqlQuery : '',
|
||||
]),
|
||||
);
|
||||
|
||||
$this->response->callExit();
|
||||
}
|
||||
|
||||
23
src/Core.php
23
src/Core.php
@ -497,29 +497,6 @@ class Core
|
||||
return (string) preg_replace("@((\015\012)|(\015)|(\012))@", '<br>' . "\n", $buffer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays SQL query before executing.
|
||||
*
|
||||
* @param string[]|string $queryData Array containing queries or query itself
|
||||
*/
|
||||
public static function previewSQL(array|string $queryData): void
|
||||
{
|
||||
$retval = '<div class="preview_sql">';
|
||||
if ($queryData === '' || $queryData === []) {
|
||||
$retval .= __('No change');
|
||||
} elseif (is_array($queryData)) {
|
||||
foreach ($queryData as $query) {
|
||||
$retval .= Html\Generator::formatSql($query);
|
||||
}
|
||||
} else {
|
||||
$retval .= Html\Generator::formatSql($queryData);
|
||||
}
|
||||
|
||||
$retval .= '</div>';
|
||||
$response = ResponseRenderer::getInstance();
|
||||
$response->addJSON('sql_data', $retval);
|
||||
}
|
||||
|
||||
/**
|
||||
* recursively check if variable is empty
|
||||
*
|
||||
|
||||
@ -266,6 +266,7 @@ class AddFieldControllerTest extends AbstractTestCase
|
||||
new ColumnsDefinition($dbi, $relation, $transformations),
|
||||
new DbTableExists($dbi),
|
||||
new UserPrivilegesFactory($dbi),
|
||||
$template,
|
||||
))($request);
|
||||
|
||||
self::assertSame($expected, $response->getHTMLResult());
|
||||
|
||||
@ -280,6 +280,7 @@ class CreateControllerTest extends AbstractTestCase
|
||||
$dbi,
|
||||
new ColumnsDefinition($dbi, $relation, $transformations),
|
||||
new UserPrivilegesFactory($dbi),
|
||||
$template,
|
||||
))($request);
|
||||
|
||||
self::assertSame($expected, $response->getHTMLResult());
|
||||
|
||||
@ -91,8 +91,8 @@ class IndexRenameControllerTest extends AbstractTestCase
|
||||
// phpcs:disable Generic.Files.LineLength.TooLong
|
||||
$expected = <<<'HTML'
|
||||
<div class="preview_sql">
|
||||
<pre><code class="sql" dir="ltr">ALTER TABLE `test_db`.`test_table_index_rename` DROP INDEX `old_name`, ADD INDEX `new_name` (`name`) USING BTREE;</code></pre>
|
||||
</div>
|
||||
<pre><code class="sql" dir="ltr">ALTER TABLE `test_db`.`test_table_index_rename` DROP INDEX `old_name`, ADD INDEX `new_name` (`name`) USING BTREE;</code></pre>
|
||||
</div>
|
||||
|
||||
HTML;
|
||||
// phpcs:enable
|
||||
|
||||
@ -129,6 +129,7 @@ class ReplaceControllerTest extends AbstractTestCase
|
||||
self::createStub(DatabaseSqlController::class),
|
||||
self::createStub(ChangeController::class),
|
||||
self::createStub(TableSqlController::class),
|
||||
$template,
|
||||
);
|
||||
|
||||
UrlParams::$goto = 'index.php?route=/sql';
|
||||
@ -171,6 +172,7 @@ class ReplaceControllerTest extends AbstractTestCase
|
||||
self::createStub(DatabaseSqlController::class),
|
||||
self::createStub(ChangeController::class),
|
||||
self::createStub(TableSqlController::class),
|
||||
new Template(new Config()),
|
||||
);
|
||||
|
||||
/** @var array $result */
|
||||
|
||||
@ -12,6 +12,7 @@ use PhpMyAdmin\Current;
|
||||
use PhpMyAdmin\Dbal\DatabaseInterface;
|
||||
use PhpMyAdmin\Http\Factory\ResponseFactory;
|
||||
use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Tests\AbstractTestCase;
|
||||
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
|
||||
use PhpMyAdmin\Transformations;
|
||||
@ -94,7 +95,8 @@ class SaveControllerTest extends AbstractTestCase
|
||||
$mock->expects(self::once())->method('__invoke')->with($request)
|
||||
->willReturn(ResponseFactory::create()->createResponse());
|
||||
|
||||
$relation = new Relation($dbi);
|
||||
$config = new Config();
|
||||
$relation = new Relation($dbi, $config);
|
||||
(new SaveController(
|
||||
new ResponseRenderer(),
|
||||
$relation,
|
||||
@ -102,7 +104,8 @@ class SaveControllerTest extends AbstractTestCase
|
||||
$dbi,
|
||||
$mock,
|
||||
new UserPrivilegesFactory($dbi),
|
||||
new Config(),
|
||||
$config,
|
||||
new Template($config),
|
||||
))($request);
|
||||
|
||||
self::assertArrayNotHasKey('selected', $_POST);
|
||||
@ -118,7 +121,8 @@ class SaveControllerTest extends AbstractTestCase
|
||||
$class = new ReflectionClass(SaveController::class);
|
||||
$method = $class->getMethod('adjustColumnPrivileges');
|
||||
|
||||
$relation = new Relation($dbi);
|
||||
$config = new Config();
|
||||
$relation = new Relation($dbi, $config);
|
||||
$ctrl = new SaveController(
|
||||
new ResponseRenderer(),
|
||||
$relation,
|
||||
@ -126,7 +130,8 @@ class SaveControllerTest extends AbstractTestCase
|
||||
$dbi,
|
||||
self::createStub(StructureController::class),
|
||||
new UserPrivilegesFactory($dbi),
|
||||
new Config(),
|
||||
$config,
|
||||
new Template($config),
|
||||
);
|
||||
|
||||
self::assertFalse(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user