Stop pmadb database detection when all features are disabled

Signed-off-by: William Desportes <williamdes@wdes.fr>
This commit is contained in:
William Desportes 2023-04-08 13:42:44 +02:00
parent 068fc4df74
commit 4cec0f1163
No known key found for this signature in database
GPG Key ID: 90A0EF1B8251A889
3 changed files with 178 additions and 1 deletions

View File

@ -163,6 +163,10 @@ class Relation
*/
private function fillRelationParamsWithTableNames(array $relationParams): ?array
{
if ($this->arePmadbTablesAllDisabled()) {
return null;
}
$tabQuery = 'SHOW TABLES FROM '
. Util::backquote($GLOBALS['cfg']['Server']['pmadb']);
$tableRes = $this->dbi->tryQueryAsControlUser($tabQuery);
@ -1580,6 +1584,10 @@ class Relation
*/
public function fixPmaTables($db, $create = true): void
{
if ($this->arePmadbTablesAllDisabled()) {
return;
}
$tablesToFeatures = [
'pma__bookmark' => 'bookmarktable',
'pma__relation' => 'relation',
@ -1729,6 +1737,32 @@ class Relation
];
}
/**
* Verifies that all pmadb features are disabled
*/
public function arePmadbTablesAllDisabled(): bool
{
return ($GLOBALS['cfg']['Server']['bookmarktable'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['relation'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['table_info'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['table_coords'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['column_info'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['pdf_pages'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['history'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['recent'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['favorite'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['table_uiprefs'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['tracking'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['userconfig'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['users'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['usergroups'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['navigationhiding'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['savedsearches'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['central_columns'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['designer_settings'] ?? null) === false
&& ($GLOBALS['cfg']['Server']['export_templates'] ?? null) === false;
}
/**
* Verifies if all the pmadb tables are defined
*/

View File

@ -189,7 +189,7 @@ class HomeController extends AbstractController
}
$relation = new Relation($this->dbi);
if ($server > 0) {
if ($server > 0 && $relation->arePmadbTablesAllDisabled() === false) {
$relationParameters = $relation->getRelationParameters();
if (! $relationParameters->hasAllFeatures() && $cfg['PmaNoRelation_DisableWarning'] == false) {
$messageText = __(

View File

@ -2049,6 +2049,149 @@ class RelationTest extends AbstractTestCase
$this->assertAllQueriesConsumed();
}
public function testArePmadbTablesDefinedAndArePmadbTablesAllDisabled(): void
{
parent::setGlobalDbi();
$GLOBALS['cfg']['Server']['bookmarktable'] = '';
$GLOBALS['cfg']['Server']['relation'] = '';
$GLOBALS['cfg']['Server']['table_info'] = '';
$GLOBALS['cfg']['Server']['table_coords'] = '';
$GLOBALS['cfg']['Server']['column_info'] = '';
$GLOBALS['cfg']['Server']['pdf_pages'] = '';
$GLOBALS['cfg']['Server']['history'] = '';
$GLOBALS['cfg']['Server']['recent'] = '';
$GLOBALS['cfg']['Server']['favorite'] = '';
$GLOBALS['cfg']['Server']['table_uiprefs'] = '';
$GLOBALS['cfg']['Server']['tracking'] = '';
$GLOBALS['cfg']['Server']['userconfig'] = '';
$GLOBALS['cfg']['Server']['users'] = '';
$GLOBALS['cfg']['Server']['usergroups'] = '';
$GLOBALS['cfg']['Server']['navigationhiding'] = '';
$GLOBALS['cfg']['Server']['savedsearches'] = '';
$GLOBALS['cfg']['Server']['central_columns'] = '';
$GLOBALS['cfg']['Server']['designer_settings'] = '';
$GLOBALS['cfg']['Server']['export_templates'] = '';
$this->assertFalse($this->relation->arePmadbTablesDefined());
$this->assertFalse($this->relation->arePmadbTablesAllDisabled());
$GLOBALS['cfg']['Server']['bookmarktable'] = '';
$GLOBALS['cfg']['Server']['relation'] = '';
$GLOBALS['cfg']['Server']['table_info'] = '';
$GLOBALS['cfg']['Server']['table_coords'] = '';
$GLOBALS['cfg']['Server']['column_info'] = '';
$GLOBALS['cfg']['Server']['pdf_pages'] = '';
$GLOBALS['cfg']['Server']['history'] = '';
$GLOBALS['cfg']['Server']['recent'] = '';
$GLOBALS['cfg']['Server']['favorite'] = 'pma__favorite_custom';
$GLOBALS['cfg']['Server']['table_uiprefs'] = '';
$GLOBALS['cfg']['Server']['tracking'] = false;
$GLOBALS['cfg']['Server']['userconfig'] = '';
$GLOBALS['cfg']['Server']['users'] = '';
$GLOBALS['cfg']['Server']['usergroups'] = '';
$GLOBALS['cfg']['Server']['navigationhiding'] = '';
$GLOBALS['cfg']['Server']['savedsearches'] = '';
$GLOBALS['cfg']['Server']['central_columns'] = '';
$GLOBALS['cfg']['Server']['designer_settings'] = '';
$GLOBALS['cfg']['Server']['export_templates'] = '';
$this->assertFalse($this->relation->arePmadbTablesDefined());
$this->assertFalse($this->relation->arePmadbTablesAllDisabled());
$GLOBALS['cfg']['Server']['bookmarktable'] = 'pma__bookmark';
$GLOBALS['cfg']['Server']['relation'] = 'pma__relation';
$GLOBALS['cfg']['Server']['table_info'] = 'pma__table_info';
$GLOBALS['cfg']['Server']['table_coords'] = 'pma__table_coords';
$GLOBALS['cfg']['Server']['pdf_pages'] = 'pma__pdf_pages';
$GLOBALS['cfg']['Server']['column_info'] = 'pma__column_info';
$GLOBALS['cfg']['Server']['history'] = 'pma__history';
$GLOBALS['cfg']['Server']['table_uiprefs'] = 'pma__table_uiprefs';
$GLOBALS['cfg']['Server']['tracking'] = 'pma__tracking';
$GLOBALS['cfg']['Server']['userconfig'] = 'pma__userconfig';
$GLOBALS['cfg']['Server']['recent'] = 'pma__recent';
$GLOBALS['cfg']['Server']['favorite'] = 'pma__favorite';
$GLOBALS['cfg']['Server']['users'] = 'pma__users';
$GLOBALS['cfg']['Server']['usergroups'] = 'pma__usergroups';
$GLOBALS['cfg']['Server']['navigationhiding'] = 'pma__navigationhiding';
$GLOBALS['cfg']['Server']['savedsearches'] = 'pma__savedsearches';
$GLOBALS['cfg']['Server']['central_columns'] = 'pma__central_columns';
$GLOBALS['cfg']['Server']['designer_settings'] = 'pma__designer_settings';
$GLOBALS['cfg']['Server']['export_templates'] = 'pma__export_templates';
$this->assertTrue($this->relation->arePmadbTablesDefined());
$this->assertFalse($this->relation->arePmadbTablesAllDisabled());
$GLOBALS['cfg']['Server']['bookmarktable'] = 'pma__bookmark';
$GLOBALS['cfg']['Server']['relation'] = 'pma__relation';
$GLOBALS['cfg']['Server']['table_info'] = 'pma__table_info';
$GLOBALS['cfg']['Server']['table_coords'] = 'pma__table_coords';
$GLOBALS['cfg']['Server']['pdf_pages'] = 'pma__pdf_pages';
$GLOBALS['cfg']['Server']['column_info'] = 'pma__column_info';
$GLOBALS['cfg']['Server']['history'] = 'custom_name';
$GLOBALS['cfg']['Server']['table_uiprefs'] = 'pma__table_uiprefs';
$GLOBALS['cfg']['Server']['tracking'] = 'pma__tracking';
$GLOBALS['cfg']['Server']['userconfig'] = 'pma__userconfig';
$GLOBALS['cfg']['Server']['recent'] = 'pma__recent';
$GLOBALS['cfg']['Server']['favorite'] = 'pma__favorite';
$GLOBALS['cfg']['Server']['users'] = 'pma__users';
$GLOBALS['cfg']['Server']['usergroups'] = 'pma__usergroups';
$GLOBALS['cfg']['Server']['navigationhiding'] = 'pma__navigationhiding';
$GLOBALS['cfg']['Server']['savedsearches'] = 'pma__savedsearches';
$GLOBALS['cfg']['Server']['central_columns'] = 'pma__central_columns';
$GLOBALS['cfg']['Server']['designer_settings'] = 'pma__designer_settings';
$GLOBALS['cfg']['Server']['export_templates'] = 'pma__export_templates';
$this->assertTrue($this->relation->arePmadbTablesDefined());
$this->assertFalse($this->relation->arePmadbTablesAllDisabled());
$GLOBALS['cfg']['Server']['bookmarktable'] = 'pma__bookmark';
$GLOBALS['cfg']['Server']['relation'] = 'pma__relation';
$GLOBALS['cfg']['Server']['table_info'] = 'pma__table_info';
$GLOBALS['cfg']['Server']['table_coords'] = 'pma__table_coords';
$GLOBALS['cfg']['Server']['pdf_pages'] = 'pma__pdf_pages';
$GLOBALS['cfg']['Server']['column_info'] = 'pma__column_info';
$GLOBALS['cfg']['Server']['history'] = 'pma__history';
$GLOBALS['cfg']['Server']['table_uiprefs'] = 'pma__table_uiprefs';
$GLOBALS['cfg']['Server']['tracking'] = 'pma__tracking';
$GLOBALS['cfg']['Server']['userconfig'] = '';
$GLOBALS['cfg']['Server']['recent'] = 'pma__recent';
$GLOBALS['cfg']['Server']['favorite'] = 'pma__favorite';
$GLOBALS['cfg']['Server']['users'] = 'pma__users';
$GLOBALS['cfg']['Server']['usergroups'] = 'pma__usergroups';
$GLOBALS['cfg']['Server']['navigationhiding'] = 'pma__navigationhiding';
$GLOBALS['cfg']['Server']['savedsearches'] = 'pma__savedsearches';
$GLOBALS['cfg']['Server']['central_columns'] = 'pma__central_columns';
$GLOBALS['cfg']['Server']['designer_settings'] = 'pma__designer_settings';
$GLOBALS['cfg']['Server']['export_templates'] = 'pma__export_templates';
$this->assertFalse($this->relation->arePmadbTablesDefined());
$this->assertFalse($this->relation->arePmadbTablesAllDisabled());
$GLOBALS['cfg']['Server']['bookmarktable'] = false; //'pma__bookmark';
$GLOBALS['cfg']['Server']['relation'] = false; //'pma__relation';
$GLOBALS['cfg']['Server']['table_info'] = false; //'pma__table_info';
$GLOBALS['cfg']['Server']['table_coords'] = false; //'pma__table_coords';
$GLOBALS['cfg']['Server']['pdf_pages'] = false; //'pma__pdf_pages';
$GLOBALS['cfg']['Server']['column_info'] = false; //'pma__column_info';
$GLOBALS['cfg']['Server']['history'] = false; //'pma__history';
$GLOBALS['cfg']['Server']['table_uiprefs'] = false; //'pma__table_uiprefs';
$GLOBALS['cfg']['Server']['tracking'] = false; //'pma__tracking';
$GLOBALS['cfg']['Server']['userconfig'] = false; //'pma__userconfig';
$GLOBALS['cfg']['Server']['recent'] = false; //'pma__recent';
$GLOBALS['cfg']['Server']['favorite'] = false; //'pma__favorite';
$GLOBALS['cfg']['Server']['users'] = false; //'pma__users';
$GLOBALS['cfg']['Server']['usergroups'] = false; //'pma__usergroups';
$GLOBALS['cfg']['Server']['navigationhiding'] = false; //'pma__navigationhiding';
$GLOBALS['cfg']['Server']['savedsearches'] = false; //'pma__savedsearches';
$GLOBALS['cfg']['Server']['central_columns'] = false; //'pma__central_columns';
$GLOBALS['cfg']['Server']['designer_settings'] = false; //'pma__designer_settings';
$GLOBALS['cfg']['Server']['export_templates'] = false; //'pma__export_templates';
$this->assertFalse($this->relation->arePmadbTablesDefined());
$this->assertTrue($this->relation->arePmadbTablesAllDisabled());
}
/**
* @param array<string, bool|string> $params
* @param string[] $queries