grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026dbType}:{$db->variant}"); if (trim($_SESSION['setup_db_database_name']) == '') { $errors['ERR_DB_NAME'] = $mod_strings['ERR_DB_NAME']; installLog("ERROR:: {$errors['ERR_DB_NAME']}"); } if (!$db->isDatabaseNameValid($_SESSION['setup_db_database_name'])) { $errIdx = 'ERR_DB_' . strtoupper($_SESSION['setup_db_type']) . '_DB_NAME_INVALID'; $errors[$errIdx] = $mod_strings[$errIdx]; installLog("ERROR:: {$errors[$errIdx]}"); } if ($_SESSION['setup_db_type'] != 'oci8') { // Oracle doesn't need host name, others do if (trim($_SESSION['setup_db_host_name']) == '') { $errors['ERR_DB_HOSTNAME'] = $mod_strings['ERR_DB_HOSTNAME']; installLog("ERROR:: {$errors['ERR_DB_HOSTNAME']}"); } } //check to see that password and retype are same, if needed if (!empty($_SESSION['dbUSRData']) && ($_SESSION['dbUSRData']=='create' || $_SESSION['dbUSRData']=='provide')) { if ($_SESSION['setup_db_sugarsales_password'] != $_SESSION['setup_db_sugarsales_password_retype']) { $errors['ERR_DBCONF_PASSWORD_MISMATCH'] = $mod_strings['ERR_DBCONF_PASSWORD_MISMATCH']; installLog("ERROR:: {$errors['ERR_DBCONF_PASSWORD_MISMATCH']}"); } } // bail if the basic info isn't valid if (count($errors) > 0) { installLog("Basic form info is INVALID, exit Process."); return printErrors($errors); } else { installLog("Basic form info is valid, continuing Process."); } $dbconfig = array( "db_host_name" => $_SESSION['setup_db_host_name'], "db_host_instance" => isset($_SESSION['setup_db_host_instance']) ? $_SESSION['setup_db_host_instance'] : null, ); if (!empty($_SESSION['setup_db_port_num'])) { $dbconfig["db_port"] = $_SESSION['setup_db_port_num']; } else { $_SESSION['setup_db_port_num'] = ''; } // Needed for database implementation that do not allow connections to the server directly // and that typically require the manual setup of a database instances such as DB2 if (empty($_SESSION['setup_db_create_database'])) { $dbconfig["db_name"] = $_SESSION['setup_db_database_name']; } // check database name validation in different database types (default is mssql) switch (strtolower($db->dbType)) { case 'mysql': if (preg_match("![/\\.]+!i", $_SESSION['setup_db_database_name'])) { $errors['ERR_DB_MYSQL_DB_NAME'] = $mod_strings['ERR_DB_MYSQL_DB_NAME_INVALID']; installLog("ERROR:: {$errors['ERR_DB_MYSQL_DB_NAME']}"); } break; case 'mssql': default: // Bug 29855 - Check to see if given db name is valid if (preg_match("![\"'*/\\?:<>-]+!i", $_SESSION['setup_db_database_name'])) { $errors['ERR_DB_MSSQL_DB_NAME'] = $mod_strings['ERR_DB_MSSQL_DB_NAME_INVALID']; installLog("ERROR:: {$errors['ERR_DB_MSSQL_DB_NAME']}"); } break; } // test the account that will talk to the db if we're not creating it if ($_SESSION['setup_db_sugarsales_user'] != '' && !$_SESSION['setup_db_create_sugarsales_user']) { $dbconfig["db_user_name"] = $_SESSION['setup_db_sugarsales_user']; $dbconfig["db_password"] = $_SESSION['setup_db_sugarsales_password']; installLog("Testing user account..."); // try connecting to the DB if (!$db->connect($dbconfig, false)) { $error = $db->lastError(); $errors['ERR_DB_LOGIN_FAILURE'] = $mod_strings['ERR_DB_LOGIN_FAILURE']; installLog("ERROR:: {$errors['ERR_DB_LOGIN_FAILURE']}"); } else { installLog("Connection made using host: {$_SESSION['setup_db_host_name']}, usr: {$_SESSION['setup_db_sugarsales_user']}"); $db->disconnect(); } } // privileged account tests else { if (empty($_SESSION['setup_db_admin_user_name'])) { $errors['ERR_DB_PRIV_USER'] = $mod_strings['ERR_DB_PRIV_USER']; installLog("ERROR:: {$errors['ERR_DB_PRIV_USER']}"); } else { installLog("Testing priviliged account..."); $dbconfig["db_user_name"] = $_SESSION['setup_db_admin_user_name']; $dbconfig["db_password"] = $_SESSION['setup_db_admin_password']; if (!$db->connect($dbconfig, false)) { $error = $db->lastError(); $errors['ERR_DB_LOGIN_FAILURE'] = $mod_strings['ERR_DB_LOGIN_FAILURE']; installLog("ERROR:: {$errors['ERR_DB_LOGIN_FAILURE']}"); } else { installLog("Connection made using host: {$_SESSION['setup_db_host_name']}, usr: {$_SESSION['setup_db_sugarsales_user']}"); $db_selected = $db->dbExists($_SESSION['setup_db_database_name']); if ($silent==false && $db_selected && $_SESSION['setup_db_create_database'] && empty($_SESSION['setup_db_drop_tables'])) { // DB exists but user didn't agree to overwrite it $errStr = $mod_strings['ERR_DB_EXISTS_PROCEED']; $errors['ERR_DB_EXISTS_PROCEED'] = $errStr; installLog("ERROR:: {$errors['ERR_DB_EXISTS_PROCEED']}"); } elseif ($silent==false && !$db_selected && !$_SESSION['setup_db_create_database']) { // DB does not exist but user did not allow to create it $errors['ERR_DB_EXISTS_NOT'] = $mod_strings['ERR_DB_EXISTS_NOT']; installLog("ERROR:: {$errors['ERR_DB_EXISTS_NOT']}"); } else { if ($db_selected) { installLog("DB Selected, will reuse {$_SESSION['setup_db_database_name']}"); if ($db->tableExists('config')) { include('sugar_version.php'); $versions = $db->getOne("SELECT COUNT(*) FROM config WHERE category='info' AND name='sugar_version' AND VALUE LIKE '$sugar_db_version'"); if ($versions > 0 && $silent==false) { $errors['ERR_DB_EXISTS_WITH_CONFIG'] = $mod_strings['ERR_DB_EXISTS_WITH_CONFIG']; installLog("ERROR:: {$errors['ERR_DB_EXISTS_WITH_CONFIG']}"); } } } else { installLog("DB not selected, will create {$_SESSION['setup_db_database_name']}"); } if ($_SESSION['setup_db_create_sugarsales_user'] && $_SESSION['setup_db_sugarsales_user'] != '' && $db_selected) { if ($db->userExists($_SESSION['setup_db_sugarsales_user'])) { $errors['ERR_DB_USER_EXISTS'] = $mod_strings['ERR_DB_USER_EXISTS']; installLog("ERROR:: {$errors['ERR_DB_USER_EXISTS']}"); } } } // DB SPECIFIC $check = $db->canInstall(); if ($check !== true) { $error = array_shift($check); array_unshift($check, $mod_strings[$error]); $errors[$error] = call_user_func_array('sprintf', $check); installLog("ERROR:: {$errors[$error]}"); } else { installLog("Passed DB install check"); } $db->disconnect(); } } } if ($silent) { return $errors; } else { printErrors($errors); } installLog("End DB Check Process *************"); } function printErrors($errors) { global $mod_strings; if (count($errors) == 0) { echo 'dbCheckPassed'; installLog("SUCCESS:: no errors detected!"); } else { if ((count($errors) == 1 && (isset($errors["ERR_DB_EXISTS_PROCEED"])||isset($errors["ERR_DB_EXISTS_WITH_CONFIG"]))) || (count($errors) == 2 && isset($errors["ERR_DB_EXISTS_PROCEED"]) && isset($errors["ERR_DB_EXISTS_WITH_CONFIG"]))) { ///throw alert asking to overwwrite db echo 'preexeest'; installLog("WARNING:: no errors detected, but DB tables will be dropped!, issuing warning to user"); } else { installLog("FATAL:: errors have been detected! User will not be allowed to continue. Errors are as follow:"); //print out errors $validationErr = "
{$mod_strings['ERR_DBCONF_VALIDATION']}
"; $validationErr .= '