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

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

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

include_once(BG_PATH_CLASS . "ajax.class.php"); //载入 AJAX 基类
if (BG_MODULE_FTP == 1) {
    include_once(BG_PATH_CLASS . "ftp.class.php"); //载入 FTP 类
}
include_once(BG_PATH_CLASS . "upload.class.php"); //载入上传类
include_once(BG_PATH_MODEL . "attach.class.php");
include_once(BG_PATH_MODEL . "thumb.class.php");
include_once(BG_PATH_MODEL . "mime.class.php");
include_once(BG_PATH_MODEL . "article.class.php");

/*-------------用户类-------------*/
class AJAX_ATTACH {

    private $adminLogged;
    private $obj_ajax;
    private $mdl_attach;
    private $attachMime;

    function __construct() { //构造函数
        $this->adminLogged  = $GLOBALS["adminLogged"]; //获取已登录信息
        $this->obj_ajax     = new CLASS_AJAX();
        $this->obj_ajax->chk_install();
        $this->obj_upload   = new CLASS_UPLOAD();
        $this->mdl_attach   = new MODEL_ATTACH();
        $this->mdl_thumb    = new MODEL_THUMB();
        $this->mdl_mime     = new MODEL_MIME();
        $this->mdl_admin    = new MODEL_ADMIN();
        $this->mdl_article  = new MODEL_ARTICLE(); //设置文章对象
        $this->setUpload();
    }


    function ajax_gen() {
        if ($this->adminLogged["alert"] != "y020102") { //未登录,抛出错误信息
            $this->show_err($this->adminLogged["alert"], "err");
        }

        if (!isset($this->adminLogged["groupRow"]["group_allow"]["attach"]["thumb"])) {
            $this->show_err("x070304", "err");
        }

        $_num_thumbId     = fn_getSafe(fn_post("thumb_id"), "int", 0);
        $_arr_attachId    = fn_post("attach_range");

        $_arr_search = array(
            "begin_id" => fn_getSafe($_arr_attachId["begin_id"], "int", 0),
            "end_id"   => fn_getSafe($_arr_attachId["end_id"], "int", 0),
        );

        if ($_num_thumbId < 1) {
            $this->show_err("x090207", "err");
        }

        $_arr_thumbRow = $this->mdl_thumb->mdl_read($_num_thumbId);
        if ($_arr_thumbRow["alert"] != "y090102") {
            $this->show_err($_arr_thumbRow["alert"], "err");
        }

        $_arr_attachIds   = array();
        $_num_perPage     = 10;
        $_num_attachCount = $this->mdl_attach->mdl_count($_arr_search);
        $_arr_page        = fn_page($_num_attachCount, $_num_perPage, "post");
        $_arr_attachRows  = $this->mdl_attach->mdl_list($_num_perPage, $_arr_page["except"], $_arr_search);

        //$_obj_finfo       = new finfo();

        if ($_arr_page["page"] <= $_arr_page["total"]) {
            foreach ($_arr_attachRows as $_key=>$_value) {
                if (file_exists($_value["attach_path"])) {
                    if ($_value["attach_type"] == "image") { //如果是图片,则生成缩略图

                        $this->obj_upload->thumb_do($_arr_thumbRow["thumb_width"], $_arr_thumbRow["thumb_height"], $_arr_thumbRow["thumb_type"], $_value);
                    }
                }
            }
            $_str_status = "loading";
            $_str_msg    = $this->obj_ajax->alert["x070409"];
        } else {
            $_str_status = "complete";
            $_str_msg    = $this->obj_ajax->alert["y070409"];
        }

        $_arr_re = array(
            "page"   => $_arr_page["page"],
            "msg"    => $_str_msg,
            "count"  => $_arr_page["total"],
            "status" => $_str_status,
        );

        exit(json_encode($_arr_re));
    }


