diff --git a/db_tracking.php b/db_tracking.php index 92310e0837..acab99c0ac 100644 --- a/db_tracking.php +++ b/db_tracking.php @@ -107,46 +107,14 @@ if ($num_tables == 0 && count($data['ddlog']) == 0) { } // --------------------------------------------------------------------------- -$relation = new Relation(); -$cfgRelation = $relation->getRelationsParam(); +echo $tracking->getHtmlForDbTrackingTables( + $GLOBALS['db'], + $_REQUEST['db'], + $url_query, + $pmaThemeImage, + $text_dir +); -// Prepare statement to get HEAD version -$all_tables_query = ' SELECT table_name, MAX(version) as version FROM ' . - Util::backquote($cfgRelation['db']) . '.' . - Util::backquote($cfgRelation['tracking']) . - ' WHERE db_name = \'' . $GLOBALS['dbi']->escapeString($_REQUEST['db']) . - '\' ' . - ' GROUP BY table_name' . - ' ORDER BY table_name ASC'; - -$all_tables_result = $relation->queryAsControlUser($all_tables_query); - -// If a HEAD version exists -if (is_object($all_tables_result) - && $GLOBALS['dbi']->numRows($all_tables_result) > 0 -) { - echo $tracking->getHtmlForTrackedTables( - $GLOBALS['db'], - $all_tables_result, - $url_query, - $pmaThemeImage, - $text_dir, - $cfgRelation - ); -} - -$untracked_tables = $tracking->getUntrackedTables($GLOBALS['db']); - -// If untracked tables exist -if (count($untracked_tables) > 0) { - echo $tracking->getHtmlForUntrackedTables( - $GLOBALS['db'], - $untracked_tables, - $url_query, - $pmaThemeImage, - $text_dir - ); -} // If available print out database log if (count($data['ddlog']) > 0) { $log = ''; diff --git a/libraries/classes/Tracking.php b/libraries/classes/Tracking.php index 5c9d32cdc5..a7e369b199 100644 --- a/libraries/classes/Tracking.php +++ b/libraries/classes/Tracking.php @@ -1264,30 +1264,76 @@ class Tracking } /** - * Get HTML for untracked tables + * Get HTML for tracked and untracked tables * - * @param string $db current database - * @param array $untrackedTables untracked tables - * @param string $urlQuery url query string - * @param string $pmaThemeImage path to theme's image folder - * @param string $textDir text direction + * @param string $db current database + * @param array $requestDb $_REQUEST['db'] + * @param string $urlQuery url query string + * @param string $pmaThemeImage path to theme's image folder + * @param string $textDir text direction * * @return string HTML */ - public function getHtmlForUntrackedTables( - $db, - array $untrackedTables, - $urlQuery, - $pmaThemeImage, - $textDir + public function getHtmlForDbTrackingTables( + string $db, + string $requestDb, + string $urlQuery, + string $pmaThemeImage, + string $textDir ) { - return $this->template->render('database/tracking/untracked_tables', [ + $relation = new Relation(); + $cfgRelation = $relation->getRelationsParam(); + + // Prepare statement to get HEAD version + $allTablesQuery = ' SELECT table_name, MAX(version) as version FROM ' . + Util::backquote($cfgRelation['db']) . '.' . + Util::backquote($cfgRelation['tracking']) . + ' WHERE db_name = \'' . $GLOBALS['dbi']->escapeString($requestDb) . + '\' ' . + ' GROUP BY table_name' . + ' ORDER BY table_name ASC'; + + $allTablesResult = $relation->queryAsControlUser($allTablesQuery); + $untrackedTables = $this->getUntrackedTables($db); + + // If a HEAD version exists + $versions = []; + $headVersionExists = is_object($allTablesResult) + && $GLOBALS['dbi']->numRows($allTablesResult) > 0; + if ($headVersionExists) { + while ($oneResult = $GLOBALS['dbi']->fetchArray($allTablesResult)) { + list($tableName, $versionNumber) = $oneResult; + $tableQuery = ' SELECT * FROM ' . + Util::backquote($cfgRelation['db']) . '.' . + Util::backquote($cfgRelation['tracking']) . + ' WHERE `db_name` = \'' + . $GLOBALS['dbi']->escapeString($requestDb) + . '\' AND `table_name` = \'' + . $GLOBALS['dbi']->escapeString($tableName) + . '\' AND `version` = \'' . $versionNumber . '\''; + + $tableResult = $relation->queryAsControlUser($tableQuery); + $versionData = $GLOBALS['dbi']->fetchArray($tableResult); + $versionData['status_button'] = $this->getStatusButton( + $versionData, + $urlQuery + ); + $versions[] = $versionData; + } + } + + $html = $this->template->render('database/tracking/tables', [ 'db' => $db, - 'untracked_tables' => $untrackedTables, + 'head_version_exists' => $headVersionExists, + 'untracked_tables_exists' => count($untrackedTables) > 0, + 'versions' => $versions, 'url_query' => $urlQuery, - 'pma_theme_image' => $pmaThemeImage, 'text_dir' => $textDir, + 'untracked_tables' => $untrackedTables, + 'pma_theme_image' => $pmaThemeImage, ]); + + return $html; } /** @@ -1333,56 +1379,6 @@ class Tracking return $untracked_tables; } - /** - * Get tracked tables - * - * @param string $db current database - * @param object $allTablesResult result set of tracked tables - * @param string $urlQuery url query string - * @param string $pmaThemeImage path to theme's image folder - * @param string $textDir text direction - * @param array $cfgRelation configuration storage info - * - * @return string HTML - */ - public function getHtmlForTrackedTables( - $db, - $allTablesResult, - $urlQuery, - $pmaThemeImage, - $textDir, - array $cfgRelation - ) { - $relation = new Relation(); - $versions = []; - while ($oneResult = $GLOBALS['dbi']->fetchArray($allTablesResult)) { - list($tableName, $versionNumber) = $oneResult; - $tableQuery = ' SELECT * FROM ' . - Util::backquote($cfgRelation['db']) . '.' . - Util::backquote($cfgRelation['tracking']) . - ' WHERE `db_name` = \'' - . $GLOBALS['dbi']->escapeString($_REQUEST['db']) - . '\' AND `table_name` = \'' - . $GLOBALS['dbi']->escapeString($tableName) - . '\' AND `version` = \'' . $versionNumber . '\''; - - $tableResult = $relation->queryAsControlUser($tableQuery); - $versionData = $GLOBALS['dbi']->fetchArray($tableResult); - $versionData['status_button'] = $this->getStatusButton( - $versionData, - $urlQuery - ); - $versions[] = $versionData; - } - return $this->template->render('database/tracking/tracked_tables', [ - 'db' => $db, - 'versions' => $versions, - 'url_query' => $urlQuery, - 'text_dir' => $textDir, - 'pma_theme_image' => $pmaThemeImage, - ]); - } - /** * Get tracking status button * diff --git a/templates/database/tracking/tables.twig b/templates/database/tracking/tables.twig new file mode 100644 index 0000000000..b7aa92f9b2 --- /dev/null +++ b/templates/database/tracking/tables.twig @@ -0,0 +1,137 @@ +{# Tracked tables exists#} +{% if head_version_exists %} +