function CheckShortInstall() { global $DB, $DBType, $DBHost, $DBLogin, $DBPassword, $DBName, $DBDebug, $DBSQLServerType; if (defined("SHORT_INSTALL_CHECK")) { return true; } //PHP $requireStep = new RequirementStep(); if (!$requireStep->CheckRequirements($DBType)) { BXInstallServices::ShowStepErrors($requireStep); } //UTF-8 if (defined("BX_UTF") && !BXInstallServices::IsUTF8Support()) { BXInstallServices::ShowStepErrors(InstallGetMessage("INST_UTF8_NOT_SUPPORT")); } elseif (defined("BX_UTF") && $DBType == "mssql") { BXInstallServices::ShowStepErrors(InstallGetMessage("INST_UTF8_NOT_SUPPORT")); } //Check connection require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/" . $DBType . "/database.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/" . $DBType . "/main.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/tools.php"; IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/main.php"); $DB = new CDatabase(); if (!$DB->Connect($DBHost, $DBName, $DBLogin, $DBPassword)) { BXInstallServices::ShowStepErrors(InstallGetMessage("COULD_NOT_CONNECT") . " " . $DB->db_Error); } $databaseStep = new CreateDBStep(); $databaseStep->DB =& $DB; $databaseStep->dbType = $DBType; $databaseStep->dbName = $DBName; $databaseStep->filePermission = defined("BX_FILE_PERMISSIONS") ? BX_FILE_PERMISSIONS : 0; $databaseStep->folderPermission = defined("BX_DIR_PERMISSIONS") ? BX_DIR_PERMISSIONS : 0; $databaseStep->createDBType = defined("MYSQL_TABLE_TYPE") ? MYSQL_TABLE_TYPE : ""; $databaseStep->utf8 = defined("BX_UTF"); $databaseStep->createCharset = null; $databaseStep->needCodePage = false; if ($databaseStep->IsBitrixInstalled()) { BXInstallServices::ShowStepErrors($databaseStep); } //Database check if ($DBType == "mysql") { $dbResult = $DB->Query("select VERSION() as ver", true); if ($dbResult && ($arVersion = $dbResult->Fetch())) { $mysqlVersion = trim($arVersion["ver"]); if (!BXInstallServices::VersionCompare($mysqlVersion, "5.0.0")) { BXInstallServices::ShowStepErrors(InstallGetMessage("SC_DB_VERS_MYSQL_ER")); } $databaseStep->needCodePage = true; if (!$databaseStep->needCodePage && defined("BX_UTF")) { BXInstallServices::ShowStepErrors(InstallGetMessage("INS_CREATE_DB_CHAR_NOTE")); } } //Code page if ($databaseStep->needCodePage) { $codePage = false; if (LANGUAGE_ID == "ru") { $codePage = "cp1251"; } elseif ($databaseStep->createCharset != '') { $codePage = $databaseStep->createCharset; } else { $codePage = 'latin1'; } if ($databaseStep->utf8) { $DB->Query("ALTER DATABASE `" . $databaseStep->dbName . "` CHARACTER SET UTF8 COLLATE utf8_unicode_ci", true); } elseif ($codePage) { $DB->Query("ALTER DATABASE `" . $databaseStep->dbName . "` CHARACTER SET " . $codePage, true); } } if (strlen($databaseStep->createDBType) > 0) { $DB->Query("SET storage_engine = '" . $databaseStep->createDBType . "'", false); } //SQL mode $dbResult = $DB->Query("SELECT @@sql_mode", true); if ($dbResult && ($arResult = $dbResult->Fetch())) { $sqlMode = trim($arResult["@@sql_mode"]); if (strpos($sqlMode, "STRICT_TRANS_TABLES") !== false) { $databaseStep->sqlMode = preg_replace("~,?STRICT_TRANS_TABLES~i", "", $sqlMode); $databaseStep->sqlMode = ltrim($databaseStep->sqlMode, ","); } } } elseif ($DBType == "oracle" && $databaseStep->utf8) { $query = "SELECT * FROM nls_database_parameters WHERE PARAMETER='NLS_CHARACTERSET' OR PARAMETER='NLS_NCHAR_CHARACTERSET'"; $dbResult = $DB->Query($query, true); if ($dbResult && ($arResult = $dbResult->Fetch())) { $arOracleParams = array("NLS_CHARACTERSET" => "", "NLS_NCHAR_CHARACTERSET" => ""); foreach ($arResult as $arParam) { $arOracleParams[$arParam["PARAMETER"]] = $arParam["VALUE"]; } if ($arOracleParams["NLS_CHARACTERSET"] != "AL32UTF8" || $arOracleParams["NLS_NCHAR_CHARACTERSET"] != "UTF8") { BXInstallServices::ShowStepErrors(InstallGetMessage("INST_ORACLE_UTF_ERROR")); } } else { BXInstallServices::ShowStepErrors(InstallGetMessage("INST_ORACLE_CHARSET_ERROR")); } } //Create after_connect.php if not exists if (!file_exists($_SERVER["DOCUMENT_ROOT"] . BX_PERSONAL_ROOT . "/php_interface/after_connect.php") && $databaseStep->CreateAfterConnect() === false) { BXInstallServices::ShowStepErrors($databaseStep); } if (!$databaseStep->CheckDBOperation()) { BXInstallServices::ShowStepErrors($databaseStep); } $filePath = $_SERVER["DOCUMENT_ROOT"] . BX_PERSONAL_ROOT . "/php_interface/dbconn.php"; if ($fileContent = file_get_contents($filePath)) { $fileContent = "<" . "? define(\"SHORT_INSTALL_CHECK\", true);?" . ">" . $fileContent; file_put_contents($filePath, $fileContent); } return true; }