/**
  * Funkce pro připravení parametrů nového datového zdroje pro daného uživatele...
  * @param User $user
  * @param string $dbType
  * @throws BadRequestException
  * @throws \Exception
  * @throws \Nette\Application\ApplicationException
  * @return Datasource
  */
 public function prepareNewDatasourceForUser(User $user, $dbType, $ignoreCheck = false)
 {
     $datasource = new Datasource();
     if (!in_array($dbType, $this->databasesFacade->getDatabaseTypes()) || !isset($this->databasesConfig[$dbType])) {
         throw new BadRequestException('Unsupported type of database!', 500);
     }
     $databaseConfig = $this->databasesConfig[$dbType];
     $datasource->type = $dbType;
     $datasource->user = $user;
     $datasource->dbName = str_replace('*', $user->userId, $databaseConfig['_database']);
     $datasource->dbUsername = str_replace('*', $user->userId, $databaseConfig['_username']);
     if (isset($databaseConfig['_password']) && !$databaseConfig['_password']) {
         $datasource->setDbPassword('');
     } else {
         $datasource->setDbPassword($this->getUserDbPassword($user));
     }
     $datasource->dbServer = $databaseConfig['server'];
     if (!empty($databaseConfig['port'])) {
         $datasource->dbPort = $databaseConfig['port'];
     }
     $dbConnection = $datasource->getDbConnection();
     if ($dbType == DatabasesFacade::DB_TYPE_DBS_UNLIMITED) {
         return $datasource;
     }
     if ($ignoreCheck) {
         //FIXME
         return $datasource;
     }
     //TODO tato kontrola by neměla být prováděna při každém requestu...
     try {
         $this->databasesFacade->openDatabase($dbConnection);
     } catch (\Exception $e) {
         //pokud došlo k chybě, pokusíme se vygenerovat uživatelský účet a databázi
         $this->databasesFacade->openDatabase($this->getAdminDbConnection($dbType));
         if (!$this->databasesFacade->createUserDatabase($dbConnection)) {
             throw new \Exception('Database creation failed!');
         }
     }
     return $datasource;
 }