Skip to content

Commit

Permalink
Create a new page for Check Table
Browse files Browse the repository at this point in the history
Instead of only showing the query results.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
  • Loading branch information
MauricioFauth committed Aug 27, 2020
1 parent 94b3fea commit c112bfd
Show file tree
Hide file tree
Showing 11 changed files with 57 additions and 122 deletions.
Expand Up @@ -118,9 +118,7 @@ public function index(): void
$pmaThemeImage, // pmaThemeImage
null, // disp_query
null, // disp_message
null, // query_type
$sql_query, // sql_query
null, // selectedTables
null // complete_query
));
}
Expand Down
68 changes: 27 additions & 41 deletions libraries/classes/Controllers/Database/StructureController.php
Expand Up @@ -12,6 +12,7 @@
use PhpMyAdmin\Core;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\Html\Generator;
use PhpMyAdmin\Index;
use PhpMyAdmin\Message;
use PhpMyAdmin\Operations;
use PhpMyAdmin\RecentFavoriteTable;
Expand Down Expand Up @@ -1440,8 +1441,9 @@ public function emptyForm(): void

public function checkTable(): void
{
global $db, $goto, $pmaThemeImage;
global $db;

/** @var string[] $selected */
$selected = $_POST['selected_tbl'] ?? [];

if (empty($selected)) {
Expand All @@ -1451,43 +1453,35 @@ public function checkTable(): void
return;
}

$sql_query = '';
$selectedCount = count($selected);
$tables = Util::backquote($selected);
$query = 'CHECK TABLE ' . implode(', ', $tables) . ';';

for ($i = 0; $i < $selectedCount; $i++) {
$sql_query .= (empty($sql_query) ? 'CHECK TABLE ' : ', ')
. Util::backquote($selected[$i]);
}
$this->dbi->selectDb($db);
$rows = $this->dbi->fetchResult($query);

$sql = new Sql();
$this->response->addHTML($sql->executeQueryAndSendQueryResponse(
null,
false,
$db,
'',
null,
null,
null,
null,
null,
null,
$goto,
$pmaThemeImage,
null,
null,
'check_tbl',
$sql_query,
$selected,
null
));
$message = Generator::getMessage(
__('Your SQL query has been executed successfully.'),
$query,
'success'
);

if (empty($_POST['message'])) {
$_POST['message'] = Message::success();
}
$indexesProblems = '';
foreach ($selected as $table) {
$check = Index::findDuplicates($table, $db);

unset($_POST['submit_mult']);
if (empty($check)) {
continue;
}

$this->index();
$indexesProblems .= sprintf(__('Problems with indexes of table `%s`'), $table);
$indexesProblems .= $check;
}

$this->render('database/structure/check_table', [
'message' => $message,
'rows' => $rows,
'indexes_problems' => $indexesProblems,
]);
}

public function analyzeTable(): void
Expand Down Expand Up @@ -1526,9 +1520,7 @@ public function analyzeTable(): void
$pmaThemeImage,
null,
null,
'analyze_tbl',
$sqlQuery,
$selected,
null
));

Expand Down Expand Up @@ -1577,9 +1569,7 @@ public function checksumTable(): void
$pmaThemeImage,
null,
null,
'checksum_tbl',
$sql_query,
$selected,
null
));

Expand Down Expand Up @@ -1628,9 +1618,7 @@ public function optimizeTable(): void
$pmaThemeImage,
null,
null,
'optimize_tbl',
$sql_query,
$selected,
null
));

Expand Down Expand Up @@ -1679,9 +1667,7 @@ public function repairTable(): void
$pmaThemeImage,
null,
null,
'repair_tbl',
$sql_query,
$selected,
null
));

