www.gusucode.com > baigo CMS PHP开源网站管理系统 v1.2.2源码程序 > baigocms_v1.2.2/bg_core/model/cate.class.php
<?php /*----------------------------------------------------------------- !!!!警告!!!! 以下为系统文件,请勿修改 -----------------------------------------------------------------*/ //不能非法包含或直接执行 if(!defined("IN_BAIGO")) { exit("Access Denied"); } /*-------------用户类-------------*/ class MODEL_CATE { private $obj_db; private $is_magic; public $cateStatus = array(); public $cateTypes = array(); function __construct() { //构造函数 $this->obj_db = $GLOBALS["obj_db"]; //设置数据库对象 $this->obj_dir = new CLASS_DIR(); $this->is_magic = get_magic_quotes_gpc(); } function mdl_create_table() { foreach ($this->cateStatus as $_key=>$_value) { $_arr_status[] = $_key; } $_str_status = implode("','", $_arr_status); foreach ($this->cateTypes as $_key=>$_value) { $_arr_types[] = $_key; } $_str_types = implode("','", $_arr_types); $_arr_cateCreat = array( "cate_id" => "smallint NOT NULL AUTO_INCREMENT COMMENT 'ID'", "cate_name" => "varchar(300) NOT NULL COMMENT '站点名称'", "cate_domain" => "varchar(3000) NOT NULL COMMENT '绑定域名'", "cate_type" => "enum('" . $_str_types . "') NOT NULL COMMENT '类型'", "cate_tpl" => "varchar(1000) NOT NULL COMMENT '模板'", "cate_content" => "text NOT NULL COMMENT '栏目介绍'", "cate_link" => "varchar(3000) NOT NULL COMMENT '链接地址'", "cate_parent_id" => "smallint NOT NULL COMMENT '父栏目'", "cate_alias" => "varchar(300) NOT NULL COMMENT '别名'", "cate_perpage" => "tinyint NOT NULL COMMENT '每页文章数'", "cate_ftp_host" => "varchar(3000) NOT NULL COMMENT '站点 FTP 服务器'", "cate_ftp_port" => "char(5) NOT NULL COMMENT 'FTP端口'", "cate_ftp_user" => "varchar(300) NOT NULL COMMENT '站点 FTP 用户名'", "cate_ftp_pass" => "varchar(300) NOT NULL COMMENT '站点 FTP 密码'", "cate_ftp_path" => "varchar(3000) NOT NULL COMMENT '站点 FTP 目录'", "cate_status" => "enum('" . $_str_status . "') NOT NULL COMMENT '状态'", "cate_order" => "smallint NOT NULL COMMENT '排序'", ); $_num_mysql = $this->obj_db->create_table(BG_DB_TABLE . "cate", $_arr_cateCreat, "cate_id", "栏目"); if ($_num_mysql > 0) { $_str_alert = "y110105"; //更新成功 } else { $_str_alert = "x110105"; //更新成功 } return array( "alert" => $_str_alert, //更新成功 ); } function mdl_create_index() { $_str_alert = "y110109"; $_arr_indexRow = $this->obj_db->show_index(BG_DB_TABLE . "cate"); $is_exists = false; foreach ($_arr_indexRow as $_key=>$_value) { if (in_array("order", $_value)) { $is_exists = true; break; } } $_arr_cateIndex = array( "cate_order", "cate_id", ); $_num_mysql = $this->obj_db->create_index("order", BG_DB_TABLE . "cate", $_arr_cateIndex, "BTREE", $is_exists); if ($_num_mysql < 1) { $_str_alert = "x110109"; } return array( "alert" => $_str_alert, //更新成功 ); } function mdl_column() { $_arr_colRows = $this->obj_db->show_columns(BG_DB_TABLE . "cate"); foreach ($_arr_colRows as $_key=>$_value) { $_arr_col[] = $_value["Field"]; } return $_arr_col; } function mdl_alert_table() { foreach ($this->cateStatus as $_key=>$_value) { $_arr_status[] = $_key; } $_str_status = implode("','", $_arr_status); foreach ($this->cateTypes as $_key=>$_value) { $_arr_types[] = $_key; } $_str_types = implode("','", $_arr_types); $_arr_col = $this->mdl_column(); $_arr_alert = array(); if (in_array("cate_id", $_arr_col)) { $_arr_alert["cate_id"] = array("CHANGE", "smallint NOT NULL AUTO_INCREMENT COMMENT 'ID'", "cate_id"); } if (in_array("cate_type", $_arr_col)) { $_arr_alert["cate_type"] = array("CHANGE", "enum('" . $_str_types . "') NOT NULL COMMENT '类型'", "cate_type"); } $_arr_cateData = array( "cate_type" => $_arr_types[0], ); $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_cateData, "LENGTH(cate_type) < 1"); //更新数据 if (in_array("cate_parent_id", $_arr_col)) { $_arr_alert["cate_parent_id"] = array("CHANGE", "smallint NOT NULL COMMENT '父栏目'", "cate_parent_id"); } if (in_array("cate_ftp_port", $_arr_col)) { $_arr_alert["cate_ftp_port"] = array("CHANGE", "char(5) NOT NULL COMMENT 'FTP端口'", "cate_ftp_port"); } if (in_array("cate_status", $_arr_col)) { $_arr_alert["cate_status"] = array("CHANGE", "enum('" . $_str_status . "') NOT NULL COMMENT '状态'", "cate_status"); } $_arr_cateData = array( "cate_status" => $_arr_status[0], ); $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_cateData, "LENGTH(cate_status) < 1"); //更新数据 if (in_array("cate_order", $_arr_col)) { $_arr_alert["cate_order"] = array("CHANGE", "smallint NOT NULL COMMENT '排序'", "cate_order"); } if (!in_array("cate_perpage", $_arr_col)) { $_arr_alert["cate_perpage"] = array("ADD", "tinyint NOT NULL COMMENT '每页文章数'"); } $_str_alert = "y110111"; if ($_arr_alert) { $_reselt = $this->obj_db->alert_table(BG_DB_TABLE . "cate", $_arr_alert); if ($_reselt) { $_str_alert = "y110106"; } } return array( "alert" => $_str_alert, ); } function mdl_submit() { $_arr_cateData = array( "cate_name" => $this->cateSubmit["cate_name"], "cate_alias" => $this->cateSubmit["cate_alias"], "cate_type" => $this->cateSubmit["cate_type"], "cate_status" => $this->cateSubmit["cate_status"], "cate_tpl" => $this->cateSubmit["cate_tpl"], "cate_content" => $this->cateSubmit["cate_content"], "cate_link" => $this->cateSubmit["cate_link"], "cate_parent_id" => $this->cateSubmit["cate_parent_id"], "cate_domain" => $this->cateSubmit["cate_domain"], "cate_perpage" => $this->cateSubmit["cate_perpage"], "cate_ftp_host" => $this->cateSubmit["cate_ftp_host"], "cate_ftp_port" => $this->cateSubmit["cate_ftp_port"], "cate_ftp_user" => $this->cateSubmit["cate_ftp_user"], "cate_ftp_pass" => $this->cateSubmit["cate_ftp_pass"], "cate_ftp_path" => $this->cateSubmit["cate_ftp_path"], ); if ($this->cateSubmit["cate_id"] < 1) { //插入 $_num_cateId = $this->obj_db->insert(BG_DB_TABLE . "cate", $_arr_cateData); if ($_num_cateId > 0) { //数据库插入是否成功 $_str_alert = "y110101"; } else { return array( "cate_id" => 0, "alert" => "x110101", ); } } else { $_num_cateId = $this->cateSubmit["cate_id"]; $_num_mysql = $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_cateData, "cate_id=" . $_num_cateId); if ($_num_mysql > 0) { //数据库更新是否成功 $_str_alert = "y110103"; } else { return array( "cate_id" => $_num_cateId, "alert" => "x110103", ); } } return array( "cate_id" => $_num_cateId, "alert" => $_str_alert, ); } /** * mdl_order function. * * @access public * @param string $str_orderType (default: "") * @param int $num_doId (default: 0) * @param int $num_targetId (default: 0) * @return void */ function mdl_order($str_orderType = "", $num_doId = 0, $num_targetId = 0, $num_parentId = 0) { //处理重复排序号 $_str_sqlDistinct = "SELECT cate_id FROM " . BG_DB_TABLE . "cate WHERE cate_order IN (SELECT cate_order FROM " . BG_DB_TABLE . "cate GROUP BY cate_order HAVING COUNT(cate_order) > 1) ORDER BY cate_id DESC" ; $_obj_reselt = $this->obj_db->query($_str_sqlDistinct); $_arr_row = $this->obj_db->fetch_assoc($_obj_reselt); if ($_arr_row) { $_arr_selectData = array( "cate_id", ); $_arr_lastRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_selectData, "", "", "cate_id DESC", 1, 0); //读取倒数第一排序号 if (isset($_arr_lastRows[0])) { $_arr_lastRow = $_arr_lastRows[0]; $_arr_updateData = array( "cate_order" => $_arr_row["cate_id"] + 1, ); $_str_sqlWhere = "cate_id=" . $_arr_row["cate_id"]; $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_updateData, $_str_sqlWhere, true); //所有小于本条大于目标记录的数据排序号加1 } } //end // $_arr_selectData = array( "cate_order", ); switch ($str_orderType) { case "order_first": $_str_sqlWhere = "cate_parent_id=" . $num_parentId; $_arr_firstRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_selectData, $_str_sqlWhere, "", "cate_order ASC", 1, 0); //读取第一排序号 if (isset($_arr_firstRows[0])) { $_arr_firstRow = $_arr_firstRows[0]; } $_str_sqlWhere = "cate_id=" . $num_doId . " AND cate_parent_id=" . $num_parentId; $_arr_doRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_selectData, $_str_sqlWhere, "", "", 1, 0); //读取本条排序号 if (isset($_arr_doRows[0])) { $_arr_doRow = $_arr_doRows[0]; } else { return array( "alert" => "x110217", ); } $_arr_targetData = array( "cate_order" => "cate_order+1", ); $_str_sqlWhere = "cate_order<" . $_arr_doRow["cate_order"] . " AND cate_parent_id=" . $num_parentId; $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_targetData, $_str_sqlWhere, true); //所有小于本条的数据排序号加1 $_arr_doData = array( "cate_order" => $_arr_firstRow["cate_order"], ); $_str_sqlWhere = "cate_id=" . $num_doId . " AND cate_parent_id=" . $num_parentId; $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_doData, $_str_sqlWhere); //更新本条排序号为1 break; case "order_last": $_str_sqlWhere = "cate_parent_id=" . $num_parentId; $_arr_lastRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_selectData, $_str_sqlWhere, "", "cate_order DESC", 1, 0); //读取倒数第一排序号 if (isset($_arr_lastRows[0])) { $_arr_lastRow = $_arr_lastRows[0]; } $_str_sqlWhere = "cate_id=" . $num_doId . " AND cate_parent_id=" . $num_parentId; $_arr_doRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_selectData, $_str_sqlWhere, "", "", 1, 0); //读取本条排序号 if (isset($_arr_doRows[0])) { $_arr_doRow = $_arr_doRows[0]; } else { return array( "alert" => "x110217", ); } $_arr_targetData = array( "cate_order" => "cate_order-1", ); $_str_sqlWhere = "cate_order>" . $_arr_doRow["cate_order"] . " AND cate_parent_id=" . $num_parentId; $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_targetData, $_str_sqlWhere, true); //所有大于本条的数据排序号减1 $_arr_doData = array( "cate_order" => $_arr_lastRow["cate_order"], ); $_str_sqlWhere = "cate_id=" . $num_doId . " AND cate_parent_id=" . $num_parentId; $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_doData, $_str_sqlWhere); //更新本条排序号为最大 break; case "order_after": $_str_sqlWhere = "cate_id=" . $num_targetId . " AND cate_parent_id=" . $num_parentId; $_arr_targetRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_selectData, $_str_sqlWhere, "", "", 1, 0); //读取目标记录排序号 if (isset($_arr_targetRows[0])) { $_arr_targetRow = $_arr_targetRows[0]; } else { return array( "alert" => "x110220", ); } $_str_sqlWhere = "cate_id=" . $num_doId . " AND cate_parent_id=" . $num_parentId; $_arr_doRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_selectData, $_str_sqlWhere, "", "", 1, 0); //读取本条排序号 if (isset($_arr_doRows[0])) { $_arr_doRow = $_arr_doRows[0]; } else { return array( "alert" => "x110217", ); } //print_r($_arr_doRow); if ($_arr_targetRow["cate_order"] > $_arr_doRow["cate_order"]) { //往下移 $_arr_targetData = array( "cate_order" => "cate_order-1", ); $_str_sqlWhere = "cate_order>" . $_arr_doRow["cate_order"] . " AND cate_order<=" . $_arr_targetRow["cate_order"] . " AND cate_parent_id=" . $num_parentId; $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_targetData, $_str_sqlWhere, true); //所有大于本条小于目标记录的数据排序号减1 $_arr_doData = array( "cate_order" => $_arr_targetRow["cate_order"], ); } else { $_arr_targetData = array( "cate_order" => "cate_order+1", ); $_str_sqlWhere = "cate_order<" . $_arr_doRow["cate_order"] . " AND cate_order>" . $_arr_targetRow["cate_order"] . " AND cate_parent_id=" . $num_parentId; $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_targetData, $_str_sqlWhere, true); //所有大于本条小于目标记录的数据排序号减1 $_arr_doData = array( "cate_order" => $_arr_targetRow["cate_order"] + 1, ); } $_str_sqlWhere = "cate_id=" . $num_doId . " AND cate_parent_id=" . $num_parentId; $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_doData, $_str_sqlWhere); //更新本条排序号为目标记录排序号 break; } return array( "alert" => "y110103", ); } /** * mdl_read function. * * @access public * @param mixed $str_cate * @param string $str_readBy (default: "cate_id") * @param int $num_notThisId (default: 0) * @param int $num_parentId (default: 0) * @return void */ function mdl_read($str_cate, $str_readBy = "cate_id", $num_notThisId = 0, $num_parentId = -1) { $_arr_cateSelect = array( "cate_id", "cate_name", "cate_alias", "cate_type", "cate_tpl", "cate_content", "cate_link", "cate_parent_id", "cate_domain", "cate_perpage", "cate_ftp_host", "cate_ftp_port", "cate_ftp_user", "cate_ftp_pass", "cate_ftp_path", "cate_status", ); switch ($str_readBy) { case "cate_id": $_str_sqlWhere = $str_readBy . "=" . $str_cate; break; default: $_str_sqlWhere = $str_readBy . "='" . $str_cate . "'"; break; } if ($num_notThisId > 0) { $_str_sqlWhere .= " AND cate_id<>" . $num_notThisId; } if ($num_parentId >= 0) { $_str_sqlWhere .= " AND cate_parent_id=" . $num_parentId; } $_arr_cateRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_cateSelect, $_str_sqlWhere, "", "", 1, 0); //检查本地表是否存在记录 if (isset($_arr_cateRows[0])) { $_arr_cateRow = $_arr_cateRows[0]; } else { return array( "alert" => "x110102", //不存在记录 ); } //if (!$this->is_magic) { $_arr_cateRow["cate_content"] = stripslashes($_arr_cateRow["cate_content"]); //} $_arr_cateRow["cate_trees"] = $this->trees_process($_arr_cateRow["cate_id"]); ksort($_arr_cateRow["cate_trees"]); $_arr_cateRow["urlRow"] = $this->url_process($_arr_cateRow); $_arr_cateRow["alert"] = "y110102"; return $_arr_cateRow; } function mdl_readPub($str_cate, $str_readBy = "cate_id", $num_notThisId = 0, $num_parentId = 0) { $_arr_cateSelect = array( "cate_id", "cate_name", "cate_alias", "cate_type", "cate_tpl", "cate_content", "cate_link", "cate_parent_id", "cate_domain", "cate_status", "cate_perpage", ); switch ($str_readBy) { case "cate_id": $_str_sqlWhere = $str_readBy . "=" . $str_cate; break; default: $_str_sqlWhere = $str_readBy . "='" . $str_cate . "'"; break; } if ($num_notThisId > 0) { $_str_sqlWhere .= " AND cate_id<>" . $num_notThisId; } if ($num_parentId > 0) { $_str_sqlWhere .= " AND cate_parent_id=" . $num_parentId; } $_arr_cateRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_cateSelect, $_str_sqlWhere, "", "", 1, 0); //检查本地表是否存在记录 if (isset($_arr_cateRows[0])) { $_arr_cateRow = $_arr_cateRows[0]; } else { return array( "alert" => "x110102", //不存在记录 ); } //if (!$this->is_magic) { $_arr_cateRow["cate_content"] = stripslashes($_arr_cateRow["cate_content"]); //} $_arr_cateRow["cate_trees"] = $this->trees_process($_arr_cateRow["cate_id"]); ksort($_arr_cateRow["cate_trees"]); $_arr_cateRow["urlRow"] = $this->url_process($_arr_cateRow); $_arr_cateRow["alert"] = "y110102"; return $_arr_cateRow; } /** * mdl_list function. * * @access public * @param string $str_status (default: "") * @param string $str_type (default: "") * @param int $num_parentId (default: 0) * @return void */ function mdl_list($num_no, $num_except = 0, $arr_search = array(), $num_level = 1) { $_arr_updateData = array( "cate_order" => "cate_id", ); $_num_mysql = $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_updateData, "cate_order=0", true); //更新数据 $_arr_cateSelect = array( "cate_id", "cate_name", "cate_link", "cate_alias", "cate_status", "cate_type", "cate_parent_id", "cate_domain", ); $_str_sqlWhere = $this->sql_process($arr_search); $_arr_cateRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_cateSelect, $_str_sqlWhere, "", "cate_order ASC, cate_id ASC", $num_no, $num_except); //print_r($_arr_cateRows); foreach ($_arr_cateRows as $_key=>$_value) { $_value["cate_trees"] = $this->trees_process($_value["cate_id"]); ksort($_value["cate_trees"]); $_arr_cateRows[$_key]["urlRow"] = $this->url_process($_value); $_arr_cateRows[$_key]["cate_level"] = $num_level; $arr_search["parent_id"] = $_value["cate_id"]; $_arr_cateRows[$_key]["cate_childs"] = $this->mdl_list(1000, 0, $arr_search, $num_level + 1); } return $_arr_cateRows; } /** * mdl_count function. * * @access public * @param string $str_status (default: "") * @param string $str_type (default: "") * @param int $num_parentId (default: 0) * @return void */ function mdl_count($arr_search = array()) { $_str_sqlWhere = $this->sql_process($arr_search); $_num_cateCount = $this->obj_db->count(BG_DB_TABLE . "cate", $_str_sqlWhere); //查询数据 /*print_r($_arr_userRow); exit;*/ return $_num_cateCount; } function mdl_ids($num_cateId) { $_arr_cateRows = $this->mdl_list(1000, 0, "show", "", false, $num_cateId); $_arr_cateIds = $this->ids_process($_arr_cateRows); $_arr_cateIds[] = $num_cateId; return array_unique($_arr_cateIds); } function mdl_list_ids() { $_arr_cateSelect = array( "cate_id", ); $_str_sqlWhere = "1=1"; $_arr_cateRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_cateSelect, $_str_sqlWhere, "", "cate_id ASC", 1000, 0); foreach ($_arr_cateRows as $_key=>$_value) { $_arr_list_id[] = $_value["cate_id"]; } return $_arr_list_id; } /** * mdl_status function. * * @access public * @param mixed $this->cateIds["cate_ids"] * @param mixed $str_status * @return void */ function mdl_status($str_status) { $_str_cateId = implode(",", $this->cateIds["cate_ids"]); $_arr_cateData = array( "cate_status" => $str_status, ); $_num_mysql = $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_cateData, "cate_id IN (" . $_str_cateId . ")"); //更新数据 //如车影响行数小于0则返回错误 if ($_num_mysql > 0) { $_str_alert = "y110103"; } else { $_str_alert = "x110103"; } return array( "alert" => $_str_alert, ); //成功 } /** * mdl_del function. * * @access public * @return void */ function mdl_del() { $_str_cateId = implode(",", $this->cateIds["cate_ids"]); $_num_mysql = $this->obj_db->delete(BG_DB_TABLE . "cate", "cate_id IN (" . $_str_cateId . ")"); //删除数据 //如车影响行数小于0则返回错误 if ($_num_mysql > 0) { $_str_alert = "y110104"; $_arr_cateData = array( "cate_parent_id" => 0 ); $this->obj_db->update(BG_DB_TABLE . "cate", $_arr_cateData, "cate_parent_id IN (" . $_str_cateId . ")"); //更新数据 $_arr_articleData = array( "article_cate_id" => -1 ); $this->obj_db->update(BG_DB_TABLE . "article", $_arr_articleData, "article_cate_id IN (" . $_str_cateId . ")"); //更新数据 $this->obj_db->delete(BG_DB_TABLE . "cate_belong", "belong_cate_id IN (" . $_str_cateId . ")"); //更新数据 } else { $_str_alert = "x110104"; } return array( "alert" => $_str_alert, ); //成功 } /** * cache_generate function. * * @access public * @return void */ function mdl_cache($is_reGen = false, $num_cateId = false) { $_arr_cacheReturn = array(); if ($is_reGen || !file_exists(BG_PATH_CACHE . "sys/cate_trees.php")) { $_arr_cateRows = $this->mdl_list(1000, 0, "show"); $_str_outPut = "<?php" . PHP_EOL; $_str_outPut .= "return array(" . PHP_EOL; $_str_outPut .= $this->cache_tree_process($_arr_cateRows); $_str_outPut .= ");"; $_num_size = $this->obj_dir->put_file(BG_PATH_CACHE . "sys/", "cate_trees.php", $_str_outPut); } if ($is_reGen) { $arr_cateIds = $this->mdl_list_ids(); foreach ($arr_cateIds as $_key=>$_value) { $_str_outPut = $this->cache_row_process($_value); $_num_size = $this->obj_dir->put_file(BG_PATH_CACHE . "sys/", "cate_" . $_value . ".php", $_str_outPut); } } if ($num_cateId) { if (!file_exists(BG_PATH_CACHE . "sys/cate_" . $num_cateId . ".php")) { $_str_outPut = $this->cache_row_process($num_cateId); $_num_size = $this->obj_dir->put_file(BG_PATH_CACHE . "sys/", "cate_" . $num_cateId . ".php", $_str_outPut); } $_arr_cacheReturn = include_once(BG_PATH_CACHE . "sys/cate_" . $num_cateId . ".php"); } else { $_arr_cacheReturn = include_once(BG_PATH_CACHE . "sys/cate_trees.php"); } return $_arr_cacheReturn; } function mdl_cache_del($arr_cateDels) { foreach ($arr_cateDels as $_key=>$_value) { if (file_exists(BG_PATH_CACHE . "sys/cate_" . $_value . ".php")) { unlink(BG_PATH_CACHE . "sys/cate_" . $_value . ".php"); } } } /** * input_submit function. * * @access public * @return void */ function input_submit() { if (!fn_token("chk")) { //令牌 return array( "alert" => "x030206", ); } $this->cateSubmit["cate_id"] = fn_getSafe(fn_post("cate_id"), "int", 0); if ($this->cateSubmit["cate_id"] > 0) { $_arr_cateRow = $this->mdl_read($this->cateSubmit["cate_id"]); if ($_arr_cateRow["alert"] != "y110102") { return $_arr_cateRow; } } $_arr_cateName = validateStr(fn_post("cate_name"), 1, 300); switch ($_arr_cateName["status"]) { case "too_short": return array( "alert" => "x110201", ); break; case "too_long": return array( "alert" => "x110202", ); break; case "ok": $this->cateSubmit["cate_name"] = $_arr_cateName["str"]; break; } $_arr_cateParentId = validateStr(fn_post("cate_parent_id"), 1, 0); switch ($_arr_cateParentId["status"]) { case "too_short": return array( "alert" => "x110213", ); break; case "ok": $this->cateSubmit["cate_parent_id"] = $_arr_cateParentId["str"]; break; } if ($this->cateSubmit["cate_parent_id"] > 0 && $this->cateSubmit["cate_parent_id"] == $this->cateSubmit["cate_id"]) { return array( "alert" => "x110221", ); } $_arr_cateRow = $this->mdl_read($this->cateSubmit["cate_name"], "cate_name", $this->cateSubmit["cate_id"], $this->cateSubmit["cate_parent_id"]); if ($_arr_cateRow["alert"] == "y110102") { return array( "alert" => "x110203", ); } $_arr_cateAlias = validateStr(fn_post("cate_alias"), 0, 300, "str", "alphabetDigit"); switch ($_arr_cateAlias["status"]) { case "too_long": return array( "alert" => "x110204", ); break; case "format_err": return array( "alert" => "x110205", ); break; case "ok": $this->cateSubmit["cate_alias"] = $_arr_cateAlias["str"]; break; } if ($this->cateSubmit["cate_alias"]) { $_arr_cateRow = $this->mdl_read($this->cateSubmit["cate_alias"], "cate_alias", $this->cateSubmit["cate_id"], $this->cateSubmit["cate_parent_id"]); if ($_arr_cateRow["alert"] == "y110102") { return array( "alert" => "x110206", ); } } $_arr_cateLink = validateStr(fn_post("cate_link"), 0, 3000); switch ($_arr_cateLink["status"]) { case "too_long": return array( "alert" => "x110211", ); break; case "ok": $this->cateSubmit["cate_link"] = $_arr_cateLink["str"]; break; } $_arr_cateTpl = validateStr(fn_post("cate_tpl"), 1, 0); switch ($_arr_cateTpl["status"]) { case "too_short": return array( "alert" => "x110214", ); break; case "ok": $this->cateSubmit["cate_tpl"] = $_arr_cateTpl["str"]; break; } $_arr_cateType = validateStr(fn_post("cate_type"), 1, 0); switch ($_arr_cateType["status"]) { case "too_short": return array( "alert" => "x110215", ); break; case "ok": $this->cateSubmit["cate_type"] = $_arr_cateType["str"]; break; } $_arr_cateStatus = validateStr(fn_post("cate_status"), 1, 0); switch ($_arr_cateStatus["status"]) { case "too_short": return array( "alert" => "x110216", ); break; case "ok": $this->cateSubmit["cate_status"] = $_arr_cateStatus["str"]; break; } $_arr_cateDomain = validateStr(fn_post("cate_domain"), 0, 3000); switch ($_arr_cateDomain["status"]) { case "too_long": return array( "alert" => "x110207", ); break; case "format_err": return array( "alert" => "x110208", ); break; case "ok": $this->cateSubmit["cate_domain"] = $_arr_cateDomain["str"]; break; } $this->cateSubmit["cate_content"] = fn_post("cate_content"); if (!$this->is_magic) { $this->cateSubmit["cate_content"] = addslashes($this->cateSubmit["cate_content"]); } $this->cateSubmit["cate_perpage"] = fn_getSafe(fn_post("cate_perpage"), "int", BG_SITE_PERPAGE); $this->cateSubmit["cate_ftp_host"] = fn_getSafe(fn_post("cate_ftp_host"), "txt", ""); $this->cateSubmit["cate_ftp_port"] = fn_getSafe(fn_post("cate_ftp_port"), "txt", ""); $this->cateSubmit["cate_ftp_user"] = fn_getSafe(fn_post("cate_ftp_user"), "txt", ""); $this->cateSubmit["cate_ftp_pass"] = fn_getSafe(fn_post("cate_ftp_pass"), "txt", ""); $this->cateSubmit["cate_ftp_path"] = fn_getSafe(fn_post("cate_ftp_path"), "txt", ""); $this->cateSubmit["alert"] = "ok"; return $this->cateSubmit; } /** * input_ids function. * * @access public * @return void */ function input_ids() { if (!fn_token("chk")) { //令牌 return array( "alert" => "x030206", ); } $_arr_cateIds = fn_post("cate_ids"); if ($_arr_cateIds) { foreach ($_arr_cateIds as $_key=>$_value) { $_arr_cateIds[$_key] = fn_getSafe($_value, "int", 0); } $_str_alert = "ok"; } else { $_str_alert = "x030202"; } $this->cateIds = array( "alert" => $_str_alert, "cate_ids" => $_arr_cateIds ); return $this->cateIds; } private function db_read($_num_cateId) { $_arr_cateSelect = array( "cate_id", "cate_name", "cate_alias", "cate_type", "cate_tpl", "cate_content", "cate_link", "cate_parent_id", "cate_domain", "cate_status", ); $_str_sqlWhere = "cate_id=" . $_num_cateId; $_arr_cateRows = $this->obj_db->select(BG_DB_TABLE . "cate", $_arr_cateSelect, $_str_sqlWhere, "", "", 1, 0); //检查本地表是否存在记录 if (isset($_arr_cateRows[0])) { $_arr_cateRow = $_arr_cateRows[0]; } else { return array( "alert" => "x110102", //不存在记录 ); } //if (!$this->is_magic) { $_arr_cateRow["cate_content"] = stripslashes($_arr_cateRow["cate_content"]); //} $_arr_cateRow["alert"] = "y110102"; return $_arr_cateRow; } private function url_process($_arr_cateRow) { $_str_cateUrlParent = ""; if ($_arr_cateRow["cate_type"] == "link" && $_arr_cateRow["cate_link"]) { $_str_cateUrl = $_arr_cateRow["cate_link"]; } else { switch (BG_VISIT_TYPE) { case "static": foreach ($_arr_cateRow["cate_trees"] as $_key_tree=>$_value_tree) { if ($_value_tree["cate_alias"]) { $_str_cateUrlParent .= $_value_tree["cate_alias"] . "/"; } else { $_str_cateUrlParent .= $_value_tree["cate_id"] . "/"; } } if ($_arr_cateRow["cate_trees"][0]["cate_domain"]) { $_str_urlPrefix = $_arr_cateRow["cate_domain"] . "/"; } else { $_str_urlPrefix = BG_URL_ROOT; } $_str_cateUrl = $_str_urlPrefix . "cate/" . $_str_cateUrlParent; $_str_pageAttach = "page-"; break; case "pstatic": foreach ($_arr_cateRow["cate_trees"] as $_key_tree=>$_value_tree) { if ($_value_tree["cate_alias"]) { $_str_cateUrlParent .= $_value_tree["cate_alias"] . "/"; } else { $_str_cateUrlParent .= $_value_tree["cate_id"] . "/"; } } if ($_arr_cateRow["cate_trees"][0]["cate_domain"]) { $_str_urlPrefix = $_arr_cateRow["cate_domain"] . "/"; } else { $_str_urlPrefix = BG_URL_ROOT; } $_str_cateUrl = $_str_urlPrefix . "cate/" . $_str_cateUrlParent . "id-" . $_arr_cateRow["cate_id"] . "/"; $_str_pageAttach = "page-"; break; default: if ($_arr_cateRow["cate_trees"][0]["cate_domain"]) { $_str_urlPrefix = $_arr_cateRow["cate_domain"] . "/"; } else { $_str_urlPrefix = BG_URL_ROOT; } $_str_cateUrl = $_str_urlPrefix . "index.php?mod=cate&act_get=show&cate_id=" . $_arr_cateRow["cate_id"]; $_str_pageAttach = "&page="; break; } } return array( "cate_url" => $_str_cateUrl, "page_attach" => $_str_pageAttach, ); } private function ids_process($_arr_cateRows) { $_arr_ids = array(); foreach ($_arr_cateRows as $_key=>$_value) { if ($_value["cate_id"] > 0) { $_arr_ids[] = $_value["cate_id"]; } if ($_value["cate_childs"]) { $_arr_cate = $this->ids_process($_value["cate_childs"]); $_arr_ids = array_merge($_arr_cate, $_arr_ids); } } return $_arr_ids; } private function trees_process($_num_cateId) { $_arr_cateTrees = array(); $_arr_cateRow = $this->db_read($_num_cateId); $_arr_cateTrees[] = $_arr_cateRow; if ($_arr_cateRow["cate_parent_id"] > 0 && $_arr_cateRow["cate_parent_id"] != $_arr_cateRow["cate_id"]) { $_arr_cate = $this->trees_process($_arr_cateRow["cate_parent_id"]); $_arr_cateTrees = array_merge($_arr_cate, $_arr_cateTrees); } return $_arr_cateTrees; } private function cache_row_process($num_cateId) { $_str_outPut = "<?php" . PHP_EOL; $_str_outPut .= "return array(" . PHP_EOL; $_arr_cateRow = $this->mdl_readPub($num_cateId); print_r($_arr_cateRow); $_str_outPut .= "\"alert\" => \"" . $_arr_cateRow["alert"] . "\"," . PHP_EOL; if ($_arr_cateRow["alert"] == "y110102" && $_arr_cateRow["cate_status"] == "show") { $_str_outPut .= "\"cate_id\" => " . $_arr_cateRow["cate_id"] . "," . PHP_EOL; $_str_outPut .= "\"cate_name\" => \"" . $_arr_cateRow["cate_name"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_alias\" => \"" . $_arr_cateRow["cate_alias"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_parent_id\" => " . $_arr_cateRow["cate_parent_id"] . "," . PHP_EOL; $_str_outPut .= "\"cate_perpage\" => " . $_arr_cateRow["cate_perpage"] . "," . PHP_EOL; $_str_outPut .= "\"cate_domain\" => \"" . $_arr_cateRow["cate_domain"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_status\" => \"" . $_arr_cateRow["cate_status"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_type\" => \"" . $_arr_cateRow["cate_type"] . "\"," . PHP_EOL; $_str_tplDo = $this->tpl_process($_arr_cateRow["cate_id"]); $_str_outPut .= "\"cate_tplDo\" => \"" . $_str_tplDo . "\"," . PHP_EOL; //if (!$this->is_magic) { $_arr_cateRow["cate_content"] = addslashes($_arr_cateRow["cate_content"]); //} $_str_outPut .= "\"cate_content\" => \"" . $_arr_cateRow["cate_content"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_ids\" => array(" . PHP_EOL; $_arr_ids = $this->mdl_ids($_arr_cateRow["cate_id"]); $_arr_ids[] = $_arr_cateRow["cate_id"]; $_arr_ids = array_unique($_arr_ids); foreach ($_arr_ids as $_key_ids=>$_value_ids) { $_str_outPut .= $_value_ids . "," . PHP_EOL; } $_str_outPut .= ")," . PHP_EOL; $_str_outPut .= "\"urlRow\" => array(" . PHP_EOL; $_str_outPut .= "\"cate_url\" => \"" . $_arr_cateRow["urlRow"]["cate_url"] . "\"," . PHP_EOL; $_str_outPut .= "\"page_attach\" => \"" . $_arr_cateRow["urlRow"]["page_attach"] . "\"," . PHP_EOL; $_str_outPut .= ")," . PHP_EOL; if (is_array($_arr_cateRow["cate_trees"])) { $_str_outPut .= "\"cate_trees\" => array(" . PHP_EOL; foreach ($_arr_cateRow["cate_trees"] as $_key_tree=>$_value_tree) { $_arr_cate = $this->mdl_readPub($_value_tree["cate_id"]); $_str_outPut .= $_key_tree . " => array(" . PHP_EOL; if ($_arr_cate["alert"] == "y110102" && $_arr_cate["cate_status"] == "show") { //$_arr_cateRow["cate_trees"][$_key_tree]["urlRow"] = $_arr_cate["urlRow"]; $_str_outPut .= "\"cate_id\" => " . $_arr_cate["cate_id"] . "," . PHP_EOL; $_str_outPut .= "\"cate_name\" => \"" . $_arr_cate["cate_name"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_alias\" => \"" . $_arr_cate["cate_alias"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_domain\" => \"" . $_arr_cate["cate_domain"] . "\"," . PHP_EOL; $_str_outPut .= "\"urlRow\" => array(" . PHP_EOL; $_str_outPut .= "\"cate_url\" => \"" . $_arr_cate["urlRow"]["cate_url"] . "\"," . PHP_EOL; $_str_outPut .= "\"page_attach\" => \"" . $_arr_cate["urlRow"]["page_attach"] . "\"," . PHP_EOL; $_str_outPut .= ")," . PHP_EOL; } $_str_outPut .= ")," . PHP_EOL; } $_str_outPut .= ")," . PHP_EOL; } } $_str_outPut .= ");"; return $_str_outPut; } private function cache_tree_process($_arr_cateRows) { $_str_outPut = ""; foreach ($_arr_cateRows as $_key=>$_value) { $_str_outPut .= $_value["cate_id"] . " => array(" . PHP_EOL; $_str_outPut .= "\"cate_id\" => " . $_value["cate_id"] . "," . PHP_EOL; $_str_outPut .= "\"cate_name\" => \"" . $_value["cate_name"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_alias\" => \"" . $_value["cate_alias"] . "\"," . PHP_EOL; $_str_outPut .= "\"cate_parent_id\" => " . $_value["cate_parent_id"] . "," . PHP_EOL; $_str_outPut .= "\"urlRow\" => array(" . PHP_EOL; $_str_outPut .= "\"cate_url\" => \"" . $_value["urlRow"]["cate_url"] . "\"," . PHP_EOL; $_str_outPut .= "\"page_attach\" => \"" . $_value["urlRow"]["page_attach"] . "\"," . PHP_EOL; $_str_outPut .= ")," . PHP_EOL; if ($_value["cate_childs"]) { $_str_childs = $this->cache_tree_process($_value["cate_childs"]); $_str_outPut .= "\"cate_childs\" => array(" . PHP_EOL; $_str_outPut .= $_str_childs . PHP_EOL; $_str_outPut .= ")," . PHP_EOL; } $_str_outPut .= ")," . PHP_EOL; } return $_str_outPut; } function tpl_process($num_cateId) { if(defined("BG_SITE_TPL")) { $_str_tpl = BG_SITE_TPL; } else { $_str_tpl = "default"; } $_arr_cateRow = $this->mdl_readPub($num_cateId); if ($_arr_cateRow["alert"] == "y110102" && $_arr_cateRow["cate_status"] == "show") { $_str_cateTpl = $_arr_cateRow["cate_tpl"]; if ($_str_cateTpl == "inherit" && $_arr_cateRow["cate_parent_id"] > 0) { $_str_cateTpl = $this->tpl_process($_arr_cateRow["cate_parent_id"]); } } else { $_str_cateTpl = BG_SITE_TPL; } if ($_str_cateTpl == "inherit") { $_str_cateTpl = $_str_tpl; } else { $_str_cateTpl = $_str_cateTpl; } if (!$_str_cateTpl) { $_str_cateTpl = $_str_tpl; } return $_str_cateTpl; } private function sql_process($arr_search = array()) { if (!isset($arr_search["parent_id"])) { $_str_sqlWhere = "cate_parent_id=0"; } else { $_str_sqlWhere = "cate_parent_id=" . $arr_search["parent_id"]; } if (isset($arr_search["status"]) && $arr_search["status"]) { $_str_sqlWhere .= " AND cate_status='" . $arr_search["status"] . "'"; } if (isset($arr_search["type"]) && $arr_search["type"]) { $_str_sqlWhere .= " AND cate_type='" . $arr_search["type"] . "'"; } if (isset($arr_search["excepts"]) && $arr_search["excepts"]) { $_str_excepts = implode(",", $arr_search["excepts"]); $_str_sqlWhere .= " AND cate_id NOT IN (" . $_str_excepts . ")"; } return $_str_sqlWhere; } }