original_string: public function createDatabaseObject()
      {
          $dbname = trim($this->getSubmitValue('dbname'));
          if (empty($dbname)) // disallow database object creation w/ no selected database
          {
              throw new Exception("No database name");
          }
  
          $adapter = $this->getSubmitValue('adapter');
          $port = Adapter::getDefaultPortForAdapter($adapter);
  
          $host = $this->getSubmitValue('host');
          $tables_prefix = $this->getSubmitValue('tables_prefix');
          
          $dbInfos = array(
              'host'          => (is_null($host)) ? $host : trim($host),
              'username'      => $this->getSubmitValue('username'),
              'password'      => $this->getSubmitValue('password'),
              'dbname'        => $dbname,
              'tables_prefix' => (is_null($tables_prefix)) ? $tables_prefix : trim($tables_prefix),
              'adapter'       => $adapter,
              'port'          => $port,
              'schema'        => Config::getInstance()->database['schema'],
              'type'          => $this->getSubmitValue('type')
          );
  
          if (($portIndex = strpos($dbInfos['host'], '/')) !== false) {
              // unix_socket=/path/sock.n
              $dbInfos['port'] = substr($dbInfos['host'], $portIndex);
              $dbInfos['host'] = '';
          } else if (($portIndex = strpos($dbInfos['host'], ':')) !== false) {
              // host:port
              $dbInfos['port'] = substr($dbInfos['host'], $portIndex + 1);
              $dbInfos['host'] = substr($dbInfos['host'], 0, $portIndex);
          }
  
          try {
              @Db::createDatabaseObject($dbInfos);
          } catch (Zend_Db_Adapter_Exception $e) {
              $db = Adapter::factory($adapter, $dbInfos, $connect = false);
  
              // database not found, we try to create  it
              if ($db->isErrNo($e, '1049')) {
                  $dbInfosConnectOnly = $dbInfos;
                  $dbInfosConnectOnly['dbname'] = null;
                  @Db::createDatabaseObject($dbInfosConnectOnly);
                  @DbHelper::createDatabase($dbInfos['dbname']);
  
                  // select the newly created database
                  @Db::createDatabaseObject($dbInfos);
              } else {
                  throw $e;
              }
          }
  
          return $dbInfos;
      }
code: public function createDatabaseObject()
      {
          $dbname = trim($this->getSubmitValue('dbname'));
          if (empty($dbname)) // disallow database object creation w/ no selected database
          {
              throw new Exception("No database name");
          }
  
          $adapter = $this->getSubmitValue('adapter');
          $port = Adapter::getDefaultPortForAdapter($adapter);
  
          $host = $this->getSubmitValue('host');
          $tables_prefix = $this->getSubmitValue('tables_prefix');
          
          $dbInfos = array(
              'host'          => (is_null($host)) ? $host : trim($host),
              'username'      => $this->getSubmitValue('username'),
              'password'      => $this->getSubmitValue('password'),
              'dbname'        => $dbname,
              'tables_prefix' => (is_null($tables_prefix)) ? $tables_prefix : trim($tables_prefix),
              'adapter'       => $adapter,
              'port'          => $port,
              'schema'        => Config::getInstance()->database['schema'],
              'type'          => $this->getSubmitValue('type')
          );
  
          if (($portIndex = strpos($dbInfos['host'], '/')) !== false) {
              // unix_socket=/path/sock.n
              $dbInfos['port'] = substr($dbInfos['host'], $portIndex);
              $dbInfos['host'] = '';
          } else if (($portIndex = strpos($dbInfos['host'], ':')) !== false) {
              // host:port
              $dbInfos['port'] = substr($dbInfos['host'], $portIndex + 1);
              $dbInfos['host'] = substr($dbInfos['host'], 0, $portIndex);
          }
  
          try {
              @Db::createDatabaseObject($dbInfos);
          } catch (Zend_Db_Adapter_Exception $e) {
              $db = Adapter::factory($adapter, $dbInfos, $connect = false);
  
              // database not found, we try to create  it
              if ($db->isErrNo($e, '1049')) {
                  $dbInfosConnectOnly = $dbInfos;
                  $dbInfosConnectOnly['dbname'] = null;
                  @Db::createDatabaseObject($dbInfosConnectOnly);
                  @DbHelper::createDatabase($dbInfos['dbname']);
  
                  // select the newly created database
                  @Db::createDatabaseObject($dbInfos);
              } else {
                  throw $e;
              }
          }
  
          return $dbInfos;
      }
code_tokens: public function createDatabaseObject ( ) { $ dbname = trim ( $ this -> getSubmitValue ( 'dbname' ) ) ; if ( empty ( $ dbname ) ) // disallow database object creation w/ no selected database { throw new Exception ( "No database name" ) ; } $ adapter = $ this -> getSubmitValue ( 'adapter' ) ; $ port = Adapter :: getDefaultPortForAdapter ( $ adapter ) ; $ host = $ this -> getSubmitValue ( 'host' ) ; $ tables_prefix = $ this -> getSubmitValue ( 'tables_prefix' ) ; $ dbInfos = array ( 'host' => ( is_null ( $ host ) ) ? $ host : trim ( $ host ) , 'username' => $ this -> getSubmitValue ( 'username' ) , 'password' => $ this -> getSubmitValue ( 'password' ) , 'dbname' => $ dbname , 'tables_prefix' => ( is_null ( $ tables_prefix ) ) ? $ tables_prefix : trim ( $ tables_prefix ) , 'adapter' => $ adapter , 'port' => $ port , 'schema' => Config :: getInstance ( ) -> database [ 'schema' ] , 'type' => $ this -> getSubmitValue ( 'type' ) ) ; if ( ( $ portIndex = strpos ( $ dbInfos [ 'host' ] , '/' ) ) !== false ) { // unix_socket=/path/sock.n $ dbInfos [ 'port' ] = substr ( $ dbInfos [ 'host' ] , $ portIndex ) ; $ dbInfos [ 'host' ] = '' ; } else if ( ( $ portIndex = strpos ( $ dbInfos [ 'host' ] , ':' ) ) !== false ) { // host:port $ dbInfos [ 'port' ] = substr ( $ dbInfos [ 'host' ] , $ portIndex + 1 ) ; $ dbInfos [ 'host' ] = substr ( $ dbInfos [ 'host' ] , 0 , $ portIndex ) ; } try { @ Db :: createDatabaseObject ( $ dbInfos ) ; } catch ( Zend_Db_Adapter_Exception $ e ) { $ db = Adapter :: factory ( $ adapter , $ dbInfos , $ connect = false ) ; // database not found, we try to create  it if ( $ db -> isErrNo ( $ e , '1049' ) ) { $ dbInfosConnectOnly = $ dbInfos ; $ dbInfosConnectOnly [ 'dbname' ] = null ; @ Db :: createDatabaseObject ( $ dbInfosConnectOnly ) ; @ DbHelper :: createDatabase ( $ dbInfos [ 'dbname' ] ) ; // select the newly created database @ Db :: createDatabaseObject ( $ dbInfos ) ; } else { throw $ e ; } } return $ dbInfos ; }
docstring: Creates database object based on form data.
  
  @throws Exception|Zend_Db_Adapter_Exception
  @return array The database connection info. Can be passed into Piwik::createDatabaseObject.
docstring_tokens: Creates database object based on form data .