Expand Down
2 changes: 0 additions & 2 deletions libraries/classes/Controllers/ImportController.php
Expand Up @@ -812,9 +812,7 @@ public function index(): void
$pmaThemeImage, // pmaThemeImage
null, // disp_query
null, // disp_message
null, // query_type
$sql_query, // sql_query
null, // selectedTables
null // complete_query
);
}
Expand Down
4 changes: 1 addition & 3 deletions libraries/classes/Controllers/SqlController.php
Expand Up @@ -55,7 +55,7 @@ public function index(): void
{
global $cfg, $db, $display_query, $pmaThemeImage, $sql_query, $table, $message;
global $ajax_reload, $goto, $err_url, $find_real_end, $unlim_num_rows, $import_text, $disp_query;
global $extra_data, $message_to_show, $sql_data, $disp_message, $query_type, $selected, $complete_query;
global $extra_data, $message_to_show, $sql_data, $disp_message, $complete_query;
global $is_gotofile, $back, $table_from_sql;

$this->checkUserPrivileges->getPrivileges();
Expand Down Expand Up @@ -215,9 +215,7 @@ public function index(): void
$pmaThemeImage,
isset($disp_query) ? $display_query : null,
$disp_message ?? null,
$query_type ?? null,
$sql_query,
$selected ?? null,
$complete_query ?? null
));
}
Expand Down
2 changes: 0 additions & 2 deletions libraries/classes/Controllers/Table/DeleteController.php
Expand Up @@ -78,9 +78,7 @@ public function rows(): void
$pmaThemeImage,
null,
null,
null,
$sql_query,
null,
null
));
}
Expand Down
2 changes: 0 additions & 2 deletions libraries/classes/Controllers/Table/SearchController.php
Expand Up @@ -274,9 +274,7 @@ public function doSelectionAction()
$GLOBALS['pmaThemeImage'], // pmaThemeImage
null, // disp_query
null, // disp_message
null, // query_type
$sql_query, // sql_query
null, // selectedTables
null // complete_query
));
}
Expand Down
2 changes: 0 additions & 2 deletions libraries/classes/Controllers/Table/StructureController.php
Expand Up @@ -1074,9 +1074,7 @@ protected function displayTableBrowseForSelectedColumns($goto, $pmaThemeImage)
$pmaThemeImage, // pmaThemeImage
null, // disp_query
null, // disp_message
null, // query_type
$sql_query, // sql_query
null, // selectedTables
null // complete_query
)
);
Expand Down
2 changes: 0 additions & 2 deletions libraries/classes/Database/MultiTableQuery.php
Expand Up @@ -127,9 +127,7 @@ public static function displayResults($sqlQuery, $db, $pmaThemeImage): string
$pmaThemeImage, // pmaThemeImage
null, // disp_query
null, // disp_message
null, // query_type
$sqlQuery, // sql_query
null, // selectedTables
null // complete_query
);
}
Expand Down
65 changes: 0 additions & 65 deletions libraries/classes/Sql.php
Expand Up @@ -1472,38 +1472,6 @@ private function getMessageIfMissingColumnIndex($table, $database, $editable, $h
return $output;
}

/**
* Function to get html to display problems in indexes
*
* @param string|null $queryType query type
* @param array|null $selectedTables array of table names selected from the
* database structure page, for an action
* like check table, optimize table,
* analyze table or repair table
* @param string $database current database
*/
private function getHtmlForIndexesProblems(?string $queryType, ?array $selectedTables, string $database): string
{
// BEGIN INDEX CHECK See if indexes should be checked.
$output = '';
if (isset($queryType, $selectedTables) && $queryType === 'check_tbl' && is_array($selectedTables)) {
foreach ($selectedTables as $table) {
$check = Index::findDuplicates($table, $database);
if (empty($check)) {
continue;
}

$output .= sprintf(
__('Problems with indexes of table `%s`'),
$table
);
$output .= $check;
}
}

return $output;
}

