require LIVEZILLA_PATH . "_lib/functions.internal.process.inc.php"; require LIVEZILLA_PATH . "_lib/functions.internal.build.inc.php"; processUpdateReport(); buildReports(); } else { if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_DATABASE_TEST) { require_once LIVEZILLA_PATH . "_lib/functions.internal.man.inc.php"; ServerManager::DatabaseTest(); } else { if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_SEND_TEST_MAIL) { require_once LIVEZILLA_PATH . "_lib/functions.internal.man.inc.php"; ServerManager::SendTestMail(); } else { if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_CREATE_TABLES) { require_once LIVEZILLA_PATH . "_lib/functions.internal.man.inc.php"; if (ServerManager::CreateTables()) { ServerManager::UpdateUserManagement($_POST[POST_INTERN_DATABASE_PREFIX], true); } } else { if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_SET_MANAGEMENT) { require_once LIVEZILLA_PATH . "_lib/functions.internal.man.inc.php"; ServerManager::UpdateUserManagement(DB_PREFIX); } else { if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_SET_CONFIG) { require_once LIVEZILLA_PATH . "_lib/functions.internal.man.inc.php"; ServerManager::UpdateConfiguration(); ServerManager::UpdateLanguageFiles(); } else { if ($_POST[POST_INTERN_SERVER_ACTION] == INTERN_ACTION_SET_AVAILABILITY) { require_once LIVEZILLA_PATH . "_lib/functions.internal.man.inc.php"; ServerManager::UpdateAvailability($_POST["p_available"]);
static function CreateTables($id = 0) { if (OperatorRequest::IsAdministrator(true)) { $connection = new DBManager($_POST[POST_INTERN_DATABASE_USER], $_POST[POST_INTERN_DATABASE_PASS], $_POST[POST_INTERN_DATABASE_HOST], "", $_POST[POST_INTERN_DATABASE_PREFIX]); $engine = !empty($_POST["p_db_eng"]) && $_POST["p_db_eng"] == "InnoDB" ? "InnoDB" : "MyISAM"; if (!empty($_POST["p_db_ext"])) { DBManager::$Extension = strtolower($_POST["p_db_ext"]); } if (DBManager::$Extension == "mysql" && !function_exists("mysql_connect")) { Server::$Response->SetStandardResponse($id, base64_encode("PHP MySQL extension is missing (php_mysql.dll)")); return false; } else { if (DBManager::$Extension == "mysqli" && !function_exists("mysqli_connect")) { Server::$Response->SetStandardResponse($id, base64_encode("PHP MySQLi extension is missing (php_mysqli.dll)")); return false; } } $connection->InitConnection(); if (!DBManager::$Provider) { $error = DBManager::GetError(); Server::$Response->SetStandardResponse($id, base64_encode("Can't connect to database. Invalid host or login! (" . DBManager::GetErrorCode() . (!empty($error) ? ": " . $error : "") . ")")); return false; } else { $connection->Query(false, "SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'"); $db_selected = $connection->SelectDatabase(DBManager::RealEscape($_POST[POST_INTERN_DATABASE_NAME])); if (!$db_selected) { if (!empty($_POST[POST_INTERN_DATABASE_CREATE])) { $resultcr = $connection->Query(false, "CREATE DATABASE `" . DBManager::RealEscape($_POST[POST_INTERN_DATABASE_NAME]) . "`"); if (!$resultcr) { Server::$Response->SetStandardResponse($id, base64_encode(DBManager::GetErrorCode() . ": " . DBManager::GetError())); } else { unset($_POST[POST_INTERN_DATABASE_CREATE]); return ServerManager::CreateTables(); } } else { Server::$Response->SetStandardResponse(2, base64_encode(DBManager::GetErrorCode() . ": " . DBManager::GetError())); } } else { $resultvc = $connection->Query(false, "SELECT `version`,`chat_id`,`ticket_id` FROM `" . DBManager::RealEscape($_POST[POST_INTERN_DATABASE_PREFIX]) . DATABASE_INFO . "` ORDER BY `version` DESC LIMIT 1"); if ($rowvc = @DBManager::FetchArray($resultvc)) { if (VERSION != $rowvc["version"] && !empty($rowvc["version"])) { $upres = ServerManager::InitUpdateDatabase($rowvc["version"], $connection, $_POST[POST_INTERN_DATABASE_PREFIX], $engine); if ($upres === true) { Server::$Response->SetStandardResponse(1, base64_encode("")); return true; } } } $resultv = $connection->Query(false, $sql = "SELECT VERSION() as `mysql_version`"); if (!$resultv) { Server::$Response->SetStandardResponse($id, base64_encode(DBManager::GetErrorCode() . ": " . DBManager::GetError() . "\r\n\r\nSQL: " . $sql)); return false; } else { $mrow = @DBManager::FetchArray($resultv); $mversion = explode(".", $mrow["mysql_version"]); if (count($mversion) > 0 && $mversion[0] < MYSQL_NEEDED_MAJOR) { Server::$Response->SetStandardResponse($id, base64_encode("LiveZilla requires MySQL version " . MYSQL_NEEDED_MAJOR . " or greater. The MySQL version installed on your server is " . $mrow["mysql_version"] . ".")); return false; } } $commands = explode("###", str_replace("<!--engine-->", $engine, str_replace("<!--version-->", VERSION, str_replace("<!--prefix-->", $_POST[POST_INTERN_DATABASE_PREFIX], file_get_contents(LIVEZILLA_PATH . "_definitions/dump.lsql"))))); foreach ($commands as $sql) { if (empty($sql)) { continue; } $result = $connection->Query(false, trim($sql)); if (!$result && DBManager::GetErrorCode() != 1050 && DBManager::GetErrorCode() != 1005 && DBManager::GetErrorCode() != 1062) { Server::$Response->SetStandardResponse($id, base64_encode(DBManager::GetErrorCode() . ": " . DBManager::GetError() . "\r\n\r\nSQL: " . $sql)); return false; } } ServerManager::ImportButtons(PATH_IMAGES . "buttons/", $_POST[POST_INTERN_DATABASE_PREFIX], $connection); DBManager::$Connector = $connection; Server::$Response->SetStandardResponse(1, base64_encode("")); return true; } } } return false; }