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

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

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

include_once(BG_PATH_CLASS . "tpl.class.php"); //载入模板类
include_once(BG_PATH_MODEL . "article.class.php"); //载入文章模型类
include_once(BG_PATH_MODEL . "cate.class.php");
include_once(BG_PATH_MODEL . "cateBelong.class.php");
include_once(BG_PATH_MODEL . "tag.class.php");
include_once(BG_PATH_MODEL . "mark.class.php");
include_once(BG_PATH_MODEL . "spec.class.php");
include_once(BG_PATH_MODEL . "custom.class.php");

/*-------------文章控制器-------------*/
class CONTROL_ARTICLE {

    private $obj_base;
    private $config;
    private $adminLogged;
    private $obj_tpl;
    private $mdl_article;
    private $mdl_cate;
    private $mdl_cateBelong;
    private $mdl_mark;
    private $mdl_admin;

    function __construct() { //构造函数
        $this->obj_base       = $GLOBALS["obj_base"];
        $this->config         = $this->obj_base->config;
        $this->adminLogged    = $GLOBALS["adminLogged"]; //获取已登录信息
        $_arr_cfg["admin"]    = true;
        $this->obj_tpl        = new CLASS_TPL(BG_PATH_TPLSYS . "admin/" . $this->config["ui"], $_arr_cfg); //初始化视图对象
        $this->mdl_article    = new MODEL_ARTICLE(); //设置文章对象
        $this->mdl_cate       = new MODEL_CATE(); //设置栏目对象
        $this->mdl_cateBelong = new MODEL_CATE_BELONG(); //设置栏目从属对象
        $this->mdl_tag        = new MODEL_TAG();
        $this->mdl_mark       = new MODEL_MARK(); //设置标记对象
        $this->mdl_spec       = new MODEL_SPEC();
        $this->mdl_admin      = new MODEL_ADMIN(); //设置管理员对象
        $this->mdl_custom     = new MODEL_CUSTOM();
        $this->article_init();
        $this->tplData = array(
            "adminLogged" => $this->adminLogged
        );
    }


    /** 文章表单
     * ctl_form function.
     *
     * @access public
     * @return void
     */
    function ctl_form() {
        $_num_articleId = fn_getSafe(fn_get("article_id"), "int", 0);

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

            if (!isset($this->adminLogged["groupRow"]["group_allow"]["article"]["edit"]) && !isset($this->adminLogged["admin_allow_cate"][$_arr_articleRow["article_cate_id"]]["edit"]) && $_arr_articleRow["article_admin_id"] != $this->adminLogged["admin_id"]) { //判断权限
                return array(
                    "alert" => "x120303"
                );
            }

            $_arr_cateBelongRows = $this->mdl_cateBelong->mdl_list($_arr_articleRow["article_id"]); //读取从属数据
            foreach ($_arr_cateBelongRows as $_key=>$_value) {
                $_arr_articleRow["cate_ids"][] = $_value["belong_cate_id"];
            }

            $_arr_articleRow["cate_ids"][]   = $_arr_articleRow["article_cate_id"];
            $_arr_searchTag = array(
                "status"        => "show",
                "article_id"    => $_arr_articleRow["article_id"],
            );
            $_arr_tagRows                    = $this->mdl_tag->mdl_list(10, 0, $_arr_searchTag); //读取从属数据

            $_arr_articleRow["article_tags"] = array();
            foreach ($_arr_tagRows as $_key=>$_value) {
                    $_arr_articleRow["article_tags"][]  = $_value["tag_name"];
            }
            $_arr_specRow                            = $this->mdl_spec->mdl_read($_arr_articleRow["article_spec_id"]);
            $_arr_articleRow["article_excerpt_type"] = "manual";
            //print_r($_arr_articleRow);
        } else {
            if (isset($this->adminLogged["groupRow"]["group_allow"]["article"]["approve"])) {
                $_str_status = "pub";
            } else {
                $_str_status = "wait";
            }
            $_arr_articleRow = array(
                "article_id"            => 0,
                "article_title"         => "",
                "article_content"       => "",
                "article_link"          => "",
                "article_excerpt"       => "",
                "article_excerpt_type"  => BG_SITE_EXCERPTTYPE,
                "article_cate_id"       => 0,
                "article_status"        => $_str_status,
                "article_box"           => "normal",
                "article_time_pub"      => time(),
                "cate_ids"              => array(),
                "article_tags"          => array(),
                "article_customs"       => array(),
                "article_mark_id"       => 0,
                "article_spec_id"       => 0,
            );
            $_arr_specRow = array();
        }

