/** * Displays step 3 - a form where the user can enter the installation settings * regarding the databases - login and password, names, prefixes, single * or multiple databases, tracking or not... */ function display_database_settings_form($installType, $dbHostForm, $dbUsernameForm, $dbPassForm, $dbPrefixForm, $enableTrackingForm, $singleDbForm, $dbNameForm, $dbStatsForm, $dbScormForm, $dbUserForm) { if ($installType == 'update') { global $_configuration, $update_from_version_6; if (in_array($_POST['old_version'], $update_from_version_6)) { $dbHostForm = get_config_param('dbHost'); $dbUsernameForm = get_config_param('dbLogin'); $dbPassForm = get_config_param('dbPass'); $dbPrefixForm = get_config_param('dbNamePrefix'); $enableTrackingForm = get_config_param('is_trackingEnabled'); $singleDbForm = get_config_param('singleDbEnabled'); $dbHostForm = get_config_param('mainDbName'); $dbStatsForm = get_config_param('statsDbName'); $dbScormForm = get_config_param('scormDbName'); $dbUserForm = get_config_param('user_personal_database'); $dbScormExists = true; } else { $dbHostForm = $_configuration['db_host']; $dbUsernameForm = $_configuration['db_user']; $dbPassForm = $_configuration['db_password']; $dbPrefixForm = $_configuration['db_prefix']; $enableTrackingForm = $_configuration['tracking_enabled']; $singleDbForm = $_configuration['single_database']; $dbNameForm = $_configuration['main_database']; $dbStatsForm = $_configuration['statistics_database']; $dbScormForm = $_configuration['scorm_database']; $dbUserForm = $_configuration['user_personal_database']; $dbScormExists = true; } if (empty($dbScormForm)) { if ($singleDbForm) { $dbScormForm = $dbNameForm; } else { $dbScormForm = $dbPrefixForm.'scorm'; $dbScormExists = false; } } if (empty($dbUserForm)) { $dbUserForm = $singleDbForm ? $dbNameForm : $dbPrefixForm.'chamilo_user'; } echo '<div class="RequirementHeading"><h2>' . display_step_sequence() .get_lang('DBSetting') . '</h2></div>'; echo '<div class="RequirementContent">'; echo get_lang('DBSettingUpgradeIntro'); echo '</div>'; } else { if (empty($dbPrefixForm)) { //make sure there is a default value for db prefix $dbPrefixForm = ''; } echo '<div class="RequirementHeading"><h2>' . display_step_sequence() .get_lang('DBSetting') . '</h2></div>'; echo '<div class="RequirementContent">'; echo get_lang('DBSettingIntro'); echo '</div>'; } ?> </td> </tr> <tr> <td> <table class="data_table_no_border"> <tr> <td width="40%"><?php echo get_lang('DBHost'); ?> </td> <?php if ($installType == 'update'): ?> <td width="30%"><input type="hidden" name="dbHostForm" value="<?php echo htmlentities($dbHostForm); ?>" /><?php echo $dbHostForm; ?></td> <td width="30%"> </td> <?php else: ?> <td width="30%"><input type="text" size="25" maxlength="50" name="dbHostForm" value="<?php echo htmlentities($dbHostForm); ?>" /></td> <td width="30%"><?php echo get_lang('EG').' localhost'; ?></td> <?php endif; ?> </tr> <tr> <?php //database user username $example_login = get_lang('EG').' root'; display_database_parameter($installType, get_lang('DBLogin'), 'dbUsernameForm', $dbUsernameForm, $example_login); //database user password $example_password = get_lang('EG').' '.api_generate_password(); display_database_parameter($installType, get_lang('DBPassword'), 'dbPassForm', $dbPassForm, $example_password); echo '<input type="hidden" name="enableTrackingForm" value="1" />'; $style = ''; if ($installType == INSTALL_TYPE_UPDATE) { $style = ''; } //Database Name fix replace weird chars if ($installType != INSTALL_TYPE_UPDATE) { $dbNameForm = str_replace(array('-','*', '$', ' ', '.'), '', $dbNameForm); $dbNameForm = replace_dangerous_char($dbNameForm); } display_database_parameter($installType, get_lang('MainDB'), 'dbNameForm', $dbNameForm, ' ', null, 'id="optional_param1" '.$style); //Only for updates we show this options if ($installType == INSTALL_TYPE_UPDATE) { display_database_parameter($installType, get_lang('StatDB'), 'dbStatsForm', $dbStatsForm, ' ', null, 'id="optional_param2" '.$style); if ($installType == INSTALL_TYPE_UPDATE && in_array($_POST['old_version'], $update_from_version_6)) { display_database_parameter($installType, get_lang('ScormDB'), 'dbScormForm', $dbScormForm, ' ', null, 'id="optional_param3" '.$style); } display_database_parameter($installType, get_lang('UserDB'), 'dbUserForm', $dbUserForm, ' ', null, 'id="optional_param4" '.$style); } ?> <tr> <td></td> <td> <button type="submit" class="btn" name="step3" value="<?php echo get_lang('CheckDatabaseConnection'); ?>" > <?php echo get_lang('CheckDatabaseConnection'); ?></button> </td> </tr> <tr> <td> <?php $dbConnect = test_db_connect($dbHostForm, $dbUsernameForm, $dbPassForm, $singleDbForm, $dbPrefixForm, $dbNameForm); $database_exists_text = ''; if (database_exists($dbNameForm)) { $database_exists_text = '<div class="warning-message">'.get_lang('ADatabaseWithTheSameNameAlreadyExists').'</div>'; } else { if ($dbConnect == -1) { $database_exists_text = '<div class="warning-message">'.sprintf(get_lang('UserXCantHaveAccessInTheDatabaseX'), $dbUsernameForm, $dbNameForm).'</div>'; } else { //Try to create the database $user_can_create_databases = false; $multipleDbCheck = @Database::query("CREATE DATABASE ".mysql_real_escape_string($dbNameForm)); if ($multipleDbCheck !== false) { $multipleDbCheck = @Database::query("DROP DATABASE IF EXISTS ".mysql_real_escape_string($dbNameForm)); $user_can_create_databases = true; } if ($user_can_create_databases) { $database_exists_text = '<div class="normal-message">'.sprintf(get_lang('DatabaseXWillBeCreated'), $dbNameForm, $dbUsernameForm).'</div>'; } else { $dbConnect = 0; $database_exists_text = '<div class="warning-message">'.sprintf(get_lang('DatabaseXCantBeCreatedUserXDoestHaveEnoughPermissions'), $dbNameForm, $dbUsernameForm).'</div>'; } } } if ($dbConnect == 1): ?> <td colspan="2"> <?php echo $database_exists_text ?> <div id="db_status" class="confirmation-message"> Database host: <strong><?php echo Database::get_host_info(); ?></strong><br /> Database server version: <strong><?php echo Database::get_server_info(); ?></strong><br /> Database client version: <strong><?php echo Database::get_client_info(); ?></strong><br /> Database protocol version: <strong><?php echo Database::get_proto_info(); ?></strong> <div style="clear:both;"></div> </div> </td> <?php else: ?> <td colspan="2"> <?php echo $database_exists_text ?> <div id="db_status" style="float:left;" class="error-message"> <div style="float:left;"> <strong><?php echo get_lang('FailedConectionDatabase'); ?></strong><br /> <strong>Database error: <?php echo Database::errno(); ?></strong><br /> <?php echo Database::error().'<br />'; ?> </div> </div> </td> <?php endif; ?> </tr> <tr> <td> <button type="submit" name="step2" class="back" value="< <?php echo get_lang('Previous'); ?>" ><?php echo get_lang('Previous'); ?></button> </td> <td> </td> <td align="right"> <input type="hidden" name="is_executable" id="is_executable" value="-" /> <?php if ($dbConnect == 1) { ?> <button type="submit" class="btn next" name="step4" value="<?php echo get_lang('Next'); ?> >" /><?php echo get_lang('Next'); ?></button> <?php } else { ?> <button disabled="disabled" type="submit" class="btn next disabled" name="step4" value="<?php echo get_lang('Next'); ?> >" /><?php echo get_lang('Next'); ?></button> <?php } ?> </td> </tr> </table> <?php }
/** * @param $db_host * @param $db_port * @param $db_user * @param $db_password * @return string */ public function dbTest($db_host, $db_port, $db_user, $db_password) { if (test_db_connect($db_host . ":" . $db_port, $db_user, $db_password)) { return 'ok'; } else { return "数据库服务器或登录密码无效,\n\n无法连接数据库,请重新设定!"; } }