/** * @test * * @return void */ public function adminGetDbsReturnsAllDatabases() { /** @noinspection SqlResolve */ $databases = $this->subject->admin_query('SELECT SCHEMA_NAME FROM information_schema.SCHEMATA'); $result = $this->subject->admin_get_dbs(); $this->assertSame(count($result), $databases->num_rows); $i = 0; while ($database = $databases->fetch_assoc()) { $this->assertSame($database['SCHEMA_NAME'], $result[$i]); $i++; } }
/** * Returns list of available databases (with access-check based on username/password) * * @param bool $initialInstallation TRUE if first installation is in progress, FALSE if upgrading or usual access * @return array List of available databases */ protected function getDatabaseList($initialInstallation) { $this->initializeDatabaseConnection(); $databaseArray = $this->databaseConnection->admin_get_dbs(); // Remove mysql organizational tables from database list $reservedDatabaseNames = array('mysql', 'information_schema', 'performance_schema'); $allPossibleDatabases = array_diff($databaseArray, $reservedDatabaseNames); // If we are upgrading we show *all* databases the user has access to if ($initialInstallation === false) { return $allPossibleDatabases; } else { // In first installation we show all databases but disable not empty ones (with tables) $databases = array(); foreach ($allPossibleDatabases as $database) { $this->databaseConnection->setDatabaseName($database); $this->databaseConnection->sql_select_db(); $existingTables = $this->databaseConnection->admin_get_tables(); $databases[] = array('name' => $database, 'tables' => count($existingTables)); } return $databases; } }