dbType}:{$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" => $_SESSION['setup_db_host_instance'], ); 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']; } // 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']}"); } // 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 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') && !$_SESSION['setup_db_drop_tables']) { 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 != 1 && $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 .= '