/**
 * First start output buffering then start SESSION
 * Reads configuration and main-language file lang.php and creates
 * Database-Object $dbo
 *
 * @param string $json        Return JSON-Encoded answer
 * @param string $send_header If set to false headers are completely skipped
 * @return void
 */
function obstart($json = false, $send_header = true)
{
    global $dbo, $config, $databases, $dump, $lang;
    if ($config['ob_gzhandler']) {
        if (!@ob_start("ob_gzhandler")) {
            @ob_start();
        }
    }
    // if default config file doesn't exists, it is a new installation -> redirect to installation
    if (!$json && !file_exists('./work/config/mysqldumper.php')) {
        header("location: install.php");
        die;
        exit;
    }
    session_name('MySQLDumper');
    $res = session_start();
    if (false === $res) {
        die("Error starting session! Check server.");
    }
    if (isset($_SESSION['config_file'])) {
        $config['config_file'] = $_SESSION['config_file'];
    } else {
        $config['config_file'] = 'mysqldumper';
    }
    if ($send_header) {
        header('Pragma: no-cache');
        header('Cache-Control: no-cache, must-revalidate');
        // HTTP/1.1
        header('Expires: -1');
        // Datum in der Vergangenheit
        header('Cache-Control: no-store, no-cache, must-revalidate');
        header('Cache-Control: post-check=0, pre-check=0', false);
        header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
        if (!$json) {
            header('Content-Type: text/html; charset=UTF-8');
        } else {
            header('Content-type: application/x-json');
        }
    }
    // get config from configuration file if not set
    if (!isset($_SESSION['config'])) {
        getConfig($config['config_file']);
    } else {
        // otherwise get parameters from session
        $config = array_merge($config, $_SESSION['config']);
        if (isset($_SESSION['databases'])) {
            $databases = $_SESSION['databases'];
        }
        if (isset($_SESSION['dump'])) {
            $dump = $_SESSION['dump'];
        }
    }
    // special case -> configuration is set to a language that was deleted meanwhile
    if (!is_readable('./language/' . $config['language'] . '/lang.php')) {
        $config['language'] = 'en';
    }
    include './language/' . $config['language'] . '/lang.php';
    // create database object
    $dbo = MsdDbFactory::getAdapter($config['dbhost'], $config['dbuser'], $config['dbpass'], $config['dbport'], $config['dbsocket']);
    if (!isset($_SESSION['databases'])) {
        setDefaultConfig();
    }
    //echo $config['db_actual'];
    //    die();
    if (isset($config['db_actual']) && $config['db_actual'] > '') {
        $dbo->selectDb($config['db_actual']);
    } else {
        if (!isset($databases)) {
            // no config loaded -> SetDefault-Values
            setDefaultConfig();
        }
        // get first DB-Name and set as actual db
        $dbNames = array_keys($databases);
        $config['db_actual'] = $dbNames[0];
        $dbo->selectDb($config['db_actual']);
    }
    //$_SESSION['config'] = $config;
    //$_SESSION['databases'] = $databases;
}
 }
 $tpl->assign_vars(array('LANGUAGE' => $config['language'], 'ICON_SAVE' => $icon['small']['save']));
 if (isset($_POST['dbconnect'])) {
     // get inputs
     $config['dbhost'] = $_POST['dbhost'];
     $config['dbuser'] = $_POST['dbuser'];
     $config['dbpass'] = $_POST['dbpass'];
     $config['dbmanual'] = $_POST['dbmanual'];
     if ((int) $_POST['dbport'] > 0) {
         $config['dbport'] = (int) $_POST['dbport'];
     } else {
         $config['dbport'] = 3306;
     }
     $config['dbsocket'] = $_POST['dbsocket'];
     include './inc/classes/db/MsdDbFactory.php';
     $dbo = MsdDbFactory::getAdapter($config['dbhost'], $config['dbuser'], $config['dbpass'], $config['dbport'], $config['dbsocket']);
     $connectMsg = $dbo->dbConnect();
     if ($connectMsg === true) {
         if ($config['dbmanual'] > '') {
             $dbDetect = searchDatabases(1, $config['dbmanual']);
         } else {
             $dbDetect = searchDatabases(1);
         }
     } else {
         $tpl->assign_block_vars('CONNECTION_ERROR', array('MSG' => SQLError('', $connectMsg, true)));
         $dbDetect = false;
     }
     if (false !== $dbDetect) {
         $saveButton = str_replace('\'', '\\\'', $lang['L_SAVEANDCONTINUE']);
         $tpl->assign_block_vars('CONTINUE', array('SAVE_AND_CONTINUE' => $saveButton));
         $tpl->assign_block_vars('OK', array());
 /**
  * Disables keys for given table
  *
  * @param MsdDbFactory $dbo   Database object
  * @param string       $table Name of table
  *
  * @return bool
  */
 public static function disableKeys(MsdDbFactory $dbo, $table)
 {
     $query = '/*!40000 ALTER TABLE `' . $table . '` DISABLE KEYS */';
     return $dbo->query($query, MsdDbFactory::SIMPLE);
 }