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.&nbsp;&nbsp; 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.&nbsp;&nbsp; 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\">&nbsp;$catalog[level]</font>".(!($i % $num) ? "<br>" : "&nbsp;&nbsp;");
					}
					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\">&nbsp;$coclass[level]</font>".(!($i % $num) ? "<br>" : "&nbsp;&nbsp;");
					}
					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.&nbsp;&nbsp; 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').'&nbsp; &nbsp; '.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')."&nbsp;&nbsp;&nbsp;&nbsp;<input class=\"checkbox\" type=\"checkbox\" name=\"select_all\" value=\"1\">&nbsp;".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\">&nbsp;".lang('delete cnode'),'','','');
		trbasic("<input class=\"checkbox\" type=\"checkbox\" name=\"cndeal[indextpl]\" value=\"1\">&nbsp;".lang('cnode index template'),'cnindextpl',makeoption(array('' => lang('nosetting')) + mtplsarr('cindex')),'select');
		trbasic("<input class=\"checkbox\" type=\"checkbox\" name=\"cndeal[listtpl]\" value=\"1\">&nbsp;".lang('cnode list template'),'cnlisttpl',makeoption(array('' => lang('nosetting')) + mtplsarr('list')),'select');
		trbasic("<input class=\"checkbox\" type=\"checkbox\" name=\"cndeal[bktpl]\" value=\"1\">&nbsp;".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);
	}
}
?>