www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/admina/fchannels.inc.php

    <?php
(!defined('M_COM') || !defined('M_ADMIN')) && exit('No Permission');
aheader();
!checkapermission(96) && amessage(lang('no_apermission'));
if($sid && $sid_self) amessage(lang('msite admin item !'));
load_cache('fchannels,mtpls,fieldwords,initfields,rprojects');
include_once M_ROOT."./include/fields.fun.php";
if($action == 'fchannelsedit') {
	if(!submitcheck('bfchannelsedit') && !submitcheck('bfchanneladd')) {
		a_guide('fchannelsedit');
		tabheader(lang('channel manager'),'fchannelsedit','?entry=fchannels&action=fchannelsedit','4');
		trcategory(array(lang('id'),lang('channel cname'),lang('edit'),lang('delete')));
		foreach($fchannels as $k => $fchannel) {
			echo "<tr>".
				"<td class=\"item1\" width=\"30\" align=\"center\">$k</td>\n".
				"<td class=\"item2\"><input type=\"text\" size=\"30\" maxlength=\"30\" name=\"fchannelnew[$k][cname]\" value=\"$fchannel[cname]\"></td>\n".
				"<td class=\"item1\" width=\"40\" align=\"center\"><a href=\"?entry=fchannels&action=fchanneldetail&chid=$fchannel[chid]\">".lang('detail')."</a></td>\n".
				"<td class=\"item2\" width=\"40\" align=\"center\"><a href=\"?entry=fchannels&action=fchanneldel&chid=$fchannel[chid]\">".lang('delete')."</a></td>\n".
				"</tr>\n";
		}
		tabfooter('bfchannelsedit',lang('modify'));

		tabheader(lang('add channel'),'fchanneladd','?entry=fchannels&action=fchannelsedit',2,0,1);
		trbasic(lang('channel cname'),'fchanneladd[cname]');
		tabfooter('bfchanneladd',lang('add'));
		$submitstr = '';
		$submitstr .= makesubmitstr('fchanneladd[cname]',1,0,3,30);
		check_submit_func($submitstr);
	}elseif(submitcheck('bfchannelsedit')) {
		!checkapermission('fchannelsedit') && amessage(lang('no_apermission'));
		if(isset($fchannelnew)) {
			foreach($fchannelnew as $k => $v) {
				$v['cname'] = trim(strip_tags($v['cname']));
				$v['cname'] = $v['cname'] ? $v['cname'] : $fchannels[$k]['cname'];
				if($v['cname'] != $fchannels[$k]['cname']){
					$db->query("UPDATE {$tblprefix}fchannels SET cname='$v[cname]' WHERE chid='$k'");
				}
			}
			adminlog(lang('edit freeinfo channel manager list'));
			updatecache('fchannels');
			amessage(lang('freeinfo channel edit finish'),"?entry=fchannels&action=fchannelsedit");
		}
	}elseif(submitcheck('bfchanneladd')) {
		$fchanneladd['cname'] = trim(strip_tags($fchanneladd['cname']));
		empty($fchanneladd['cname']) && amessage(lang('channel cname missing'),'?entry=fchannels&action=fchannelsedit');
		$db->query("INSERT INTO {$tblprefix}fchannels SET cname='$fchanneladd[cname]'");
		if($chid = $db->insert_id()){
			$db->query("CREATE TABLE {$tblprefix}farchives_$chid (
						aid mediumint(8) unsigned NOT NULL default '0',
						PRIMARY KEY (aid))".(mysql_get_server_info() > '4.1' ? " ENGINE=MYISAM DEFAULT CHARSET=$dbcharset" : " TYPE=MYISAM"));
			$db->query("INSERT INTO {$tblprefix}ffields SET 
						ename='subject', 
						cname='".lang('message title')."', 
						chid='$chid', 
						issystem='1', 
						available='1', 
						innertext='', 
						length='255', 
						datatype='text', 
						notnull='1', 
						mlimit='0', 
						rpid='0'");
			updatecache('ffields',$chid);
			updatecache('fchannels');
			updatecache('btagnames');
		}
		adminlog(lang('add freeinfo channel'));
		amessage(lang('freeinfo channel add finish'),"?entry=fchannels&action=fchannelsedit");
	}
}elseif($action == 'ffieldadd' && $chid){
	if(!submitcheck('bffieldadd')){
		a_guide('ffieldadd');
		tabheader(lang('add')."&nbsp;[".$fchannels[$chid]['cname']."]&nbsp;".lang('field'),'ffieldadd',"?entry=fchannels&action=ffieldadd&chid=$chid",2,0,1);
		$submitstr = '';
		if(empty($fieldnew['datatype'])){
			trbasic(lang('field type'),'fieldnew[datatype]',makeoption($datatypearr),'select');
			trbasic(lang('weather func field'),'fieldnew[isfunc]',0,'radio');
			tabfooter('bffieldaddpre',lang('continue'));
		}else{
			list($fmode,$fnew,$fsave) = array('fa',true,false);
			include_once M_ROOT."./include/fields/$fieldnew[datatype].php";
			tabfooter('bffieldadd',lang('add'));
		}
		check_submit_func($submitstr);
	}else{
		$enamearr = $usednames['ffields'];
		$fields = read_cache('ffields',$chid);
		foreach($fields as $ename => $field){
			if(!in_array($ename,$enamearr)) $enamearr[] = $ename;
		}
		$fconfigarr = array(
			'errorurl' => '?entry=fchannels&action=fchanneldetail&chid='.$chid,
			'enamearr' => $enamearr,
			'altertable' => $tblprefix.'farchives_'.$chid,
			'fieldtable' => $tblprefix.'ffields',
			'sqlstr' => "chid=$chid,available='1'",
		);
		list($fmode,$fnew,$fsave) = array('fa',true,true);
		include_once M_ROOT."./include/fields/$fieldnew[datatype].php";
		adminlog(lang('add freeinfo channel field'));
		updatecache('ffields',$chid);
		updatecache('btagnames');
		amessage(lang('field add finish'), '?entry=fchannels&action=fchanneldetail&chid='.$chid);
	}
}elseif($action == 'fchanneldetail' && $chid) {
	$fchannel = $fchannels[$chid];
	$fields = read_cache('ffields',$chid);
	if(!submitcheck('bfchanneldetail')){
		a_guide('fchanneldetail');
		tabheader("[".$fchannel['cname']."]".lang('field edit')."&nbsp; &nbsp; &nbsp; >><a href=\"?entry=fchannels&action=ffieldadd&chid=$chid\">".lang('add field')."</a>",'fchanneldetail',"?entry=fchannels&action=fchanneldetail&chid=$chid",'6');
		trcategory(array(lang('delete'),lang('field cname'),lang('admin_self'),lang('order'),lang('field ename'),lang('field type'),lang('detail')));
		foreach($fields as $k => $field){
			fieldlist($k,$field,'fch');
		}
		tabfooter('bfchanneldetail');
	}else{
		if(!empty($delete)){
			foreach($delete as $id){
				if(!$fields[$id]['issystem']){
					$db->query("ALTER TABLE {$tblprefix}farchives_$chid DROP $id"); 
					$db->query("DELETE FROM {$tblprefix}ffields WHERE ename='$id' AND chid='$chid'"); 
					unset($fields[$id]);
					unset($fieldsnew[$id]);
					del_cache('ffield',$chid,$id);
				}
			}
		}
		foreach($fields as $id => $field){
			$fieldsnew[$id]['cname'] = trim(strip_tags($fieldsnew[$id]['cname']));
			$field['cname'] = $fieldsnew[$id]['cname'] ? $fieldsnew[$id]['cname'] : $field['cname'];
			$field['isadmin'] = $field['issystem'] ? '0' : (empty($fieldsnew[$id]['isadmin']) ? 0 : 1);
			$field['vieworder'] = max(0,intval($fieldsnew[$id]['vieworder']));
			$db->query("UPDATE {$tblprefix}ffields SET cname='$field[cname]',vieworder='$field[vieworder]',isadmin='$field[isadmin]' WHERE ename='$id' AND chid='$chid'");
		}
		adminlog(lang('detail0 modify freeinfo channel field'));
		updatecache('ffields',$chid);
		updatecache('btagnames');
		amessage(lang('channel modify finish'), '?entry=fchannels&action=fchanneldetail&chid='.$chid);
	}
}
elseif($action == 'fchanneldel' && $chid) {
	if(empty($confirm)){
		$message = lang('del_alert')."<br><br>";
		$message .= lang('confirm click')."[<a href=?entry=fchannels&action=fchanneldel&chid=".$chid."&confirm=1>".lang('delete')."</a>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
		$message .= lang('giveup click')."[<a href=?entry=fchannels&action=fchannelsedit>".lang('goback')."</a>]";
		amessage($message);
	}
	if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}fcatalogs WHERE chid='$chid'")) {
		amessage(lang('channel without related coclass can delete'), '?entry=fchannels&action=fchannelsedit');
	}
	$db->query("DROP TABLE IF EXISTS {$tblprefix}farchives_$chid");
	$db->query("DELETE FROM {$tblprefix}fchannels WHERE chid='$chid'");
	$db->query("DELETE FROM {$tblprefix}ffields WHERE chid='$chid'");

	$fields = array_keys(read_cache('ffields',$chid));
	foreach($fields as $k){
		del_cache('ffield',$chid,$k);
	}
	del_cache('ffields',$chid);
	del_cache('fchannel',$chid);
	@unlink(M_ROOT.'./dynamic/mguides/free_'.$chid.'.php');

	adminlog(lang('delete freeinfo channel'));
	updatecache('fchannels');
	updatecache('btagnames');
	amessage(lang('freeinfo channel delete finish'),"?entry=fchannels&action=fchannelsedit");

}elseif($action == 'fielddetail' && $chid && $fieldename){
	!isset($fchannels[$chid]) && amessage(lang('confirmchoose channel'), '?entry=fchannels&action=fchannelsedit');
	$field = read_cache('ffield',$chid,$fieldename);
	empty($field) && amessage(lang('confirmchoose field'), '?entry=fchannels&action=fchanneldetail&chid='.$chid);
	if(!submitcheck('bfielddetail')){
		a_guide('ffielddetail');
		tabheader("[".$fchannels[$chid]['cname']."]&nbsp;&nbsp;".lang('field edit')."&nbsp;&nbsp;[$field[cname]]",'fielddetail',"?entry=fchannels&action=fielddetail&chid=$chid&fieldename=$fieldename",2,0,1);
		$submitstr = '';
		list($fmode,$fnew,$fsave) = array('fa',false,false);
		include_once M_ROOT."./include/fields/$field[datatype].php";
		tabfooter('bfielddetail',lang('submit'));
		check_submit_func($submitstr);
	}else{
		$fconfigarr = array(
			'altertable' => $tblprefix.'farchives'.$chid,
			'fieldtable' => $tblprefix.'ffields',
			'wherestr' => "WHERE ename='$fieldename' AND chid=$chid",
		);
		list($fmode,$fnew,$fsave) = array('fa',false,true);
		include_once M_ROOT."./include/fields/$field[datatype].php";
		adminlog(lang('detail0 modify freeinfo channel field'));
		updatecache('ffields',$chid);
		amessage(lang('field edit finish'),'?entry=fchannels&action=fchanneldetail&chid='.$chid);
	}
}

?>