    function ajax_empty() {
        if ($this->adminLogged["alert"] != "y020102") { //未登录,抛出错误信息
            $this->show_err($this->adminLogged["alert"], "err");
        }

        if (!isset($this->adminLogged["groupRow"]["group_allow"]["attach"]["del"])) {
            $this->show_err("x070304", "err");
        }

        if (!fn_token("chk")) { //令牌
            $this->show_err("x030206", "err");
        }

        $_arr_status = $this->obj_upload->upload_init();
        if ($_arr_status["alert"] != "y070403") {
            $this->show_err($_arr_status["alert"], "err");
        }

        $_arr_search = array(
            "box" => "recycle",
        );

        $_arr_attachIds   = array();
        $_num_perPage     = 10;
        $_num_attachCount = $this->mdl_attach->mdl_count($_arr_search);
        $_arr_page        = fn_page($_num_attachCount, $_num_perPage, "post");
        $_arr_attachRows  = $this->mdl_attach->mdl_list($_arr_search);

        $_arr_search = array(
            "box"           => "recycle",
            "attach_ids"    => $_arr_attachIds,
        );

        if ($_num_attachCount > 0) {
            foreach ($_arr_attachRows as $_key=>$_value) {
                $_arr_attachIds[] = $_value["attach_id"];
            }

            $_arr_attachRows  = $this->mdl_attach->mdl_list(1000, 0, $_arr_search);
            //print_r($_arr_attachRows);
            $this->obj_upload->upload_del($_arr_attachRows);
            //exit;

            $_arr_attachDel  = $this->mdl_attach->mdl_del(0, $_arr_attachIds);
            $_str_status     = "loading";
            $_str_msg        = $this->obj_ajax->alert["x070408"];
        } else {
            $_str_status = "complete";
            $_str_msg    = $this->obj_ajax->alert["y070408"];
        }

        $_arr_re = array(
            "msg"    => $_str_msg,
            "count"  => $_arr_page["total"],
            "status" => $_str_status,
        );

        exit(json_encode($_arr_re));
    }


    function ajax_clear() {
        if ($this->adminLogged["alert"] != "y020102") { //未登录,抛出错误信息
            $this->show_err($this->adminLogged["alert"], "err");
        }

        if (!isset($this->adminLogged["groupRow"]["group_allow"]["attach"]["del"])) {
            $this->show_err("x070304", "err");
        }

        $_num_last        = fn_getSafe(fn_post("last"), "int", 0);

        $_arr_searchCount = array(
            "box"   => "normal",
        );

        $_arr_searchList = array(
            "box"       => "normal",
            "end_id"    => $_num_last,
        );

        $_num_perPage     = 10;
        $_num_attachCount = $this->mdl_attach->mdl_count($_arr_searchCount);
        $_arr_page        = fn_page($_num_attachCount, $_num_perPage, "post");
        $_arr_attachRows  = $this->mdl_attach->mdl_list($_num_perPage, 0, $_arr_searchList);

        if ($_arr_attachRows) {
            foreach ($_arr_attachRows as $_key=>$_value) {
                $_arr_attachRow = $this->mdl_attach->mdl_chkAttach($_value["attach_id"], $_value["attach_ext"], $_value["attach_time"]);
                //print_r($_arr_attachRow);
                if ($_arr_attachRow["alert"] == "x070406") {
                    $this->mdl_attach->mdl_box("recycle", array($_value["attach_id"]));
                }
            }
            $_str_status = "loading";
            $_str_msg    = $this->obj_ajax->alert["x070407"];
        } else {
            $_str_status = "complete";
            $_str_msg    = $this->obj_ajax->alert["y070407"];
        }

        $_arr_re = array(
            "msg"    => $_str_msg,
            "count"  => $_arr_page["total"],
            "last"   => $_value["attach_id"],
            "status" => $_str_status,
        );

        exit(json_encode($_arr_re));
    }