/**
* Function to display results when the executed query returns non empty results
*
Expand All @@ -1520,12 +1488,6 @@ private function getHtmlForIndexesProblems(?string $queryType, ?array $selectedT
* @param string|null $disp_query display query
* @param Message|string|null $disp_message display message
* @param array|null $profiling_results profiling results
* @param string|null $query_type query type
* @param array|null $selectedTables array of table names selected
* from the database structure page, for
* an action like check table,
* optimize table, analyze table or
* repair table
* @param string $sql_query sql query
* @param string|null $complete_query complete sql query
*
Expand All @@ -1545,8 +1507,6 @@ private function getQueryResponseForResultsReturned(
?string $disp_query,
$disp_message,
?array $profiling_results,
?string $query_type,
$selectedTables,
$sql_query,
?string $complete_query
) {
Expand Down Expand Up @@ -1723,12 +1683,6 @@ private function getQueryResponseForResultsReturned(
$analyzed_sql_results
);

$indexesProblemsHtml = $this->getHtmlForIndexesProblems(
$query_type ?? null,
$selectedTables ?? null,
$db
);

$cfgBookmark = Bookmark::getParams($GLOBALS['cfg']['Server']['user']);
$bookmarkSupportHtml = '';
if (is_array($cfgBookmark)
Expand Down Expand Up @@ -1756,7 +1710,6 @@ private function getQueryResponseForResultsReturned(
'missing_unique_column_message' => $missingUniqueColumnMessage,
'bookmark_created_message' => $bookmarkCreatedMessage,
'table' => $tableHtml,
'indexes_problems' => $indexesProblemsHtml,
'bookmark_support' => $bookmarkSupportHtml,
]);
}
Expand All @@ -1778,12 +1731,7 @@ private function getQueryResponseForResultsReturned(
* @param string $pmaThemeImage uri of the PMA theme image
* @param string|null $disp_query display query
* @param Message|string|null $disp_message display message
* @param string|null $query_type query type
* @param string $sql_query sql query
* @param array|null $selectedTables array of table names selected from the
* database structure page, for an action
* like check table, optimize table,
* analyze table or repair table
* @param string|null $complete_query complete query
*/
public function executeQueryAndSendQueryResponse(
Expand All @@ -1801,9 +1749,7 @@ public function executeQueryAndSendQueryResponse(
$pmaThemeImage,
$disp_query,
$disp_message,
$query_type,
$sql_query,
$selectedTables,
$complete_query
): string {
if ($analyzed_sql_results == null) {
Expand Down Expand Up @@ -1834,9 +1780,7 @@ public function executeQueryAndSendQueryResponse(
$pmaThemeImage, // pmaThemeImage
$disp_query, // disp_query
$disp_message, // disp_message
$query_type, // query_type
$sql_query, // sql_query
$selectedTables, // selectedTables
$complete_query // complete_query
);
}
Expand All @@ -1858,12 +1802,7 @@ public function executeQueryAndSendQueryResponse(
* @param string $pmaThemeImage uri of the PMA theme image
* @param string|null $disp_query display query
* @param Message|string|null $disp_message display message
* @param string|null $query_type query type
* @param string $sql_query sql query
* @param array|null $selectedTables array of table names selected from the
* database structure page, for an action
* like check table, optimize table,
* analyze table or repair table
* @param string|null $complete_query complete query
*
* @return string html
Expand All @@ -1883,9 +1822,7 @@ public function executeQueryAndGetQueryResponse(
$pmaThemeImage,
?string $disp_query,
$disp_message,
?string $query_type,
$sql_query,
$selectedTables,
?string $complete_query
) {
// Handle disable/enable foreign key checks
Expand Down Expand Up @@ -1985,8 +1922,6 @@ public function executeQueryAndGetQueryResponse(
$disp_query ?? null,
$disp_message ?? null,
$profiling_results,
$query_type ?? null,
$selectedTables ?? null,
$sql_query,
$complete_query ?? null
);
Expand Down
29 changes: 29 additions & 0 deletions templates/database/structure/check_table.twig
@@ -0,0 +1,29 @@
<div class="container-fluid">
<h2>
{% trans 'Checking tables' %}
{{ show_mysql_docu('CHECK_TABLE') }}
</h2>

{{ message|raw }}

<table class="mt-3">
<thead>
<tr>
<th>{% trans 'Table' %}</th>
<th>{% trans 'Message type' %}</th>
<th>{% trans 'Message' %}</th>
</tr>
</thead>
<tbody>
{% for row in rows %}
<tr>
<td>{{ row.Table }}</td>
<td>{{ row.Msg_type|title }}</td>
<td>{{ row.Msg_text }}</td>
</tr>
{% endfor %}
</tbody>
</table>

{{ indexes_problems|raw }}
</div>
1 change: 0 additions & 1 deletion templates/sql/sql_query_results.twig
Expand Up @@ -5,6 +5,5 @@
{{ missing_unique_column_message|raw }}
{{ bookmark_created_message|raw }}
{{ table|raw }}
{{ indexes_problems|raw }}
{{ bookmark_support|raw }}
</div>

0 comments on commit c112bfd

Please sign in to comment.