www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/admina/cnodes.inc.php
<?php ////////////////000000000000000000000000000000000000 (!defined('M_COM') || !defined('M_ADMIN')) && exit('No Permission'); aheader(); load_cache('cotypes'); load_cache('catalogs,mtpls,cnconfigs,',$sid); include_once M_ROOT."./include/cparse.fun.php"; include_once M_ROOT."./include/cnode.fun.php"; include_once M_ROOT."./include/parse/general.php"; if($action == 'cnconfigs'){ !checkapermission($sid ? 127 : 60) && amessage(lang('no_apermission')); if(!submitcheck('bcnconfigsadd') && !submitcheck('bcnconfigsave') && !submitcheck('bcnodesupdate')){ a_guide('cnconfigs'); $mainlinearr = array('ca' => lang('catalog')); $coidarr = array(0 => lang('nosetting')); foreach($cotypes as $coid => $cotype){ $cotype['sortable'] && $coidarr[$coid] = $cotype['cname']; } tabheader(lang('1. add catas configs'),'cnconfigsadd',"?entry=cnodes&action=cnconfigs$param_suffix"); trbasic(lang('catas configs description'),'cname','','btext'); trbasic(lang('mainline cotype'),'mainline',makeoption($mainlinearr),'select',lang('agmainline')); trbasic(lang('cnode cotype leaguer'),'coid',makeoption($coidarr),'select'); tabfooter('bcnconfigsadd',lang('add')); tabheader(lang('2. modify catas configs config'),'cnconfigsedit',"?entry=cnodes&action=cnconfigs$param_suffix"); foreach($cnconfigs as $cncid => $cnconfig){ echo "<tr class=\"category\"><td><input class=\"checkbox\" type=\"checkbox\" name=\"delete[".$cncid."]\" value=\"".$cncid."\">".lang('del'). "<td><input type=\"text\" size=\"50\" name=\"cname_$cncid\" value=\"$cnconfig[cname]\"></td></tr>"; $num = $cnprow; $lv = 0; foreach($cnconfig['idsarr'] as $k => $ids){ $itemstr = ''; $lv ++; $trcls = $lv % 2 ? 2 : 1; if($k == 'ca'){ $i = 0; foreach($catalogs as $caid => $catalog){ $i ++; $itemstr .= "<input class=\"checkbox\" type=\"checkbox\" name=\"idsarrs_".$cncid."_".$k."[]\" value=\"$caid\"".(in_array($caid,$ids) ? " checked" : "").">". $catalog['title']."<font class=\"gray\"> $catalog[level]</font>".(!($i % $num) ? "<br>" : " "); } echo "<tr class=\"item$trcls\"><td width=\"15%\"><b>".lang('catalog')."</b></td>". "<td>".$itemstr."</td></tr>\n"; } elseif(isset($cotypes[$k])){ $i = 0; $coclasses = read_cache('coclasses',$k); foreach($coclasses as $ccid => $coclass){ $i ++; $itemstr .= "<input class=\"checkbox\" type=\"checkbox\" name=\"idsarrs_".$cncid."_".$k."[]\" value=\"$ccid\"".(in_array($ccid,$ids) ? " checked" : "").">". $coclass['title']."<font class=\"gray\"> $coclass[level]</font>".(!($i % $num) ? "<br>" : " "); } echo "<tr class=\"item$trcls\"><td width=\"15%\"><b>".$cotypes[$k]['cname']."</b></td>". "<td>".$itemstr."</td></tr>\n"; } } } tabfooter('bcnconfigsave',lang('save config')); tabheader(lang('3. updatecnode'),'cnodesupdate',"?entry=cnodes&action=cnconfigs$param_suffix"); trbasic(lang('update cnode'),'',"<input class=\"button\" type=\"submit\" name=\"bcnodesupdate\" value=\"".lang('update')."\">",''); tabfooter(); echo "</form>\n"; }elseif(submitcheck('bcnconfigsadd')){ $cname = trim($cname); $coid = intval($coid); $idsarr = array('ca' => array()); !empty($coid) && $idsarr[$coid] = array(); $idsarr = addslashes(serialize($idsarr)); $db->query("INSERT INTO {$tblprefix}cnconfigs SET cname='$cname',idsarr='$idsarr',sid=$sid"); adminlog(lang('add catas configs')); updatecache('cnconfigs','',$sid); amessage(lang('cnode configs add finish'), "?entry=cnodes&action=cnconfigs$param_suffix"); }elseif(submitcheck('bcnconfigsave')){ foreach($cnconfigs as $cncid => $cnconfig){ if(isset($delete[$cncid])){ $db->query("DELETE FROM {$tblprefix}cnconfigs WHERE cncid=$cncid"); } else{ $cname = trim(${'cname_'.$cncid}); $idsarr = array(); foreach($cnconfig['idsarr'] as $k => $v){ $idsarr[$k] = isset(${'idsarrs_'.$cncid.'_'.$k}) ? ${'idsarrs_'.$cncid.'_'.$k} : array(); } $idsarr = addslashes(serialize($idsarr)); $db->query("UPDATE {$tblprefix}cnconfigs SET cname='$cname',idsarr='$idsarr' WHERE cncid=$cncid"); } } adminlog(lang('edit catas configs manager list')); updatecache('cnconfigs','',$sid); amessage(lang('cnode configs config save finish'), "?entry=cnodes&action=cnconfigs$param_suffix"); }elseif(submitcheck('bcnodesupdate')){ $cnodes1 = cnodesfromcnc($cnconfigs); $db->query("UPDATE {$tblprefix}cnodes SET inconfig=0 WHERE sid=$sid"); foreach($cnodes1 as $ename => $cncid){ if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}cnodes WHERE ename='$ename' AND sid=$sid")){ $db->query("UPDATE {$tblprefix}cnodes SET inconfig=1 WHERE ename='$ename' AND sid=$sid"); continue; } $cnode = save_cnode($ename); if($cnode['caid']){ $db->query("INSERT INTO {$tblprefix}cnodes SET ename='$ename', sid='$sid', inconfig='1', mainline='ca', caid='$cnode[caid]', cnlevel='$cnode[cnlevel]', ineedstatic='$timestamp', lneedstatic='$timestamp', bkneedstatic='$timestamp' "); cn_blank($ename,'i,l,bk',$sid,1); } } adminlog(lang('update catas configs cnode')); updatecache('cnodes','',$sid); amessage(lang('catas cnode update finish'), "?entry=cnodes&action=cnodescommon$param_suffix"); } }elseif($action == 'cnodescommon'){ !checkapermission($sid ? 128 : 61) && amessage(lang('no_apermission')); $page = !empty($page) ? max(1, intval($page)) : 1; submitcheck('bfilter') && $page = 1; $viewdetail = empty($viewdetail) ? 0 : $viewdetail; $caid = !isset($caid)? '0' : $caid; $mainline = !isset($mainline)? '0' : $mainline; $cnlevel = !isset($cnlevel) ? '0' : $cnlevel; $inconfig = !isset($inconfig)? '-1' : $inconfig; $wheresql = "sid=$sid"; $mainline && $wheresql .= " AND mainline='$mainline'"; $cnlevel && $wheresql .= " AND cnlevel='$cnlevel'"; if(!empty($caid)){ $caids = array($caid); $tempids = array(); $tempids = son_ids($catalogs,$caid,$tempids); $caids = array_merge($caids,$tempids); $wheresql .= " AND caid IN (".mimplode($caids).")"; } $inconfig != '-1' && $wheresql .= " AND inconfig='$inconfig'"; $filterstr = ''; foreach(array('viewdetail','caid','mainline','cnlevel','inconfig') as $k){ $filterstr .= "&$k=".urlencode($$k); } $wheresql = $wheresql ? ("WHERE ".$wheresql) : ""; if(!submitcheck('bcnodescommon')){ a_guide('cnodesedit'); $cnlevelarr = array('0'=>lang('nolimit'),'1'=>lang('topic'),'2'=>lang('level2'),'3'=>lang('level3'),'4'=>lang('level4')); $mainlinearr = array('0' => lang('nolimit'),'ca' => lang('catalog')); $inconfigarr = array('-1' => lang('nolimit outconfig'),'0' => lang('outconfig cnode'),'1' => lang('inconfig cnode'),); foreach($cotypes as $coid => $cotype){ ($cotype['sortable'] && $cotype['mainline']) && $mainlinearr[$coid] = $cotype['cname']; } $caidsarr = array('0' => lang('nolimit')) + caidsarr(); tabheader(lang('filter0 cnode').viewcheck('viewdetail',$viewdetail,'tbodyfilter').' '.strbutton('bfilter','filter0'),'cnodescommon',"?entry=cnodes&action=cnodescommon$param_suffix&page=$page"); echo "<tbody id=\"tbodyfilter\" style=\"display: ".(empty($viewdetail) ? 'none' : '')."\">"; trbasic(lang('mainline'),'mainline',makeoption($mainlinearr,$mainline),'select'); trbasic(lang('catalog attr'),'caid',makeoption($caidsarr,$caid),'select'); trbasic(lang('weather outconfig cnode'),'inconfig',makeoption($inconfigarr,$inconfig),'select'); trbasic(lang('cnode levelnum'),'cnlevel',makeoption($cnlevelarr,$cnlevel),'select'); echo "</tbody>"; tabfooter(); $pagetmp = $page; do{ $query = $db->query("SELECT * FROM {$tblprefix}cnodes $wheresql ORDER BY cnid ASC LIMIT ".(($pagetmp - 1) * $atpp).",$atpp"); $pagetmp--; } while(!$db->num_rows($query) && $pagetmp); $itemcnode = ''; while($cnode = $db->fetch_array($query)) { $cnode['catalog'] = empty($cnode['caid']) ? '-' : $catalogs[$cnode['caid']]['title']; $cnode['inconfig'] = $cnode['inconfig'] ? '-' : lang('outconfig'); view_cnurl($cnode['ename'],$cnode); $cnode['cname'] = cnode_cname($cnode['ename']); $itemcnode .= "<tr><td align=\"center\" class=\"item1\"><input class=\"checkbox\" type=\"checkbox\" name=\"selectid[$cnode[cnid]]\" value=\"$cnode[cnid]\">\n". "<td class=\"item2\">$cnode[cname]</td>\n". "<td align=\"center\" class=\"item1\">".(empty($cnode['alias']) ? '-' : $cnode['alias'])."</td>\n". "<td align=\"center\" class=\"item2\">$cnode[inconfig]</td>\n". "<td align=\"center\" class=\"item1\">$cnode[catalog]</td>\n". "<td align=\"center\" class=\"item2\"><a href=\"$cnode[indexurl]\" target=\"_blank\">".lang('look')."</a></td>\n". "<td align=\"center\" class=\"item1\"><a href=\"$cnode[listurl]\" target=\"_blank\">".lang('look')."</a></td>\n". "<td align=\"center\" class=\"item2\"><a href=\"$cnode[bkurl]\" target=\"_blank\">".lang('look')."</a></td>\n". "<td align=\"center\" class=\"item1\">".(!empty($mtpls[$cnode['indextpl']]) ? $mtpls[$cnode['indextpl']]['cname'] : $cnode['indextpl'])."</td>\n". "<td align=\"center\" class=\"item2\">".(!empty($mtpls[$cnode['listtpl']]) ? $mtpls[$cnode['listtpl']]['cname'] : $cnode['listtpl'])."</td>\n". "<td align=\"center\" class=\"item1\">".(!empty($mtpls[$cnode['bktpl']]) ? $mtpls[$cnode['bktpl']]['cname'] : $cnode['bktpl'])."</td>\n". "<td align=\"center\" class=\"item2\"><a href=\"?entry=cnodes&action=cnodedetail$param_suffix&cnid=$cnode[cnid]\">".lang('edit')."</a></td></tr>\n"; } $cnodecount = $db->result_one("SELECT count(*) FROM {$tblprefix}cnodes $wheresql"); $multi = multi($cnodecount, $atpp, $page, "?entry=cnodes&action=cnodescommon$param_suffix$filterstr"); tabheader(lang('catas cnode list')." <input class=\"checkbox\" type=\"checkbox\" name=\"select_all\" value=\"1\"> ".lang('selectallpage'),'','',12); trcategory(array("<input class=\"checkbox\" type=\"checkbox\" name=\"chkall\" onclick=\"checkall(this.form, 'selectid', 'chkall')\">",lang('cnode cname'),lang('cnode alias'),lang('outconfig'),lang('catalog attr'),lang('index'),lang('list page0'),lang('bklist'),lang('index template'),lang('list template'),lang('bklist template'),lang('detail'))); echo $itemcnode; tabfooter(); echo $multi; tabheader(lang('operate item')); trbasic("<input class=\"checkbox\" type=\"checkbox\" name=\"cndeal[delete]\" value=\"1\"> ".lang('delete cnode'),'','',''); trbasic("<input class=\"checkbox\" type=\"checkbox\" name=\"cndeal[indextpl]\" value=\"1\"> ".lang('cnode index template'),'cnindextpl',makeoption(array('' => lang('nosetting')) + mtplsarr('cindex')),'select'); trbasic("<input class=\"checkbox\" type=\"checkbox\" name=\"cndeal[listtpl]\" value=\"1\"> ".lang('cnode list template'),'cnlisttpl',makeoption(array('' => lang('nosetting')) + mtplsarr('list')),'select'); trbasic("<input class=\"checkbox\" type=\"checkbox\" name=\"cndeal[bktpl]\" value=\"1\"> ".lang('cnode bklist template'),'cnbktpl',makeoption(array('' => lang('nosetting')) + mtplsarr('list')),'select'); tabfooter('bcnodescommon'); } else{ if(empty($cndeal) && empty($dealstr)){ amessage(lang('confirmselect operate item'),"?entry=cnodes&action=cnodescommon$param_suffix&page=$page$filterstr"); } if(empty($selectid) && empty($select_all)){ amessage(lang('confirmselect cnode'),"?entry=cnodes&action=cnodescommon$param_suffix&page=$page$filterstr"); } if(!empty($select_all)){ if(empty($dealstr)){//第一页通过表单传送 $dealstr = implode(',',array_keys(array_filter($cndeal))); }else{//通过url传送的参数 $cndeal = array(); foreach(array_filter(explode(',',$dealstr)) as $k){ $cndeal[$k] = 1; } } $parastr = ""; foreach(array('cnindextpl','cnlisttpl','cnbktpl') as $k){ $parastr .= "&$k=".$$k; } $selectid = array(); $npage = empty($npage) ? 1 : $npage; if(empty($pages)){ $archivecount = $db->result_one("SELECT count(*) FROM {$tblprefix}cnodes $wheresql"); $pages = @ceil($archivecount / $atpp); } if($npage <= $pages){ $fromstr = empty($fromid) ? "" : "cnid>$fromid"; $nwheresql = !$wheresql ? ($fromstr ? "WHERE $fromstr" : "") : ($wheresql.($fromstr ? " AND " : "").$fromstr); $query = $db->query("SELECT cnid FROM {$tblprefix}cnodes $nwheresql ORDER BY cnid ASC LIMIT 0,$atpp"); while($item = $db->fetch_array($query)){ $selectid[] = $item['cnid']; $cnstrarr[] = $item['ename']; } } } if(!empty($cndeal['delete'])){//是否要删除相应的静态文件或缓存 $db->query("DELETE FROM {$tblprefix}cnodes WHERE cnid IN (".mimplode($selectid).")", 'UNBUFFERED'); foreach($cnstrarr as $cnstr){ $dirstr = cn_htmldir($cnstr,$sid); foreach(array('i','l','bk') as $var) m_unlink(M_ROOT.$dirstr.($var == 'i' ? '' : ($var == 'l' ? '1.html' : 'bk_1.html'))); @rmdir(M_ROOT.$dirstr);//内部不为空则不能删除 del_cache('cnode',$cnstr,'',$sid); } }else{ if(!empty($cndeal['indextpl'])) $db->query("UPDATE {$tblprefix}cnodes SET indextpl='".$cnindextpl."' WHERE cnid IN (".mimplode($selectid).")"); if(!empty($cndeal['listtpl'])) $db->query("UPDATE {$tblprefix}cnodes SET listtpl='".$cnlisttpl."' WHERE cnid IN (".mimplode($selectid).")"); if(!empty($cndeal['bktpl'])) $db->query("UPDATE {$tblprefix}cnodes SET bktpl='".$cnbktpl."' WHERE cnid IN (".mimplode($selectid).")"); } updatecache('cnodes','',$sid); if(!empty($select_all)){ $npage ++; if($npage <= $pages){ $fromid = max($selectid); $transtr = ''; $transtr .= "&select_all=1"; $transtr .= "&pages=$pages"; $transtr .= "&npage=$npage"; $transtr .= "&bcnodescommon=1"; $transtr .= "&fromid=$fromid"; amessage(lang('operating')."<br> ".lang('all')." $pages ".lang('page0').",".lang('dealing')." $npage ".lang('page0')."<br><br> <a href=\"?entry=cnodes&action=cnodescommon$param_suffix&page=$page$filterstr\">>>".lang('pause')."</a>", "?entry=cnodes&action=cnodescommon$param_suffix&page=$page$filterstr$transtr$parastr&dealstr=$dealstr", 500); } } adminlog(lang('cnode admin operate'),lang('cnode list admin operate')); amessage(lang('cnode operate finish'),"?entry=cnodes&action=cnodescommon$param_suffix&page=$page$filterstr"); } }elseif($action = 'cnodedetail' && $cnid){ !checkapermission($sid ? 128 : 61) && amessage(lang('no_apermission')); $forward = empty($forward) ? M_REFERER : $forward; $cnode = $db->fetch_one("SELECT * FROM {$tblprefix}cnodes WHERE cnid=$cnid"); if(!submitcheck('bcnodedetail')){ a_guide('cnodedetail'); tabheader(lang('cnode detail0 setting'),'cnodedetail',"?entry=cnodes&action=cnodedetail$param_suffix&cnid=$cnid&forward=".urlencode($forward)); trbasic(lang('cnode cname'),'',cnode_cname($cnode['ename']),''); trbasic(lang('cnode alias'),'cnodenew[alias]',$cnode['alias']); trbasic(lang('point cnode url'),'cnodenew[appurl]',$cnode['appurl'],'btext',lang('agappurl')); trbasic(lang('index template'),'cnodenew[indextpl]',makeoption(array('' => lang('nosetting')) + mtplsarr('cindex'),$cnode['indextpl']),'select'); trbasic(lang('list template'),'cnodenew[listtpl]',makeoption(array('' => lang('nosetting')) + mtplsarr('list'),$cnode['listtpl']),'select'); trbasic(lang('bklist template'),'cnodenew[bktpl]',makeoption(array('' => lang('nosetting')) + mtplsarr('list'),$cnode['bktpl']),'select'); tabfooter('bcnodedetail'); } else{ $cnodenew['alias'] = trim($cnodenew['alias']); $cnodenew['appurl'] = trim($cnodenew['appurl']); $db->query("UPDATE {$tblprefix}cnodes SET alias='$cnodenew[alias]', appurl='$cnodenew[appurl]', indextpl='$cnodenew[indextpl]', listtpl='$cnodenew[listtpl]', bktpl='$cnodenew[bktpl]' WHERE cnid='$cnid'"); adminlog(lang('detail0 catas cnode')); updatecache('cnodes','',$sid); amessage(lang('cnode setting finish'),$forward); } } ?>