    function ajax_box() {
        if (!isset($this->adminLogged["groupRow"]["group_allow"]["attach"]["del"])) {
            $this->obj_ajax->halt_alert("x170303");
        }

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

        $_str_attachStatus = fn_getSafe($GLOBALS["act_post"], "txt", "");
        if (!$_str_attachStatus) {
            $this->obj_ajax->halt_alert("x070102");
        }

        $_arr_attachRow = $this->mdl_attach->mdl_box($_str_attachStatus);

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

    /**
     * ajax_submit function.
     *
     * @access public
     * @return void
     */
    function ajax_submit() {
        if ($this->adminLogged["alert"] != "y020102") { //未登录,抛出错误信息
            $this->show_err($this->adminLogged["alert"]);
        }

        $_arr_status = $this->obj_upload->upload_init();
        if ($_arr_status["alert"] != "y070403") {
            $this->show_err($_arr_status["alert"]);
        }

        if (!isset($this->adminLogged["groupRow"]["group_allow"]["attach"]["upload"])) {
            $this->show_err("x070302");
        }

        if (!fn_token("chk")) { //令牌
            $this->show_err("x030206");
        }

        if (!is_array($this->attachMime)) {
            $this->show_err("x070405");
        }

        $_arr_uploadRow = $this->obj_upload->upload_pre();

        if ($_arr_uploadRow["alert"] != "y100201") {
            $this->show_err($_arr_uploadRow["alert"], "err", $_arr_uploadRow["attach_name"]);
        }

        $_arr_attachRow = $this->mdl_attach->mdl_submit(0, $_arr_uploadRow["attach_name"], $_arr_uploadRow["attach_ext"], $_arr_uploadRow["attach_mime"], $_arr_uploadRow["attach_size"], $this->adminLogged["admin_id"]);

        if ($_arr_attachRow["alert"] != "y070101") {
            $this->show_err($_arr_attachRow["alert"], "err", $_arr_uploadRow["attach_name"]);
        }

        $_arr_uploadRowSubmit = $this->obj_upload->upload_submit($_arr_attachRow["attach_time"], $_arr_attachRow["attach_id"]);
        if ($_arr_uploadRowSubmit["alert"] != "y070401") {
            $this->show_err($_arr_uploadRowSubmit["alert"], "err", $_arr_uploadRow["attach_name"]);
        }
        $_arr_uploadRowSubmit["attach_id"]    = $_arr_attachRow["attach_id"];
        $_arr_uploadRowSubmit["attach_ext"]   = $_arr_uploadRow["attach_ext"];
        $_arr_uploadRowSubmit["attach_name"]  = $_arr_uploadRow["attach_name"];

        exit(json_encode($_arr_uploadRowSubmit));
    }


    /**
     * ajax_del function.
     *
     * @access public
     * @return void
     */
    function ajax_del() {
        if ($this->adminLogged["alert"] != "y020102") { //未登录,抛出错误信息
            $this->obj_ajax->halt_alert($this->adminLogged["alert"]);
        }

        $_arr_status = $this->obj_upload->upload_init();
        if ($_arr_status["alert"] != "y070403") {
            $this->obj_ajax->halt_alert($_arr_status["alert"]);
        }

        if (isset($this->adminLogged["groupRow"]["group_allow"]["attach"]["del"])) {
            $_num_adminId = 0;
        } else {
            $_num_adminId = $this->adminLogged["admin_id"];
        }

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

        $_arr_search = array(
            "admin_id"      => $_num_adminId,
            "attach_ids"    => $_arr_attachIds["attach_ids"],
        );

        $_arr_attachRows = $this->mdl_attach->mdl_list(1000, 0, $_arr_search);
        $this->obj_upload->upload_del($_arr_attachRows);

        $_arr_attachDel = $this->mdl_attach->mdl_del($_num_adminId);

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


    /**
     * ajax_list function.
     *
     * @access public
     * @return void
     */
    function ajax_list() {
        if ($this->adminLogged["alert"] != "y020102") { //未登录,抛出错误信息
            $this->obj_ajax->halt_alert($this->adminLogged["alert"]);
        }

        if (!isset($this->adminLogged["groupRow"]["group_allow"]["attach"]["browse"])) {
            $this->obj_ajax->halt_alert("x070301");
        }

        $_arr_search = array(
            "key"   => fn_getSafe(fn_get("key"), "txt", ""),
            "year"  => fn_getSafe(fn_get("year"), "txt", ""),
            "month" => fn_getSafe(fn_get("month"), "txt", ""),
            "ext"   => fn_getSafe(fn_get("ext"), "txt", ""),
            "box"   => "normal",
        );

        $_num_perPage     = 8;
        $_num_attachCount = $this->mdl_attach->mdl_count($_arr_search);
        $_arr_page        = fn_page($_num_attachCount, $_num_perPage);
        $_arr_attachRows  = $this->mdl_attach->mdl_list($_num_perPage, $_arr_page["except"], $_arr_search);

        foreach ($_arr_attachRows as $_key=>$_value) {
            if ($_value["attach_type"] == "image") {
                $_arr_attachRows[$_key]["attach_thumb"] = $this->mdl_attach->thumb_process($_value["attach_id"], $_value["attach_time"], $_value["attach_ext"]);
            }
            $_arr_attachRows[$_key]["adminRow"]  = $this->mdl_admin->mdl_read($_value["attach_admin_id"]);
        }

        //print_r($_arr_page);

        $_arr_tpl = array(
            "pageRow"    => $_arr_page,
            "attachRows" => $_arr_attachRows, //上传信息
        );

        exit(json_encode($_arr_tpl));
    }


    function ajax_article() {
        if ($this->adminLogged["alert"] != "y020102") { //未登录,抛出错误信息
            $this->obj_ajax->halt_alert($this->adminLogged["alert"]);
        }

        if (!isset($this->adminLogged["groupRow"]["group_allow"]["attach"]["browse"])) {
            $this->obj_ajax->halt_alert("x070301");
        }


        $_num_articleId = fn_getSafe(fn_get("article_id"), "int", 0);
        if ($_num_articleId < 1) {
            $this->obj_ajax->halt_alert("x120212");
        }

        $_arr_articleRow = $this->mdl_article->mdl_read($_num_articleId); //读取文章
        if ($_arr_articleRow["alert"] != "y120102") {
            $this->obj_ajax->halt_alert($_arr_articleRow["alert"]);
        }

        $_num_perPage     = 8;
        $_arr_attachIds   = fn_getAttach($_arr_articleRow["article_content"]);
        $_arr_attachRows  = array();

        $_arr_search = array(
            "attach_ids"    => $_arr_attachIds,
            "box"           => "normal",
        );

        if ($_arr_attachIds) {
            $_num_attachCount = $this->mdl_attach->mdl_count($_arr_search);
            $_arr_page        = fn_page($_num_attachCount, $_num_perPage);
            $_arr_attachRows  = $this->mdl_attach->mdl_list($_num_perPage, $_arr_page["except"], $_arr_search);

            foreach ($_arr_attachRows as $_key=>$_value) {
                if ($_value["attach_type"] == "image") {
                    $_arr_attachRows[$_key]["attach_thumb"] = $this->mdl_attach->thumb_process($_value["attach_id"], $_value["attach_time"], $_value["attach_ext"]);
                }
                $_arr_attachRows[$_key]["adminRow"]  = $this->mdl_admin->mdl_read($_value["attach_admin_id"]);
            }
        }

        //print_r($_arr_page);

        $_arr_tpl = array(
            "pageRow"    => $_arr_page,
            "attachRows" => $_arr_attachRows, //上传信息
        );

        exit(json_encode($_arr_tpl));
    }


    /**
     * show_err function.
     *
     * @access private
     * @param mixed $str_alert
     * @return void
     */
    private function show_err($str_alert, $status = "ok", $str_attachName = "") {
        $_arr_re = array(
            "alert"         => $str_alert,
            "msg"           => $this->obj_ajax->alert[$str_alert],
            "status"        => $status,
            "attach_name"   => $str_attachName,
        );
        if ($str_alert == "x070203") {
            $_arr_re["msg"] = $this->obj_ajax->alert[$str_alert] . " " . BG_UPLOAD_SIZE . " " . BG_UPLOAD_UNIT;
        }
        exit(json_encode($_arr_re));
    }


    /**
     * setUpload function.
     *
     * @access private
     * @return void
     */
    private function setUpload() {
        $_arr_mimeRows = $this->mdl_mime->mdl_list(100);
        foreach ($_arr_mimeRows as $_key=>$_value) {
            $this->attachMime[$_value["mime_name"]] = $_value["mime_ext"];
        }

        $this->mdl_attach->thumbRows  = $this->mdl_thumb->mdl_list(100);
        $this->obj_upload->thumbRows  = $this->mdl_attach->thumbRows;
        $this->obj_upload->mimeRows   = $this->attachMime;
        $this->obj_upload->mime_image = $this->mdl_attach->mime_image;
    }
}