Ejemplo n.º 1
0
     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;
 }