/**
  * @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++;
     }
 }
Пример #2
0
 /**
  * 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;
     }
 }