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 = D('Admin/category'); } /** * 列表 * */ public function index() { if($this->categorys){ foreach($this->categorys as $r) { if($r['module']=='Page'){ $r['str_manage'] = ''.L('edit_page').' | '; }else{ $r['str_manage'] = ''.L('add_catname').' | '; } $r['str_manage'] .= ''.L('edit').' | '.L('delete').' '; $r['modulename']=$this->module[$r['moduleid']]['title'] ? $this->module[$r['moduleid']]['title'] : L('Module_url'); $r['dis'] = $r['ismenu'] ? ''.L('display_yes').'' : ''.L('display_no').'' ; $array[] = $r; } $str = " \$id \$spacer\$catname   \$modulename ".L('fangwen')." \$str_manage "; import ( '@.ORG.Tree' ); $tree = new Tree ($array); unset($array); $tree->icon = array('   '.L('tree_1').'','   '.L('tree_2').'','   '.L('tree_3').''); $tree->nbsp = '   '; $categorys = $tree->get_tree(0, $str); $this->assign('categorys', $categorys); } $this->display(); } public function _before_add() { foreach((array)$this->Urlrule as $key =>$r){ if($r['ishtml'])$Urlrule[$key]=$r; } $this->assign('Urlrule', $Urlrule); $yourphp_auth_key = sysmd5(C('ADMIN_ACCESS').$_SERVER['HTTP_USER_AGENT']); $yourphp_auth = authcode('1-1-0-1-jpeg,jpg,png,gif-3-0', 'ENCODE',$yourphp_auth_key); $this->assign('yourphp_auth',$yourphp_auth); $templates= template_file(); $this->assign ( 'templates',$templates ); $parentid = intval($_GET['parentid']); $vo['ismenu']=1; $vo['moduleid'] =$this->categorys[$parentid]['moduleid']; $this->assign('vo', $vo); foreach($this->categorys as $r) { $array[] = $r; } import ( '@.ORG.Tree' ); $str = ""; $tree = new Tree ($array); $select_categorys = $tree->get_tree(0, $str,$parentid); $usergroup=F('Role'); $this->assign('rlist',$usergroup); $this->assign('select_categorys', $select_categorys); } /** * 提交录入 * */ public function insert() { /* if($_POST['parentid']){ if($_POST['moduleid']!=$this->categorys[$_POST['parentid']]['moduleid']){ $this->success(L('chose_notop_module')); } } */ if(empty($_POST['urlruleid']) && $_POST['ishtml']) $this->error(L('do_empty')); $_POST['readgroup'] = $_POST['readgroup'] ? implode(',',$_POST['readgroup']) : ''; $_POST['postgroup'] = $_POST['postgroup'] ? implode(',',$_POST['postgroup']) : ''; $_POST['module'] = $this->module[$_POST['moduleid']]['name'] ? $this->module[$_POST['moduleid']]['name'] : ''; $_POST['moduleid']= intval($_POST['moduleid']); if(APP_LANG)$_POST['lang']=LANG_ID; if($this->dao->create()) { $id = $this->dao->add(); if($id) { if($_POST['module']=='Page'){ $_POST['id']=$id; if(empty($_POST['title']))$_POST['title'] = $_POST['catname']; $Page=D('Page'); if($Page->create()){ $Page->add(); } } if($_POST['aid']) { $Attachment =M('Attachment'); $aids = implode(',',$_POST['aid']); $data['catid']= $_POST['catid']; $data['moduleid']= $_POST['moduleid']; $data['status']= '1'; $Attachment->where("aid in (".$aids.")")->save($data); } $this->repair(); savecache('Category'); if($_POST['ishtml']){ $this->categorys = F('Category'); $cat = $this->categorys[$id]; $arrparentid = array_filter(explode(',',$cat['arrparentid'].','.$cat['id'])); foreach($arrparentid as $catid) { if($this->categorys[$catid]['ishtml']) $this->clisthtml($catid); } if($this->sysConfig['HOME_ISHTML']) $this->create_index(); } $this->assign ( 'jumpUrl', U(MODULE_NAME.'/index') ); $this->success(L('add_ok')); }else{ $this->error(L('add_error')); } }else{ $this->error($this->dao->getError()); } } /** * 编辑 * */ public function edit() { $id = intval($_GET['id']); foreach((array)$this->Urlrule as $key =>$r){ if($r['ishtml'])$Urlrule[$key]=$r; } $this->assign('Urlrule', $Urlrule); $yourphp_auth_key = sysmd5(C('ADMIN_ACCESS').$_SERVER['HTTP_USER_AGENT']); $yourphp_auth = authcode('1-1-0-1-jpeg,jpg,png,gif-3-0', 'ENCODE',$yourphp_auth_key); $this->assign('yourphp_auth',$yourphp_auth); $templates= template_file(); $this->assign ( 'templates',$templates ); $record = $this->categorys[$id]; $record['readgroup'] = explode(',',$record['readgroup']); if(empty($id) || empty($record)) $this->error(L('do_empty')); $parentid = intval($record['parentid']); import ( '@.ORG.Tree' ); $result = $this->categorys; foreach($result as $r) { //if($r['type']==1) continue; $r['selected'] = $r['id'] == $parentid ? 'selected' : ''; $array[] = $r; } $str = ""; $tree = new Tree ($array); $select_categorys = $tree->get_tree(0, $str,$parentid); $this->assign('select_categorys', $select_categorys); $this->assign('vo', $record); $usergroup=F('Role'); $this->assign('rlist',$usergroup); $this->display (); } /** * 提交编辑 * */ public function update() { if(empty($_POST['urlruleid']) && $_POST['ishtml']) $this->error(L('do_empty')); $_POST['module'] = $this->module[$_POST['moduleid']]['name']; $_POST['readgroup'] = $_POST['readgroup'] ? implode(',',$_POST['readgroup']) : ''; $_POST['postgroup'] = $_POST['postgroup'] ? implode(',',$_POST['postgroup']) : ''; $_POST['arrparentid'] = $this->get_arrparentid($_POST['id']); if(empty($_POST['listtype']))$_POST['listtype']=0; if($_POST['type']){ $_POST['moduleid']=0; $_POST['module']=''; } if (false === $this->dao->create ()) { $this->error ( $this->dao->getError () ); } if (false !== $this->dao->save ()) { if($_POST['aid']) { $Attachment =M('Attachment'); $aids = implode(',',$_POST['aid']); $data['moduleid']= $_POST['moduleid']; $data['catid']= $_POST['id']; $data['status']= '1'; $Attachment->where("aid in (".$aids.")")->save($data); } if($_POST['chage_all']){ $data=array(); $arrchildid = $this->get_arrchildid($_POST['id']); $data['urlruleid'] = $_POST['urlruleid'] ? $_POST['urlruleid'] : '0' ; $data['presentpoint'] = $_POST['presentpoint']; $data['postgroup'] = $_POST['postgroup'] ? $_POST['postgroup'] : ''; $data['chargepoint'] = $_POST['chargepoint']; $data['paytype'] = $_POST['paytype']; $data['repeatchargedays'] = $_POST['repeatchargedays']; $data['ismenu'] = $_POST['ismenu']; $data['ishtml'] = $_POST['ishtml']; $data['pagesize'] = $_POST['pagesize']; $data['template_list'] = $_POST['template_list']; $data['template_show'] = $_POST['template_show']; $data['readgroup'] = $_POST['readgroup'] ? $_POST['readgroup'] : ''; $r = $this->dao->where( ' id in ('.$arrchildid.')')->data($data)->save(); } $this->repair(); $this->repair(); savecache('Category'); if($_POST['ishtml']){ $cat=$this->categorys[$_POST['id']]; $arrparentid = array_filter(explode(',',$cat['arrparentid'].','.$cat['id'])); foreach($arrparentid as $catid) { if($this->categorys[$catid]['ishtml']) $this->clisthtml($catid); } if($this->sysConfig['HOME_ISHTML']) $this->create_index(); } $this->assign ( 'jumpUrl', U(MODULE_NAME.'/index') ); $this->success (L('edit_ok')); } else { $this->success (L('edit_error').': '.$this->dao->getDbError()); } } public function repair_cache() { $this->repair(); $this->repair(); savecache('Category'); $this->assign ( 'jumpUrl', U(MODULE_NAME.'/index') ); $this->success(L('do_success')); } public function repair() { @set_time_limit(500); $this->categorys = $categorys = array(); if(APP_LANG)$langwhere = " and lang = ".LANG_ID; $categorys = $this->dao->where("parentid=0".$langwhere)->Order('listorder 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'] = $cat['parentdir'] = $parentdir = $this->get_parentdir($id); $child = is_numeric($arrchildid) ? 0 : 1; if( $cat['type']==1){ $url=$cat['url']; }else{ $url = geturl($cat,'',$this->Urlrule); $url = $url[0]; } $this->dao->save(array('url'=>$url,'parentdir'=>$parentdir,'arrparentid'=>$arrparentid,'arrchildid'=>$arrchildid,'child'=>$child,'id'=>$id)); } } } public function set_categorys($categorys = array()) { if (is_array($categorys) && !empty($categorys)) { foreach ($categorys as $id => $c) { $this->categorys[$c[id]] = $c; if(APP_LANG)$langwhere = " and lang = ".LANG_ID; $r = $this->dao->where("parentid = $c[id]".$langwhere)->Order('listorder ASC,id ASC')->select(); $this->set_categorys($r); } } return true; } public function get_parentdir($id) { if($this->categorys[$id]['parentid']==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 get_arrparentid($id, $arrparentid = '') { if(!is_array($this->categorys) || !isset($this->categorys[$id])) return false; $parentid = $this->categorys[$id]['parentid']; $arrparentid = $arrparentid ? $parentid.','.$arrparentid : $parentid; if($parentid) { $arrparentid = $this->get_arrparentid($parentid, $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['parentid'] && $id != $catid) { $arrparentids = explode(',', $cat['arrparentid']); if(in_array($id, $arrparentids)) $arrchildid .= ','.$catid; } } } return $arrchildid; } public function delete() { $catid = intval($_GET['id']); $module = $this->categorys[$catid]['module']; if($this->categorys[$catid]['type']==1){ if($this->categorys[$catid]['arrchildid']!=$catid)$this->error(L('category_does_not_allow_delete')); $this->dao->delete($catid); delattach("catid in($catid)"); }else{ $module = M($module); $arrchildid = $this->categorys[$catid]['arrchildid']; $where = "catid in(".$arrchildid.")"; $count = $module->where($where)->count(); if($count) $this->error(L('category_does_not_allow_delete')); $this->dao->delete($arrchildid); $moduleid = $this->mod[$module]; delattach("moduleid =$moduleid and catid in($arrchildid)"); $arr=explode(',',$arrchildid); foreach((array)$arr as $r){ if($this->categorys[$r]['module']=='Page'){ $module=M('Page'); $module->delete($r); } } } $this->repair(); savecache('Category'); $this->success(L('do_success')); } }