module as $rw){ if($rw['type']==1 && $rw['status']==1){ $data['module'][$rw['id']] = $rw; } } $this->module=$data['module']; $this->assign($data); unset($data); $this->dao = db('category'); $this->groupId = Db::name('admin')->where('admin_id',session('aid'))->value('group_id'); } public function index() { if ($this->categorys) { foreach ($this->categorys as $r) { if(session('aid')==1){ if ($r['module'] == 'page') { $r['str_manage'] = ' | '; } else { $r['str_manage'] = ''; } $r['str_manage'] .= ' | | '; $r['modulename'] = $this->module[$r['moduleid']]['title']; $r['dis'] = $r['ismenu'] == 1 ? '显示' : '不显示'; $array[] = $r; }else{ $groupArr = explode(',',$r['readgroup']); if(in_array($this->groupId,$groupArr)){ if ($r['module'] == 'page') { $r['str_manage'] = ' | '; } else { $r['str_manage'] = ''; } $r['str_manage'] .= ' | | '; $r['modulename'] = $this->module[$r['moduleid']]['title']; $r['dis'] = $r['ismenu'] == 1 ? '显示' : '不显示'; $array[] = $r; } } } $str = "\$id"; $str .= "\$spacer\$catname  "; $str .= "\$modulename\$dis"; $str .= "\$str_manage"; $tree = new Tree ($array); $tree->icon = array('   │ ', '   ├─ ', '   └─ '); $tree->nbsp = '   '; $categorys = $tree->get_tree(0, $str); $this->assign('categorys', $categorys); } $this->assign('title','栏目列表'); return $this->fetch(); } public function add(){ $pid = input('param.pid'); //模型列表 $module = db('module')->where('status',1)->field('id,title,name')->select(); $this->assign('modulelist',$module); //父级模型ID //父级模型ID if($pid){ $vo['moduleid'] =$this->categorys[$pid]['moduleid']; $this->assign('module', $vo); } //栏目选择列表 foreach($this->categorys as $r) { $array[] = $r; } $str = ""; $tree = new Tree ($array); $categorys = $tree->get_tree(0, $str,$pid); $this->assign('categorys', $categorys); //模版 $templates= template_file(); $this->assign ( 'templates',$templates ); //管理员权限组 $usergroup=db('auth_group')->select(); $this->assign('rlist',$usergroup); $this->assign('title','添加栏目'); return $this->fetch(); } public function insert(){ $data = $data = Request::except('file'); if(!empty($data['readgroup'])){ $data['readgroup'] = implode(',',$data['readgroup']); }else{ $data['readgroup'] = $this->groupId; } $data['module'] = $this->module[$data['moduleid']]['name']; $data['child'] = isset($data['child'])?1:0; $id = db('category')->insertGetId($data); if($id) { if($data['module']=='page'){ $data2['id']=$id; if($data['title']==''){ $data2['title'] = $data['catname']; $data2['content'] = ''; } $page=db('page'); $page->insert($data2); } $this->repair(); $this->repair(); savecache('Category'); $result['msg'] = '栏目添加成功!'; cache('cate', NULL); $result['url'] = url('index'); $result['code'] = 1; return $result; }else{ $result['msg'] = '栏目添加失败!'; $result['code'] = 0; return $result; } } public function edit(){ $id = input('id'); $this->assign('module',$this->categorys[$id]['moduleid']); $module = db('module')->field('id,title,name')->select(); $this->assign('modulelist',$module); $record = $this->categorys[$id]; $record['imgUrl'] = imgUrl($record['image']); $record['readgroup'] = explode(',',$record['readgroup']); $pid = intval($record['pid']); $result = $this->categorys; foreach($result as $r) { if($r['type']==1) continue; $r['selected'] = $r['id'] == $pid ? 'selected' : ''; $array[] = $r; } $str = ""; $tree = new Tree ($array); $categorys = $tree->get_tree(0, $str,$pid); $this->assign('categorys', $categorys); $this->assign('record', $record); $usergroup=db('auth_group')->select(); $this->assign('rlist',$usergroup); $this->assign('title','编辑栏目'); //模版 $templates= template_file(); $this->assign ( 'templates',$templates ); return $this->fetch(); } public function catUpdate(){ $data = $data = Request::except('file'); $data['module'] = Db::name('module')->where(array('id'=>$data['moduleid']))->value('name'); if(!empty($data['readgroup'])){ $data['readgroup'] = implode(',',$_POST['readgroup']); }else{ if(session('aid')==1){ $data['readgroup']=''; } } $data['arrparentid'] = $this->get_arrparentid($data['id']); $data['child'] = isset($data['child']) ? '1' : '0'; if (false !==db('category')->update($data)) { if($data['child']==1){ $arrchildid = $this->get_arrchildid($data['id']); $data2['ismenu'] = $data['ismenu']; $data2['pagesize'] = $data['pagesize']; if($data['readgroup']!=''){ $data2['readgroup'] = $data['readgroup']; } db('category')->where( ' id in ('.$arrchildid.')')->update($data2); } $this->repair(); $this->repair(); savecache('Category'); $result['msg'] = '栏目修改成功!'; cache('cate', NULL); $result['url'] = url('index'); $result['code'] = 1; return $result; } else { $result['msg'] = '栏目修改失败!'; $result['code'] = 0; return $result; } } public function repair() { @set_time_limit(500); $this->categorys = $categorys = array(); $categorys = db('category')->where("pid=0")->order('sort ASC,id ASC')->select(); $this->set_categorys($categorys); if(is_array($this->categorys)) { foreach($this->categorys as $id => $cat) { if($id == 0 || $cat['type']==1) continue; $this->categorys[$id]['arrparentid'] = $arrparentid = $this->get_arrparentid($id); $this->categorys[$id]['arrchildid'] = $arrchildid = $this->get_arrchildid($id); $this->categorys[$id]['parentdir'] = $parentdir = $this->get_parentdir($id); db('category')->update(array('parentdir'=>$parentdir,'arrparentid'=>$arrparentid,'arrchildid'=>$arrchildid,'id'=>$id)); } } } public function set_categorys($categorys = array()) { if (is_array($categorys) && !empty($categorys)) { foreach ($categorys as $id => $c) { $this->categorys[$c['id']] = $c; $r = db('category')->where(array("pid"=>$c['id']))->Order('sort ASC,id ASC')->select(); $this->set_categorys($r); } } return true; } public function get_arrparentid($id, $arrparentid = '') { if(!is_array($this->categorys) || !isset($this->categorys[$id])) return false; $pid = $this->categorys[$id]['pid']; $arrparentid = $arrparentid ? $pid.','.$arrparentid : $pid; if($pid) { $arrparentid = $this->get_arrparentid($pid, $arrparentid); } else { $this->categorys[$id]['arrparentid'] = $arrparentid; } return $arrparentid; } public function get_arrchildid($id) { $arrchildid = $id; if(is_array($this->categorys)) { foreach($this->categorys as $catid => $cat) { if($cat['pid'] && $id != $catid) { $arrparentids = explode(',', $cat['arrparentid']); if(in_array($id, $arrparentids)){ $arrchildid .= ','.$catid; } } } } return $arrchildid; } public function get_parentdir($id) { if($this->categorys[$id]['pid']==0){ return ''; } $arrparentid = $this->categorys[$id]['arrparentid']; unset($r); if ($arrparentid) { $arrparentid = explode(',', $arrparentid); $arrcatdir = array(); foreach($arrparentid as $pid) { if($pid==0) continue; $arrcatdir[] = $this->categorys[$pid]['catdir']; } return implode('/', $arrcatdir).'/'; } } public function del() { $catid = input('param.id'); $modules = $this->categorys[$catid]['module']; $modulesId = $this->categorys[$catid]['moduleid']; $scount = $this->dao->where(array('pid'=>$catid))->count(); if($scount){ $result['info'] = '请先删除其子栏目!'; $result['status'] = 0; return $result; } $module = db($modules); $arrchildid = $this->categorys[$catid]['arrchildid']; if($modules != 'page'){ $fields = cache($modulesId.'_Field'); $fieldse=array(); foreach ($fields as $k=>$v){ $fieldse[] = $k; } if(in_array('catid',$fieldse)){ $count = $module->where('catid','in',$arrchildid)->count(); }else{ $count = $module->count(); } if($count){ $result['info'] = '请先删除该栏目下所有数据!'; $result['status'] = 0; return $result; } } $pid = $this->categorys[$catid]['pid']; $scat = $this->dao->where(array('pid'=>$pid))->count(); if($scat==1){ db('category')->where(array('id'=>$pid))->update(array('child'=>0)); } db('category')->where('id','in',$arrchildid)->delete(); $arr=explode(',',$arrchildid); foreach((array)$arr as $r){ if($this->categorys[$r]['module']=='page'){ $module=db('page'); $module->delete($r); } } $this->repair(); savecache('Category'); $result['info'] = '栏目删除成功!'; cache('cate', NULL); $result['url'] = url('index'); $result['status'] = 1; return $result; } public function cOrder(){ $data = input('post.'); $this->dao->update($data); $result = ['msg' => '排序成功!', 'code' => 1,'url'=>url('index')]; savecache('Category'); cache('cate', NULL); return $result; } }