        $_arr_searchCate = array(
            "status" => "show",
        );

        $_arr_cateRows    = $this->mdl_cate->mdl_list(1000, 0, $_arr_searchCate);
        $_arr_markRows    = $this->mdl_mark->mdl_list(100);

        if (count($_arr_cateRows) < 1) {
            return array(
                "alert" => "x110401",
            );
        }

        $_arr_articleRow["cate_ids"]        = array_unique($_arr_articleRow["cate_ids"]);
        $_arr_articleRow["article_tags"]    = json_encode($_arr_articleRow["article_tags"]);

        $_arr_tpl = array(
            "specRow"    => $_arr_specRow,
            "cateRows"   => $_arr_cateRows, //栏目列表
            "markRows"   => $_arr_markRows, //标记列表
            "customRows" => $this->customRows, //标记列表
            "articleRow" => $_arr_articleRow, //栏目信息
        );

        $_arr_tplData = array_merge($this->tplData, $_arr_tpl);

        $this->obj_tpl->tplDisplay("article_form.tpl", $_arr_tplData);

        return array(
            "alert" => "y120102"
        );
    }


    /** 显示文章
     * ctl_show function.
     *
     * @access public
     * @param mixed $num_articleId
     * @param int $num_ucId (default: 0)
     * @return void
     */
    function ctl_show() {
        $_num_articleId = fn_getSafe(fn_get("article_id"), "int", 0);
        if ($_num_articleId < 1) {
            return array(
                "alert" => "x120212"
            );
        }

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

        if (!isset($this->adminLogged["groupRow"]["group_allow"]["article"]["browse"]) && !isset($this->adminLogged["admin_allow_cate"][$_arr_articleRow["article_cate_id"]]["browse"]) && $_arr_articleRow["article_admin_id"] != $this->adminLogged["admin_id"]) { //判断权限
            return array(
                "alert" => "x120301"
            );
        }

        $_arr_belongRow = $this->mdl_cateBelong->mdl_list($_arr_articleRow["article_id"]);
        foreach ($_arr_belongRow as $_key=>$_value) {
            $_arr_articleRow["cate_ids"][] = $_value["belong_cate_id"];
        }
        $_arr_articleRow["cate_ids"][] = $_arr_articleRow["article_cate_id"];

        $_arr_searchCate = array(
            "status" => "show",
        );

        $_arr_searchTag = array(
            "status"        => "show",
            "article_id"    => $_arr_articleRow["article_id"],
        );

        $_arr_cateRow                 = $this->mdl_cate->mdl_read($_arr_articleRow["article_cate_id"]);
        $_arr_cateRows                = $this->mdl_cate->mdl_list(1000, 0, $_arr_searchCate);
        $_arr_markRow                 = $this->mdl_mark->mdl_read($_arr_articleRow["article_mark_id"]);
        $_arr_tagRows                 = $this->mdl_tag->mdl_list(10, 0, $_arr_searchTag); //读取从属数据
        $_arr_articleRow["cate_ids"]  = array_unique($_arr_articleRow["cate_ids"]);

        $_arr_tpl = array(
            "cateRow"    => $_arr_cateRow, //栏目
            "cateRows"   => $_arr_cateRows, //栏目列表
            "markRow"    => $_arr_markRow, //标记列表
            "customRows" => $this->customRows, //标记列表
            "articleRow" => $_arr_articleRow,
            "tagRows"    => $_arr_tagRows,
        );

        $_arr_tplData = array_merge($this->tplData, $_arr_tpl);

        $this->obj_tpl->tplDisplay("article_show.tpl", $_arr_tplData);

        return array(
            "alert" => "y120102"
        );
    }


    /** 列出文章
     * ctl_list function.
     *
     * @access public
     * @return void
     */
    function ctl_list() {
        $_str_box     = fn_getSafe(fn_get("box"), "txt", "");
        $_num_cateId  = fn_getSafe(fn_get("cate_id"), "int", 0);

        if ($_num_cateId != 0) {
            $_arr_cateIds = $this->mdl_cate->mdl_ids($_num_cateId);
        } else {
            $_arr_cateIds = false;
        }


        if ($_str_box == "draft" || $_str_box == "recycle") {
            $_num_adminId = $this->adminLogged["admin_id"];
        } else {
            $_num_adminId = fn_getSafe(fn_get("admin_id"), "int", 0);
        }

        $_arr_search = array(
            "key"       => fn_getSafe(fn_get("key"), "txt", ""),
            "year"      => fn_getSafe(fn_get("year"), "txt", ""),
            "month"     => fn_getSafe(fn_get("month"), "txt", ""),
            "status"    => fn_getSafe(fn_get("status"), "txt", ""),
            "mark_id"   => fn_getSafe(fn_get("mark_id"), "int", 0),
            "cate_id"   => $_num_cateId,
            "box"       => $_str_box,
            "cate_ids"  => $_arr_cateIds,
            "admin_id"  => $_num_adminId,
        );

        $_num_articleCount  = $this->mdl_article->mdl_count($_arr_search);
        $_arr_page          = fn_page($_num_articleCount); //取得分页数据
        $_str_query         = http_build_query($_arr_search);
        $_arr_articleRows   = $this->mdl_article->mdl_list(BG_DEFAULT_PERPAGE, $_arr_page["except"], $_arr_search);

        $_arr_articleCount["all"]       = $this->mdl_article->mdl_count();
        $_arr_searchDraft = array(
            "box"       => "draft",
            "admin_id"  => $this->adminLogged["admin_id"]
        );
        $_arr_searchRecycle = array(
            "box"       => "recycle",
            "admin_id"  => $this->adminLogged["admin_id"]
        );
        $_arr_articleCount["draft"]     = $this->mdl_article->mdl_count($_arr_searchDraft);
        $_arr_articleCount["recycle"]   = $this->mdl_article->mdl_count($_arr_searchRecycle);

        $_arr_searchCate = array(
            "status" => "show",
        );

        $_arr_articleYear   = $this->mdl_article->mdl_year();
        $_arr_cateRows      = $this->mdl_cate->mdl_list(1000, 0, $_arr_searchCate);
        $_arr_markRows      = $this->mdl_mark->mdl_list(100);

        foreach ($_arr_articleRows as $_key=>$_value) {
            $_arr_cateRow = $this->mdl_cate->mdl_read($_value["article_cate_id"]);
            if ($_arr_cateRow["alert"] != "y110102" && $_value["article_cate_id"] > 0) {
                $_arr_unknownCate[] = $_value["article_id"];
            }
            $_arr_articleRows[$_key]["cateRow"]  = $_arr_cateRow;
            $_arr_articleRows[$_key]["markRow"]  = $this->mdl_mark->mdl_read($_value["article_mark_id"]);
            $_arr_articleRows[$_key]["adminRow"] = $this->mdl_admin->mdl_read($_value["article_admin_id"]);
        }

        if (isset($_arr_unknownCate)) {
            $this->mdl_article->mdl_unknownCate($_arr_unknownCate);
        }

        $_arr_tpl = array(
            "query"          => $_str_query,
            "pageRow"        => $_arr_page,
            "search"         => $_arr_search,
            "cateRows"       => $_arr_cateRows,
            "markRows"       => $_arr_markRows, //标记列表
            "articleRows"    => $_arr_articleRows,
            "articleCount"   => $_arr_articleCount,
            "articleYear"    => $_arr_articleYear,
        );

        $_arr_tplData = array_merge($this->tplData, $_arr_tpl);

        $this->obj_tpl->tplDisplay("article_list.tpl", $_arr_tplData);

        return array(
            "alert" => "y120301"
        );
    }


    private function article_init() {
        $_arr_searchCustom = array(
            "status"    => "enable",
            "parent_id" => 0,
        );

        $this->customRows = $this->mdl_custom->mdl_list(100, 0, $_arr_searchCustom);
        $this->mdl_custom->mdl_cache(true);
        $this->mdl_article->custom_columns = $this->mdl_custom->mdl_column_custom();
    }
}