Merge pull request #17712 from kamil-tekiela/sql_autocomplete

Clean up autocomplete controller
This commit is contained in:
Maurício Meneghini Fauth 2022-09-07 13:56:43 -03:00 committed by GitHub
commit ec9af1bd65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 14 deletions

View File

@ -1321,7 +1321,7 @@ Functions.codeMirrorAutoCompleteOnInputRead = function (instance) {
data: params,
success: function (data) {
if (data.success) {
var tables = JSON.parse(data.tables);
var tables = data.tables;
sqlAutoCompleteDefaultTable = window.CommonParams.get('table');
sqlAutoComplete = [];
for (var table in tables) {

View File

@ -10,8 +10,6 @@ use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Template;
use function json_encode;
/**
* Table/Column autocomplete in SQL editors.
*/
@ -28,18 +26,17 @@ class SqlAutoCompleteController extends AbstractController
public function __invoke(ServerRequest $request): void
{
$GLOBALS['sql_autocomplete'] = true;
$sqlAutocomplete = [];
if ($GLOBALS['cfg']['EnableAutocompleteForTablesAndColumns']) {
$GLOBALS['db'] = $_POST['db'] ?? $GLOBALS['db'];
$GLOBALS['sql_autocomplete'] = [];
if ($GLOBALS['db']) {
$tableNames = $this->dbi->getTables($GLOBALS['db']);
$db = $request->getParam('db', $GLOBALS['db']);
if ($db) {
$tableNames = $this->dbi->getTables($db);
foreach ($tableNames as $tableName) {
$GLOBALS['sql_autocomplete'][$tableName] = $this->dbi->getColumns($GLOBALS['db'], $tableName);
$sqlAutocomplete[$tableName] = $this->dbi->getColumns($db, $tableName);
}
}
}
$this->response->addJSON(['tables' => json_encode($GLOBALS['sql_autocomplete'])]);
$this->response->addJSON(['tables' => $sqlAutocomplete]);
}
}

View File

@ -1025,6 +1025,16 @@ parameters:
count: 1
path: libraries/classes/Controllers/Database/OperationsController.php
-
message: "#^Parameter \\#1 \\$database of method PhpMyAdmin\\\\DatabaseInterface\\:\\:getColumns\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/SqlAutoCompleteController.php
-
message: "#^Parameter \\#1 \\$database of method PhpMyAdmin\\\\DatabaseInterface\\:\\:getTables\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/SqlAutoCompleteController.php
-
message: "#^Cannot access offset non\\-empty\\-string on mixed\\.$#"
count: 1

View File

@ -1373,13 +1373,12 @@
<InvalidArrayOffset occurrences="1">
<code>$GLOBALS['cfg']['EnableAutocompleteForTablesAndColumns']</code>
</InvalidArrayOffset>
<MixedArgument occurrences="3">
<code>$GLOBALS['db']</code>
<code>$GLOBALS['db']</code>
<MixedArgument occurrences="2">
<code>$db</code>
<code>$tableName</code>
</MixedArgument>
<MixedAssignment occurrences="2">
<code>$GLOBALS['db']</code>
<code>$db</code>
<code>$tableName</code>
</MixedAssignment>
</file>