otherwise fall back to english if (!is_readable('./language/' . $config['language'] . '/lang.php')) { $config['language'] = 'en'; } if (is_readable('./language/' . $config['language'] . '/lang.php')) { include ('./language/' . $config['language'] . '/lang.php'); } else { include ('./language/en/lang.php'); } include ('./inc/define_icons.php'); //Variabeln $phase = (isset($_POST['phase'])) ? intval($_POST['phase']) : 0; if (isset($_GET['phase'])) $phase = intval($_GET['phase']); header('content-type: text/html; charset=utf-8'); $tpl = new MSDTemplate(); $tpl->set_filenames(array('show' => 'tpl/install/header.tpl')); $tpl->assign_vars( array( 'LANGUAGE' => $config['language'] != 'de_du' ? $config['language'] : 'de', 'ICON_OK' => $icon['ok'], 'ICON_NOT_OK' => $icon['not_ok'], 'MSD_VERSION' => MSD_VERSION . ' (' . MSD_VERSION_SUFFIX . ')' ) ); $tpl->pparse('show'); // Step 1: select language if ($phase == 0) { // clean vars if they exist from previous runs if (isset($_SESSION['config'])) unset($_SESSION['config']); if (isset($_SESSION['databases'])) unset($_SESSION['databases']); // try to chmod Perl scripts correctly @chmod('./msd_cron/crondump.pl', 0755); @chmod('./msd_cron/perltest.pl', 0755); @chmod('./msd_cron/simpletest.pl', 0755); @chmod('./languages', 0777); $downloadPossible = true; // if function fsockopen is disabled by server configuration we can't connect to the download server if (!(false === strpos($config['disabled'], 'fsockopen'))) $downloadPossible = false; // todo-list of files to download if language pack should be installed. // if it exists from last run -> delete it if (isset($_SESSION['get_language'])) unset($_SESSION['get_language']); $tpl = new MSDTemplate(); $tpl->set_filenames(array('show' => 'tpl/install/select_language.tpl')); $tpl->assign_vars( array( 'SESSION_ID' => session_id(), 'MSD_VERSION' => MSD_VERSION, 'LANGUAGE' => $config['language'], 'ICON_OK' => $icon['ok'], 'ICON_NOT_OK' => $icon['not_ok'], 'ICON_DOWNLOAD' => $icon['download'], 'ICON_SAVE' => $icon['small']['save'] ) ); if (!$downloadPossible) $tpl->assign_block_vars('FSOCKOPEN_DISABLED', array()); // build list of downloadable languages $languages = array(); foreach ($lang as $index => $val) { if ($index != 'languages' && substr($index, 0, 2) != 'L_') $languages[$index] = $val; } ksort($languages); //sort list alphabetically ascending $i = 1; foreach ($languages as $key => $val) { // walk through lang-files to get the language var for the button if (is_readable('./language/' . $key . '/lang.php')) { // language is installed include ('./language/' . $key . '/lang.php'); $tpl->assign_block_vars( 'LANG', array( 'NR' => $i, 'ROWCLASS' => $i % 2 ? 'dbrow' : 'dbrow1', 'LANG' => $key, 'NAME' => $lang[$key], 'LANG_DOWNLOAD_LANGUAGE_PACK' => $lang['L_UPDATE'], 'DOWNLOAD_DISABLED' => Html::getDisabled($downloadPossible, false), 'INSTALL_BUTTON_VALUE' => str_replace('\'', '\\\'', $lang['L_SAVEANDCONTINUE']) ) ); $tpl->assign_block_vars('LANG.INSTALLED', array('LANG_INSTALLED' => $lang['L_INSTALLED'])); } else { // language is not installed $tpl->assign_block_vars( 'LANG', array( 'NR' => $i, 'ROWCLASS' => $i % 2 ? 'dbrow' : 'dbrow1', 'LANG' => $key, 'NAME' => $lang[$key], 'LANG_DOWNLOAD_LANGUAGE_PACK' => $lang['L_DOWNLOAD_FILE'], 'RADIO_DISABLED' => Html::getDisabled(true, true), 'LANG_DOWNLOAD_LANGUAGE_PACK' => 'Download', 'DOWNLOAD_DISABLED' => Html::getDisabled($downloadPossible, false), 'INSTALL_BUTTON_VALUE' => 'Install' ) ); $tpl->assign_block_vars('LANG.NOT_INSTALLED', array('LANG_NOT_INSTALLED' => 'Not installed')); $tpl->assign_block_vars('SET_OPACITY', array('NR' => $i)); } $i++; } // reload language vars of selected language for installation screen. // Otherwise buttons would be set to the last loaded language in the list // This is needed because language vars are assigned dynamically in template class when calling pparse if (is_readable('./language/' . $config['language'] . '/lang.php')) { include ('./language/' . $config['language'] . '/lang.php'); } else { include ('./language/en/lang.php'); } $tpl->pparse('show'); } // Step 2: check directories and their rights if ($phase == 1) { // check directories $tpl = new MSDTemplate(); $tpl->set_filenames(array('show' => 'tpl/install/check_directories.tpl')); $tpl->assign_vars(array('LANGUAGE' => $config['language'], 'SESSION_ID' => session_id())); $checkDirs = ARRAY('work/', 'work/config/', 'work/log/', 'work/backup/'); $isWritable = array(); if (1 == $config['safe_mode']) $tpl->assign_block_vars('SAFE_MODE_ON', array()); $i = 0; foreach ($checkDirs as $dir) { clearstatcache(); if (!is_dir($dir)) @mkdir($dir); clearstatcache(); $check = file_exists($dir); $isWritable[$i] = File::isWritable($dir, 0777); $tpl->assign_vars( array( 'LANGUAGE' => $config['language'], 'ICON_OK' => $icon['ok'] ) ); $tpl->assign_block_vars( 'DIR', array( 'NAME' => $config['paths']['root'] . $dir, 'CHMOD' => File::getChmod($dir), 'ICON_EXISTS' => $check === true ? $icon['ok'] : $icon['not_ok'] . ' ' . $check, 'ICON_IS_WRITABLE' => $isWritable[$i] ? $icon['ok'] : $icon['not_ok'] ) ); $i++; } if (in_array(false, $isWritable)) { $tpl->pparse('show'); // something is wrong with the dirs -> show info } else { $phase = 2; // everything ok -> continue with db-param-input } } // Step 3: database parameters if ($phase == 2) { $tpl = new MSDTemplate(); $tpl->set_filenames(array('show' => 'tpl/install/db_parameter.tpl')); // default values if (!isset($config['dbhost'])) $config['dbhost'] = 'localhost'; if (!isset($config['dbuser'])) $config['dbuser'] = 'root'; if (!isset($config['dbpass'])) $config['dbpass'] = ''; if (!isset($config['dbport'])) $config['dbport'] = ''; if (!isset($config['dbsocket'])) $config['dbsocket'] = ''; if (!isset($config['dbmanual'])) $config['dbmanual'] = ''; $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()); $tpl->assign_block_vars('CONNECTION_OK', array('RESULT' => $dbDetect)); if (count($databases) == 0) $tpl->assign_block_vars('CONNECTION_OK_BUT_NO_DB', array()); } } $tpl->assign_vars( array( 'SESSION_ID' => session_id(), 'DB_HOST' => $config['dbhost'], 'DB_USER' => $config['dbuser'], 'DB_PASS' => $config['dbpass'], 'DB_MANUAL' => $config['dbmanual'], 'ICON_OK' => $icon['ok']) ); $tpl->pparse('show'); } $_SESSION['config'] = $config; $_SESSION['databases'] = $databases; // Step 4: normally not visible - save checked config-params and redirect to // start page of MySQLDumper if ($phase == 3) { // save configuration with checked db-parameters $configSaved = saveConfig(); if (!$configSaved) { // Ouch, although we checked everything before we now couldn't save // the config -> should never happen echo '
MySQLDumper - ' . $lang['L_CONFBASIC'] . '
'; echo '

Fatal Error: couldn\'t save configuration!!

'; } else { // Everything is done - redirect to start screen of MySQLDumper echo ''; } } ?>