www.gusucode.com > baigo CMS PHP开源网站管理系统 v1.2.2源码程序 > baigocms_v1.2.2/bg_sso/core/control/install/ajax/install.class.php

    <?php
/*-----------------------------------------------------------------
!!!!警告!!!!
以下为系统文件,请勿修改
-----------------------------------------------------------------*/

//不能非法包含或直接执行
if(!defined("IN_BAIGO")) {
    exit("Access Denied");
}

include_once(BG_PATH_CLASS . "ajax.class.php"); //载入 AJAX 基类
include_once(BG_PATH_MODEL . "opt.class.php"); //载入管理帐号模型

class AJAX_INSTALL {

    private $obj_ajax;
    private $obj_db;

    function __construct() { //构造函数
        $this->obj_ajax       = new CLASS_AJAX(); //初始化 AJAX 基对象

        if (file_exists(BG_PATH_CONFIG . "is_install.php")) {
            $this->obj_ajax->halt_alert("x030403");
        }

        $this->install_init();
        $this->mdl_opt = new MODEL_OPT();
    }


    function ajax_dbconfig() {
        $_arr_dbconfigSubmit = $this->mdl_opt->input_dbconfig(false);

        if ($_arr_dbconfigSubmit["alert"] != "ok") {
            $this->obj_ajax->halt_alert($_arr_dbconfigSubmit["alert"]);
        }

        $_arr_return = $this->mdl_opt->mdl_dbconfig();

        $this->obj_ajax->halt_alert($_arr_return["alert"]);
    }


    function ajax_submit() {
        $_act_post = fn_getSafe($GLOBALS["act_post"], "txt", "base");

        if ($_act_post != "dbconfig") {
            $this->check_db();
        }

        $_num_countSrc = 0;

        foreach ($this->obj_ajax->opt[$_act_post]["list"] as $_key=>$_value) {
            if ($_value["min"] > 0) {
                $_num_countSrc++;
            }
        }

        $_arr_const = $this->mdl_opt->input_const($_act_post);

        $_num_countInput = count(array_filter($_arr_const));

        if ($_num_countInput < $_num_countSrc) {
            $this->obj_ajax->halt_alert("x030204");
        }

        $_arr_return = $this->mdl_opt->mdl_const($_act_post);

        if ($_arr_return["alert"] != "y040101") {
            $this->obj_ajax->halt_alert($_arr_return["alert"]);
        }

        $this->obj_ajax->halt_alert("y030405");
    }


    function ajax_admin() {
        $this->check_db();

        include_once(BG_PATH_MODEL . "admin.class.php"); //载入管理帐号模型
        $_mdl_admin  = new MODEL_ADMIN();

        $_arr_adminSubmit = $_mdl_admin->input_submit();

        if ($_arr_adminSubmit["alert"] != "ok") {
            $this->obj_ajax->halt_alert($_arr_adminSubmit["alert"]);
        }

        $_arr_adminPass = validateStr(fn_post("admin_pass"), 1, 0);
        switch ($_arr_adminPass["status"]) {
            case "too_short":
                $this->obj_ajax->halt_alert("x020205");
            break;

            case "ok":
                $_str_adminPass = $_arr_adminPass["str"];
            break;
        }

        $_arr_adminPassConfirm = validateStr(fn_post("admin_pass_confirm"), 1, 0);
        switch ($_arr_adminPassConfirm["status"]) {
            case "too_short":
                $this->obj_ajax->halt_alert("x020211");
            break;

            case "ok":
                $_str_adminPassConfirm = $_arr_adminPassConfirm["str"];
            break;
        }

        if ($_str_adminPass != $_str_adminPassConfirm) {
            $this->obj_ajax->halt_alert("x020206");
        }

        $_str_adminRand      = fn_rand(6);
        $_str_adminPassDo    = fn_baigoEncrypt($_str_adminPass, $_str_adminRand);

        $_arr_adminRow = $_mdl_admin->mdl_submit($_str_adminPassDo, $_str_adminRand);

        $this->obj_ajax->halt_alert("y030407");
    }


    function ajax_over() {
        $this->check_db();

        $_arr_return = $this->mdl_opt->mdl_over();

        if ($_arr_return["alert"] != "y040101") {
            $this->obj_ajax->halt_alert($_arr_return["alert"]);
        }

        $this->obj_ajax->halt_alert("y030408");
    }


    private function check_db() {
        if (!fn_token("chk")) { //令牌
            $this->obj_ajax->halt_alert("x030206");
        }

        if (strlen(BG_DB_HOST) < 1 || strlen(BG_DB_NAME) < 1 || strlen(BG_DB_USER) < 1 || strlen(BG_DB_PASS) < 1 || strlen(BG_DB_CHARSET) < 1) {
            $this->obj_ajax->halt_alert("x030404");
        } else {
            if (!defined("BG_DB_PORT")) {
                define("BG_DB_PORT", "3306");
            }

            $_cfg_host = array(
                "host"      => BG_DB_HOST,
                "name"      => BG_DB_NAME,
                "user"      => BG_DB_USER,
                "pass"      => BG_DB_PASS,
                "charset"   => BG_DB_CHARSET,
                "debug"     => BG_DEBUG_DB,
                "port"      => BG_DB_PORT,
            );

            $GLOBALS["obj_db"]   = new CLASS_MYSQLI($_cfg_host); //设置数据库对象
            $this->obj_db        = $GLOBALS["obj_db"];

            if (!$this->obj_db->connect()) {
                $this->obj_ajax->halt_alert("x030111");
            }

            if (!$this->obj_db->select_db()) {
                $this->obj_ajax->halt_alert("x030112");
            }
        }
    }


    private function install_init() {
        $_arr_extRow     = get_loaded_extensions();
        $_num_errCount   = 0;

        foreach ($this->obj_ajax->type["ext"] as $_key=>$_value) {
            if (!in_array($_key, $_arr_extRow)) {
                $_num_errCount++;
            }
        }

        if ($_num_errCount > 0) {
            $this->obj_ajax->halt_alert("x030417");
        }
    }
}