qa-ifish7/web/Application/Admin/Controller/CatController.class.php

295 lines
11 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Admin\Controller;
use Think\Controller;
class CatController extends AdminController{
public function __construct(){
parent::__construct();
$this->table=D("Cat");
$this->modelid=I("modelid",0,"int");
$this->model=M("model")->find($this->modelid);
$this->modelList=M("model")->where(array("status"=>1))->order("sort asc,modelid desc")->select();
$this->catModelform=APP_PATH.'Data/modelTemp/'.$this->modelid."_cat.php";
//列表模板
$where[type]="list";
if($this->admin_lang){
$where["lang"]=$this->admin_lang;
}
$this->listtemp=M("template")->where($where)->order("sort asc,template_id desc")->select();
//内容模板
$where[type]="view";
if($this->admin_lang){
$where["lang"]=$this->admin_lang;
}
$this->viewtemp=M("template")->where($where)->order("sort asc,template_id desc")->select();
//排序选项
$this->orderInc=array(
"sort asc,newstime desc"=>"默认排序",
"newstime desc"=>"按发布时间降序排序",
"id desc"=>"按ID降序排序",
"views desc"=>"按点击率降序排序",
);
//角色列表
$this->roleInc=M("role")->order('id desc')->select();
//会员组列表
$this->memberGroupInc=M("member_group")->order("group_id asc")->select();
}
//栏目分类
public function getCat($pid){
$catstr=$this->forCat($pid);
return $catstr;
}
protected function forCat($pid=0,$str=""){
$where["pid"]=$pid?$pid:0;
$where["status"]=1;
if($this->admin_lang){
$where["lang"]=$this->admin_lang;
}
$cat=M("cat")->where($where)->order("sort asc")->select();
if(count($cat)>0){
foreach($cat as $v){
if(!check_user_cat("info_view",$v[catid])){
continue;
}
$nbsp_str="";
for($i=1;$i<$v[level];$i++){
$nbsp_str.="&nbsp;&nbsp;";
}
if($this->catid&&$this->catid==$v[catid]){
$this_selected="selected";
}else{
$this_selected="";
}
$str.="<option value='{$v[catid]}' ".$this_selected.">{$nbsp_str}|-{$v[name]}</option>";
$str=$this->forCat($v[catid],$str);
}
return $str;
}else{
return $str;
}
}
//返回的是一个数组
public function forCat2($pid=0,$str=array()){
$where["pid"]=$pid;
if($this->modelid){
$where["modelid"]=$this->modelid;
}
$where["status"]=1;
if($this->admin_lang){
$where["lang"]=$this->admin_lang;
}
$cat=M("cat")->field("catid,level,name,modelid,status,sort,pid")->where($where)->order("sort asc,catid desc")->select();
if(count($cat)>0){
foreach($cat as $v){
if(!check_user_cat("info_view",$v[catid])){
continue;
}
$nbsp_str="";
for($i=1;$i<$v[level];$i++){
$nbsp_str.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
}
if($this->catid&&$this->catid==$v[catid]){
$this_selected="selected";
}else{
$this_selected="";
}
$str1=array();
$str1=$v;
$str1["str"]=$nbsp_str."|-";
$str[]=$str1;
$str=$this->forCat2($v[catid],$str);
}
return $str;
}else{
return $str;
}
}
//返回的是一个数组,显示所有栏目
public function forCat3($pid=0,$str=array()){
$where["pid"]=$pid;
if($this->modelid){
$where["modelid"]=$this->modelid;
}
$where["status"]=1;
if($this->admin_lang){
$where["lang"]=$this->admin_lang;
}
$cat=M("cat")->field("catid,level,name,modelid,status,sort,pid")->where($where)->order("sort asc,catid desc")->select();
if(count($cat)>0){
foreach($cat as $v){
if(!check_user_cat("info_view",$v[catid])){
continue;
}
$nbsp_str="";
for($i=1;$i<$v[level];$i++){
$nbsp_str.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
}
if($this->catid&&$this->catid==$v[catid]){
$this_selected="selected";
}else{
$this_selected="";
}
$str1=array();
$str1=$v;
$str1["str"]=$nbsp_str."|-";
$str[]=$str1;
$str=$this->forCat3($v[catid],$str);
}
return $str;
}else{
return $str;
}
}
public function index(){
$pid=I("get.pid");
$p=$this->table->find($pid);
$ptitle=$p[name]?$p[name]:$this->model[name];
$where["pid"]=$pid;
$where["modelid"]=$this->modelid;
if($this->admin_lang){
$where["lang"]=$this->admin_lang;
}
$data=$this->table->where($where)->order('sort asc')->select();
$this->assign("pid",$pid);
$this->assign("ppid",$p[pid]);
$this->assign("ptitle",$ptitle);
$this->assign("data",$data);
$this->display();
}
public function validate_model($modelid){
$modelinfo=M("model")->find($modelid);
if(!$modelinfo){
return false;
}else{
return true;
}
}
//添加
public function add(){
if(IS_POST){
$data=$this->table->relation(true)->create();
if(!$this->validate_model($data[modelid])){
$this->error("请选择栏目模型!");
}
if (!$data){//验证
$this->error($this->table->relation(true)->getError());
}
//数据添加
$result=$this->table->data_add();
if(!$result){
$this->error($this->table->getError());
}
D("UserLog")->add("add",$this->table->getTableName(),$result[catid]);
//更新缓存
$this->table->updateCache();
$this->success($data);
}else{
$pid=I("get.pid");
$this->parentinfo=$this->table->find($pid);
//获取最大的排序
$sort=$this->table->where(array("pid"=>$pid))->max('sort');
$sort=$sort+10;
$this->pagetitle="添加栏目";
$this->catid=$pid;
$this->cat=$this->getCat();
//默认路径
if($this->parentinfo["classpath"]){
$this->defaultPath=$this->parentinfo["classpath"]."path_".rand(1000,9999)."/";
}else{
$this->defaultPath="/path_".rand(1000,9999)."/";
}
//
$this->pubid=make_pubid();
$this->assign("sort",$sort);
$this->assign("pid",$pid);
$this->display();
}
}
public function editor(){
if(IS_POST){
$data=$this->table->create();
if(!$this->validate_model($data[modelid])){
$this->error("请选择栏目模型!");
}
if (!$data){//验证
$this->error($this->table->getError());
}
$result=$this->table->data_editor();
if(!$result){
$this->error($this->table->getError());
}
D("UserLog")->add("update",$this->table->getTableName(),$result[catid]);
//更新缓存
$this->table->updateCache();
$this->success($data);
}else{
//获取最大的排序
$catid=I("get.catid");
$r=$this->table->relation(true)->find($catid);
//副表数据合并
if($r["cat_data"]){
$newdata=array_merge($r,$r["cat_data"]);
unset($newdata["cat_data"]);
$r=$newdata;
}
$this->catid=$r[pid];
$this->cat=$this->getCat();
$this->pagetitle="修改栏目";
$this->assign("r",$r);
$this->display();
}
}
//删除
public function delete(){
$catid=I("catid",0,'intval');
$count=$this->table->where(array("pid"=>$catid))->count();
if($count>0){
$this->error("该节点下有子节点,如要删除请先删除子节点");
}else{
//找出父栏目catid
$r=$this->table->find($catid);
$result=$this->table->relation(true)->delete($catid);
D("UserLog")->add("delete",$this->table->getTableName(),$catid);
//更新所有父级的son_catids字段
$arrid_str_arr=explode("|",$r[parent_catids]);
foreach($arrid_str_arr as $catid_val){
if($catid_val){
$this->table->updateSon_catids($catid_val);
}
}
//如果存在父栏目id
//并且在删除当前子栏目的同时未发现其它子栏目那么把父栏目的is_last变成1因为父栏目已经绝后了
if($result&&$r[pid]){
$this->table->updateCatIslast($r[pid]);
}
//更新缓存
$this->table->updateCache();
if($result){
$this->success("删除成功");
}else{
$this->error("删除失败");
}
}
}
//字段排序
public function sort(){
$catids=I("catids");
$sort=I("sort");
foreach($catids as $key=>$catid){
$data['catid']=(int)$catid;
$data['sort']=(int)$sort[$key];
$this->table->save($data);
}
$this->success("排序更改成功");
}
//字段排序
public function showCat(){
$pid=I("get.pid");
$this->data=$this->forCat3($pid);
$this->assign("pagetitle","栏目管理");
$this->assign("ptitle","栏目管理");
$this->assign("pid",$pid);
$this->display();
}
}