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

    <?php
(!defined('M_COM') || !defined('M_ADMIN')) && exit('No Permission');
aheader();
load_cache('channels,fieldwords,initfields,rprojects,commus');
load_cache('mtpls',$sid);
cache_merge($channels,'channels',$sid);
include_once M_ROOT."./include/fields.fun.php";
include_once M_ROOT."./include/commu.fun.php";
if($action == 'channeledit'){
	!checkapermission($sid ? 125 : 54) && amessage(lang('no_apermission'));
	if(!submitcheck('bchanneledit') && !submitcheck('bchanneladd')){
		a_guide('channeledit');
		$cuidsarr = array(0 => '-') + cuidsarr();
		tabheader(lang('channel manager'),'channeledit',"?entry=channels&action=channeledit$param_suffix",'10');
		trcategory(array(lang('id'),lang('available'),lang('channel cname'),lang('commu'),lang('admin'),lang('copy'),lang('edit'),lang('delete')));
		foreach($channels as $k => $channel){
			echo "<tr>".
				"<td class=\"item1\" width=\"30\" align=\"center\">$k</td>\n".
				"<td class=\"item2\" align=\"center\" width=\"30\"><input class=\"checkbox\" type=\"checkbox\" name=\"channelnew[$k][available]\" value=\"1\"".($channel['available'] ? " checked" : "")."></td>\n".
				"<td class=\"item1\">".($sid ? "$channel[cname]" : "<input type=\"text\" size=\"30\" maxlength=\"30\" name=\"channelnew[$k][cname]\" value=\"$channel[cname]\">")."</td>\n".
				"<td class=\"item2\" align=\"center\">".$cuidsarr[$channel['cuid']]."</td>\n".
				"<td class=\"item1\" width=\"30\" align=\"center\">".(empty($channel['userforbidadd']) ? '-' : 'Y')."</td>\n".
				"<td class=\"item2\" width=\"30\" align=\"center\">".($sid ? '-' : "<a href=\"?entry=channels&action=channelcopy&chid=$channel[chid]\">".lang('copy')."</a>")."</td>\n".
				"<td class=\"item1\" width=\"30\" align=\"center\"><a href=\"?entry=channels&action=channeldetail&chid=$channel[chid]$param_suffix\">".lang('detail')."</a></td>\n".
				"<td class=\"item2\" width=\"30\" align=\"center\">".($sid ? '-' : "<a href=\"?entry=channels&action=channeldel&chid=$channel[chid]\">".lang('delete')."</a>")."</td>\n".
				"</tr>\n";
		}
		tabfooter('bchanneledit',lang('modify'));

		if(!$sid){
			$cuidsarr = array(0 => lang('based config')) + cuidsarr();
			tabheader(lang('add channel'),'channeladd','?entry=channels&action=channeledit',2,0,1);
			trbasic(lang('channel cname'),'channeladd[cname]');
			trbasic(lang('commu item config'),'channeladd[cuid]',makeoption($cuidsarr),'select');
			tabfooter('bchanneladd',lang('add'));
			$submitstr = '';
			$submitstr .= makesubmitstr('channeladd[cname]',1,0,0,30);
			check_submit_func($submitstr);
		}
	}elseif(submitcheck('bchanneledit')){
		if(isset($channelnew)){
			if(!$sid){
				foreach($channelnew as $k => $v){
					$v['available'] = isset($v['available']) ? $v['available'] : 0;
					$v['cname'] = trim(strip_tags($v['cname']));
					$v['cname'] = $v['cname'] ? $v['cname'] : $channels[$k]['cname'];
					if(($v['cname'] != $channels[$k]['cname']) || ($v['available'] != $channels[$k]['available'])) {
						$db->query("UPDATE {$tblprefix}channels SET cname='$v[cname]', available='$v[available]' WHERE chid='$k'");
					}
				}
				adminlog(lang('edit archive channel list'));
				updatecache('channels');
			}else{
				$t_channels = empty($subsites[$sid]['channels']) ? array() : $subsites[$sid]['channels'];
				foreach($channels as $k => $v){
					$t_channels[$k]['available'] = empty($channelnew[$k]['available']) ? 0 : 1;
				}
				$t_channels = addslashes(serialize($t_channels));
				$db->query("UPDATE {$tblprefix}subsites SET channels='$t_channels' WHERE sid='$sid'");
				adminlog(lang('edit archive channel list'));
				updatecache('subsites');
			}
		}
		amessage(lang('archive channel edit finish'),"?entry=channels&action=channeledit$param_suffix");
	}elseif(submitcheck('bchanneladd')){
		$channeladd['cname'] = trim(strip_tags($channeladd['cname']));
		empty($channeladd['cname']) && amessage(lang('channel cname missing'), '?entry=channels&action=channeledit');
		!empty($channeladd['cuid']) && $channeladd['album'] = 0;
		$db->query("INSERT INTO {$tblprefix}channels SET 
					cname='$channeladd[cname]', 
					cuid='$channeladd[cuid]'
					");
		if($chid = $db->insert_id()){
			$sqlstr = '';
			if(@$commus[$channeladd['cuid']]['cclass'] == 'answer'){
				$sqlstr = "question text NOT NULL,";
			}
			$customtable = "archives_$chid";
			$db->query("CREATE TABLE {$tblprefix}$customtable (
						aid mediumint(8) unsigned NOT NULL default '0',
						$sqlstr
						PRIMARY KEY (aid))".(mysql_get_server_info() > '4.1' ? " ENGINE=MYISAM DEFAULT CHARSET=$dbcharset" : " TYPE=MYISAM"));
			foreach($initfields as $field){
				$sqlstr = '';
				foreach(array('ename','cname','datatype','issystem','iscustom','length','notnull','nohtml','mode','guide','isadmin','mlimit','rpid','issearch','innertext','mcommon','min','max','regular','isfunc','func','vdefault','istxt') as $var){
					isset($field[$var]) && $sqlstr .= (!$sqlstr ? '' : ',')."$var='".$field[$var]."'";
				}
				$sqlstr .= ",chid='$chid',available='1'";
				$db->query("INSERT INTO {$tblprefix}fields SET $sqlstr");
			}
			cu_addfields($chid,$channeladd['cuid']);
			updatecache('channels');
			updatecache('btagnames');
			updatecache('fields',$chid);
		}
		adminlog(lang('add archive channel'));
		amessage(lang('archive channel add finish'),"?entry=channels&action=channeledit$param_suffix");
	}
}elseif($action == 'channelcopy' && $chid){
	!checkapermission(54) && amessage(lang('no_apermission'));
	if($sid && $sid_self) amessage(lang('msite admin item !'));
	$forward = empty($forward) ? M_REFERER : $forward;
	if(!submitcheck('bchannelcopy')){
		a_guide('channelcopy');
		$channel = read_cache('channel',$chid);
		$fields = read_cache('fields',$chid);
		$cuidsarr = array(0 => lang('default')) + cuidsarr();
		tabheader(lang('archive channel copy'),'channelcopy',"?entry=channels&action=channelcopy&chid=$chid&forward=".rawurlencode($forward),2,0,1);
		trbasic(lang('soc channel cname'),'',$channel['cname'],'');
		trbasic(lang('soc channel commu config'),'',$cuidsarr[$channel['cuid']],'');
		trbasic(lang('new channel cname'),'channelnew[cname]');
		if($channel['cuid']){
			$cuidsarr = cuidsarr($commus[$channel['cuid']]['cclass']);
			trbasic(lang('new channel commu config'),'channelnew[cuid]',makeoption($cuidsarr,$channel['cuid']),'select');
		}
		tabfooter('bchannelcopy');
		$submitstr = '';
		$submitstr .= makesubmitstr('channelnew[cname]',1,0,0,30);
		check_submit_func($submitstr);
	}else{
		$channelnew['cname'] = trim(strip_tags($channelnew['cname']));
		empty($channelnew['cname']) && amessage(lang('channel cname missing'),M_REFERER);
		$channelnew['cuid'] = empty($channelnew['cuid']) ? 0 : $channelnew['cuid'];
		$channel = $db->fetch_one("SELECT * FROM {$tblprefix}channels WHERE chid='$chid'");
		$sqlstr = '';
		foreach(array('userforbidadd','autocheck','autostatic','arctpl','pretpl','srhtpl','autoabstract','autokeyword','autothumb','autosize','autosizemode','baidu','fulltxt','ugids',) as $k){
			$sqlstr .= ",$k='".addslashes($channel[$k])."'";
		}
		$db->query("INSERT INTO {$tblprefix}channels SET 
					cname='$channelnew[cname]', 
					cuid='$channelnew[cuid]'
					$sqlstr
					");
		if($nchid = $db->insert_id()){
			$customtable = "archives_$nchid";
			$db->query("CREATE TABLE {$tblprefix}$customtable (
						aid mediumint(8) unsigned NOT NULL default '0',
						PRIMARY KEY (aid))".(mysql_get_server_info() > '4.1' ? " ENGINE=MYISAM DEFAULT CHARSET=$dbcharset" : " TYPE=MYISAM")); 
			$query = $db->query("SELECT * FROM {$tblprefix}fields WHERE chid='$chid' ORDER BY fid ASC");
			while($fieldnew = $db->fetch_array($query)){
				if($fieldnew['tbl'] == 'custom'){
					$fieldnew = maddslashes($fieldnew);
					$fconfigarr = array(
						'errorurl' => M_REFERER,
						'enamearr' => array(),
						'altertable' => $tblprefix.$customtable,
						'fieldtable' => $tblprefix.'fields',
						'sqlstr' => "chid=$nchid,issystem='$fieldnew[issystem]',iscustom='$fieldnew[iscustom]',available='$fieldnew[available]',vieworder='$fieldnew[vieworder]',tbl='custom'",
						'filterstr' => "",
					);
					list($fmode,$fnew,$fsave) = array('a',true,true);
					include_once M_ROOT."./include/fields/$fieldnew[datatype].php";
				}else{
					$sqlstr = '';
					foreach(array('ename','cname','issystem','iscustom','mcommon','available','tbl','innertext','issearch','length',
					'datatype','notnull','mlimit','rpid','isadmin','vieworder','mode','guide','min','max','regular','vdefault') as $k){
						$sqlstr .= ",$k='".addslashes($fieldnew[$k])."'";
					}
					$db->query("INSERT INTO {$tblprefix}fields SET chid='$nchid' $sqlstr");
				}
			}
			updatecache('channels');
			updatecache('btagnames');
			updatecache('fields',$nchid);
		}
		adminlog(lang('copy archive channel'));
		amessage(lang('archive channel copy finish'),"?entry=channels&action=channeledit");

	}
}elseif($action == 'channeldetail' && $chid){
	!checkapermission($sid ? 125 : 54) && amessage(lang('no_apermission'));
	$channel = read_cache('channel',$chid);
	cache_merge($channel,'channel',$sid);
	$fields = read_cache('fields',$chid);
	if(!submitcheck('bchanneldetail')){
		a_guide('channeldetail');
		tabheader("[$channel[cname]]".lang('channel setting'),'channeldetail',"?entry=channels&action=channeldetail&chid=$chid$param_suffix",'4');
		if(!$sid){
			$abstractarr = $thumbarr = $newsarr = $sizearr = array('0' => lang('nosetting'));
			foreach($fields as $k => $field){
				if($field['available']){
					(!$field['mcommon'] && in_array($field['datatype'],array('text','multitext','htmltext'))) && $abstractarr[$k] = $field['cname'];
					(!$field['mcommon'] && in_array($field['datatype'],array('image','images','text','multitext','htmltext'))) && $thumbarr[$k] = $field['cname'];
					in_array($field['datatype'],array('multitext','htmltext')) && $newsarr[$k] = $field['cname'];
					in_array($field['datatype'],array('image','flash','media','file','images','flashs','medias','files',)) && $sizearr[$k] = $field['cname'];
				}
			}
			$autosizemodearr = array('0' => lang('sum'),'1' => lang('oneof'));
			trbasic(lang('admin_self channel'),'channelnew[userforbidadd]',$channel['userforbidadd'],'radio');
			trbasic(lang('archive auto check'),'channelnew[autocheck]',$channel['autocheck'],'radio');
			trbasic(lang('archive auto static'),'channelnew[autostatic]',$channel['autostatic'],'radio');
			trbasic(lang('auto abstract source'),'channelnew[autoabstract]',makeoption($abstractarr,$channel['autoabstract']),'select');
			trbasic(lang('auto thumb source'),'channelnew[autothumb]',makeoption($thumbarr,$channel['autothumb']),'select');
			trbasic(lang('auto keyword source'),'channelnew[autokeyword]',makeoption($abstractarr,$channel['autokeyword']),'select');
			trbasic(lang('auto stat attachment size source'),'channelnew[autosize]',makeoption($sizearr,$channel['autosize']),'select');
			trbasic(lang('auto stat attachment size mode'),'channelnew[autosizemode]',makeradio('channelnew[autosizemode]',$autosizemodearr,$channel['autosizemode']),'');
			trbasic(lang('Baidu map content source'),'channelnew[baidu]',makeoption($newsarr,$channel['baidu']),'select');
			trbasic(lang('fulltxt search source'),'channelnew[fulltxt]',makeoption($newsarr,$channel['fulltxt']),'select');
			trbasic(lang('archive content template'),'channelnew[arctpl]',makeoption(array('' => lang('nosetting')) + mtplsarr('archive'),$channel['arctpl']),'select');
			trbasic(lang('archive prepage template'),'channelnew[pretpl]',makeoption(array('' => lang('nosetting')) + mtplsarr('archive'),$channel['pretpl']),'select');
			trbasic(lang('search template'),'channelnew[srhtpl]',makeoption(array('' => lang('nosetting')) + mtplsarr('search'),$channel['srhtpl']),'select');
			tabfooter();
			$items = array();
			foreach($grouptypes as $gtid => $grouptype){
				if(!$grouptype['forbidden']){
					foreach(ugidsarr($gtid) as $ugid => $ugcname){
						$items[$ugid] = $ugcname;
					}
				}
			}
			$items['0'] = lang('user0');
			$items['-1'] = lang('nouser');
			$num = 3;
			tabheader(lang('issue1 permission setting').'<input class="checkbox" type="checkbox" name="chkall" onclick="checkall(this.form,\'ugidsnew\')">'.lang('selectall'),'','',2 * $num);
			$i = 0;
			foreach($items as $ugid => $item){
				if(!($i % $num)){
					echo "<tr>";
				}
				echo "<td class=\"item1\" width=\"5%\" align=\"center\"><input class=\"checkbox\" type=\"checkbox\" name=\"ugidsnew[$ugid]\" value=\"$ugid\"".(in_array($ugid,$channel['ugids']) ? " checked" : "")."></td>\n".
				"<td class=\"item2\" width=\"28%\">$item</td>\n";
				$i ++;
				if(!($i % $num)){
					echo "</tr>\n";
				}
			}
			if($i % $num){
				while($i % $num){
					echo "<td class=\"item1\" width=\"5%\"></td>\n".
						"<td class=\"item2\" width=\"28%\"></td>\n";
					$i ++;
				}
				echo "</tr>\n";
			}
			tabfooter();
	
			tabheader("[$channel[cname]]".lang('field manager')."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;>><a href=\"?entry=channels&action=fieldadd&chid=$chid\">".lang('add field')."</a>",'','','7');
			trcategory(array(lang('delete'),lang('available'),lang('field cname'),lang('admin_self'),lang('order'),lang('field ename'),lang('field type'),lang('edit')));
			foreach($fields as $k => $field){
				fieldlist($k,$field);
			}
		}else{
			trbasic(lang('archive content template'),'channelnew[arctpl]',makeoption(array('' => lang('nosetting')) + mtplsarr('archive'),$channel['arctpl']),'select');
			trbasic(lang('archive prepage template'),'channelnew[pretpl]',makeoption(array('' => lang('nosetting')) + mtplsarr('archive'),$channel['pretpl']),'select');
		}
		tabfooter('bchanneldetail');
	}else{
		if(!$sid){
			if(!empty($delete)){
				foreach($delete as $id){
					if(!$fields[$id]['mcommon']){
						$customtable = "archives_$chid";
						if(!empty($fields[$id]['istxt'])){//如果是文本字段,需要删除相关的存储文件
							$query = $db->query("SELECT $id FROM {$tblprefix}$customtable");
							while($row = $db->fetch_array($query)) txtunlink($row[$id]);
						}
						$db->query("ALTER TABLE {$tblprefix}$customtable DROP $id",'SILENT'); 
						$db->query("DELETE FROM {$tblprefix}fields WHERE ename='$id' AND chid='$chid'"); 
						unset($fields[$id]);
						unset($fieldsnew[$id]);
						del_cache('field',$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['available'] = $field['issystem'] ? $field['available'] : (empty($fieldsnew[$id]['available']) ? 0 : 1);
				$field['isadmin'] = $field['issystem'] ? '0' : (empty($fieldsnew[$id]['isadmin']) ? 0 : 1);
				$field['vieworder'] = max(0,intval($fieldsnew[$id]['vieworder']));
				$db->query("UPDATE {$tblprefix}fields SET cname='$field[cname]',available='$field[available]',vieworder='$field[vieworder]',isadmin='$field[isadmin]' WHERE ename='$id' AND chid='$chid'");
			}
			$channelnew['ugids'] = !empty($ugidsnew) ? implode(',',$ugidsnew) : '';
			$db->query("UPDATE {$tblprefix}channels SET 
				userforbidadd='$channelnew[userforbidadd]', 
				autoabstract='$channelnew[autoabstract]', 
				autokeyword='$channelnew[autokeyword]', 
				autocheck='$channelnew[autocheck]', 
				autostatic='$channelnew[autostatic]', 
				autothumb='$channelnew[autothumb]', 
				autosize='$channelnew[autosize]', 
				autosizemode='$channelnew[autosizemode]', 
				baidu='$channelnew[baidu]', 
				fulltxt='$channelnew[fulltxt]', 
				arctpl='$channelnew[arctpl]',
				pretpl='$channelnew[pretpl]',
				srhtpl='$channelnew[srhtpl]',
				ugids='$channelnew[ugids]'
				WHERE chid='$chid'");
			updatecache('channels');
			updatecache('fields',$chid);
			updatecache('btagnames');
		}else{
			$s_channels = empty($subsites[$sid]['channels']) ? array() : $subsites[$sid]['channels'];
			$s_channels[$chid]['arctpl'] = $channelnew['arctpl'];
			$s_channels[$chid]['pretpl'] = $channelnew['pretpl'];
			$s_channels[$chid]['srhtpl'] = $channelnew['srhtpl'];
			$s_channels = addslashes(serialize($s_channels));
			$db->query("UPDATE {$tblprefix}subsites SET channels='$s_channels' WHERE sid='$sid'");
			updatecache('subsites');
		}
		adminlog(lang('detail0 modify archive channel'));
		amessage(lang('channel modify finish'), "?entry=channels&action=channeledit$param_suffix");
	}
}
elseif($action == 'fieldadd' && $chid){
	!checkapermission(54) && amessage(lang('no_apermission'));
	if($sid && $sid_self) amessage(lang('msite admin item !'));
	if(!submitcheck('bfieldadd')){
		a_guide('fieldadd');
		tabheader(lang('add archive channel field')."&nbsp; -&nbsp; ".$channels[$chid]['cname'],'fieldadd',"?entry=channels&action=fieldadd&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('bfieldaddpre',lang('continue'));
		}else{
			list($fmode,$fnew,$fsave) = array('a',true,false);
			include_once M_ROOT."./include/fields/$fieldnew[datatype].php";
			tabfooter('bfieldadd',lang('add'));
		}
		check_submit_func($submitstr);
	}else{
		$enamearr = $usednames['fields'];
		$fields = read_cache('fields',$chid);
		foreach($fields as $ename => $field){
			if(!in_array($ename,$enamearr)) $enamearr[] = $ename;
		}
		$fconfigarr = array(
		'errorurl' => '?entry=channels&action=channeldetail&chid='.$chid,
		'enamearr' => $enamearr,
		'altertable' => $tblprefix.'archives_'.$chid,
		'fieldtable' => $tblprefix.'fields',
		'sqlstr' => "chid=$chid,iscustom='1',available='1',tbl='custom'",
		'filterstr' => "/[^a-zA-Z_0-9]+|^[0-9_]+|^cotype(.*?)/",
		);
		list($fmode,$fnew,$fsave) = array('a',true,true);
		include_once M_ROOT."./include/fields/$fieldnew[datatype].php";
		adminlog(lang('add archive channel message field'));
		updatecache('fields',$chid);
		updatecache('btagnames');
		amessage(lang('field add finish'), '?entry=channels&action=channeldetail&chid='.$chid);
	}
}
elseif($action == 'channeldel' && $chid) {
	!checkapermission(54) && amessage(lang('no_apermission'));
	if($sid && $sid_self) amessage(lang('msite admin item !'));
	$channel = $channels[$chid];
	if(empty($confirm)){
		$message = lang('del_alert')."<br><br>";
		$message .= lang('confirm click')."[<a href=?entry=channels&action=channeldel&chid=".$chid."&confirm=1>".lang('delete')."</a>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
		$message .= lang('giveup click')."[<a href=?entry=channels&action=channeledit>".lang('goback')."</a>]";
		amessage($message);
	}
	if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}archives WHERE chid='$chid'")){
		amessage(lang('channel without archive can delete'), '?entry=channels&action=channeledit');
	}

	$customtable = "archives_$chid";
	$db->query("DROP TABLE IF EXISTS {$tblprefix}$customtable",'SILENT');
	$db->query("DELETE FROM {$tblprefix}channels WHERE chid='$chid'",'SILENT');
	$db->query("DELETE FROM {$tblprefix}fields WHERE chid='$chid'",'SILENT');
	//清除相关缓存
	$fields = array_keys(read_cache('fields',$chid));
	foreach($fields as $k) del_cache('field',$chid,$k);
	del_cache('fields',$chid);
	del_cache('channel',$chid);
	@unlink(M_ROOT.'./dynamic/mguides/add_'.$chid.'.php');
	@unlink(M_ROOT.'./dynamic/mguides/search_'.$chid.'.php');
	adminlog(lang('delete archive channel'));
	updatecache('channels');
	updatecache('btagnames');
	amessage(lang('archive channel delete finish'),"?entry=channels&action=channeledit");
}elseif($action == 'fielddetail' && $chid && $fieldename){
	!checkapermission(54) && amessage(lang('no_apermission'));
	if($sid && $sid_self) amessage(lang('msite admin item !'));
	!isset($channels[$chid]) && amessage(lang('confirmchoose channel'), '?entry=channels&action=channeledit');
	$field = read_cache('field',$chid,$fieldename);
	empty($field) && amessage(lang('confirmchoose field'), '?entry=channels&action=channeldetail&chid='.$chid);
	if(!submitcheck('bfielddetail')){
		a_guide('fielddetail');
		$submitstr = '';
		tabheader(lang('edit channel field')."&nbsp; -&nbsp; ".$channels[$chid]['cname']."&nbsp; -&nbsp; $field[cname]",'fielddetail',"?entry=channels&action=fielddetail&chid=$chid&fieldename=$fieldename",2,0,1);
		list($fmode,$fnew,$fsave) = array('a',false,false);
		include_once M_ROOT."./include/fields/$field[datatype].php";
		tabfooter('bfielddetail');
		check_submit_func($submitstr);
	}else{
		$fconfigarr = array(
		'altertable' => $tblprefix.'archives_'.$chid,
		'fieldtable' => $tblprefix.'fields',
		'wherestr' => "WHERE ename='$fieldename' AND chid=$chid",
		);
		list($fmode,$fnew,$fsave) = array('a',false,true);
		include_once M_ROOT."./include/fields/$field[datatype].php";
		updatecache('fields',$chid);
		adminlog(lang('detail0 modify archive channel message field'));
		amessage(lang('field edit finish'),'?entry=channels&action=channeldetail&chid='.$chid);
	}
}elseif($action == 'initfieldadd'){
	!checkapermission(55) && amessage(lang('no_apermission'));
	if($sid && $sid_self) amessage(lang('msite admin item !'));
	if(!submitcheck('binitfieldadd')){
		a_guide('initfieldadd');
		tabheader(lang('add common field'),'initfieldadd',"?entry=channels&action=initfieldadd",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('binitfieldaddpre',lang('continue'));
		}else{
			list($fmode,$fnew,$fsave) = array('i',true,false);
			include_once M_ROOT."./include/fields/$fieldnew[datatype].php";
			tabfooter('binitfieldadd',lang('add'));
		}
		check_submit_func($submitstr);
	}else{
		$enamearr = $usednames['fields'];
		$fconfigarr = array(
			'errorurl' => '?entry=channels&action=initfieldsedit',
			'enamearr' => $enamearr,
			'altertable' => $tblprefix.'archives',
			'fieldtable' => $tblprefix.'fields',
			'sqlstr' => "iscustom='1',mcommon='1',available='1',tbl='main'",
			'filterstr' => "/[^a-zA-Z_0-9]+|^[0-9_]+|^cotype(.*?)|^album(.*?)/",
		);
		list($fmode,$fnew,$fsave) = array('i',true,true);
		include_once M_ROOT."./include/fields/$fieldnew[datatype].php";
		updatecache('initfields');
		$chids = array_keys($channels);
		foreach($chids as $chid){
			$sqlstr = "ename='$fieldnew[ename]',cname='$fieldnew[cname]',issystem='0',iscustom='1',mcommon='1',chid='$chid',tbl='main'";
			foreach(array('datatype','length','notnull','nohtml','mode','guide','isadmin','mlimit','rpid','issearch','innertext','mcommon','min','max','regular','isfunc','func','vdefault') as $var){
				isset($fieldnew[$var]) && $sqlstr .= (!$sqlstr ? '' : ',')."$var='".$fieldnew[$var]."'";
			}
			$db->query("INSERT INTO {$tblprefix}fields SET $sqlstr");
			updatecache('fields',$chid);
		}
		adminlog(lang('add archive common message field'));
		updatecache('btagnames');
		updatecache('usednames','fields');
		amessage(lang('field add finish'), '?entry=channels&action=initfieldsedit');
	}
}
elseif($action == 'initfieldsedit'){
	!checkapermission(55) && amessage(lang('no_apermission'));
	if($sid && $sid_self) amessage(lang('msite admin item !'));
	if(!submitcheck('binitfieldsedit')){
		a_guide('initfieldsedit');
		tabheader(lang('common field manager')."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;>><a href=\"?entry=channels&action=initfieldadd\">".lang('add field')."</a>",'initfieldsedit','?entry=channels&action=initfieldsedit','5');
		trcategory(array(lang('delete'),lang('field cname'),lang('field ename'),lang('field type'),lang('edit')));
		foreach($initfields as $k => $field) {
			fieldlist($k,$field,'init');
		}
		tabfooter('binitfieldsedit');
	}else{
		if(!empty($delete)){
			$chids = array_keys($channels);
			foreach($delete as $fieldename){
				if($initfields[$fieldename]['iscustom']){
					if(!empty($initfields[$fieldename]['istxt'])){//删除相应的文件存储记录
						$query = $db->query("SELECT $fieldename FROM {$tblprefix}archives");
						while($row = $db->fetch_array($query)) txtunlink($row[$fieldename]);
					}
					$db->query("ALTER TABLE {$tblprefix}archives DROP $fieldename"); 
					$db->query("DELETE FROM {$tblprefix}fields WHERE ename='$fieldename'");
					unset($initfields[$fieldename]);
					unset($fieldsnew[$fieldename]);
					foreach($chids as $chid){
						del_cache('field',$chid,$fieldename);
					}
				}
			}
			foreach($chids as $chid){
				updatecache('fields',$chid);
			}
			updatecache('usednames','fields');
			updatecache('btagnames');
		}
		foreach($initfields as $id => $field){
			$field['cname'] = trim($fieldsnew[$id]['cname']) ? trim($fieldsnew[$id]['cname']) : $field['cname'];
			$db->query("UPDATE {$tblprefix}fields SET cname='$field[cname]' WHERE ename='$id' AND chid='0'");
		}
		adminlog(lang('edit archive common message field manager list'));
		updatecache('initfields');
		amessage(lang('field edit finish'),'?entry=channels&action=initfieldsedit');
	}
}elseif($action == 'initfielddetail' && $fieldename){
	!checkapermission(55) && amessage(lang('no_apermission'));
	if($sid && $sid_self) amessage(lang('msite admin item !'));
	if(empty($initfields[$fieldename])){
		amessage(lang('confirmchoose field'), '?entry=channels&action=initfieldsedit');
	}
	$field = $initfields[$fieldename];
	if(!submitcheck('binitfielddetail')){
		a_guide('initfielddetail');
		tabheader(lang('common field manager'),'initfielddetail',"?entry=channels&action=initfielddetail&fieldename=$fieldename",2,0,1);
		$submitstr = '';
		list($fmode,$fnew,$fsave) = array('i',false,false);
		include_once M_ROOT."./include/fields/$field[datatype].php";
		tabfooter('binitfielddetail');
		check_submit_func($submitstr);
	}else{
		$fconfigarr = array(
			'altertable' => $tblprefix.'archive',
			'fieldtable' => $tblprefix.'fields',
			'wherestr' => "WHERE ename='$fieldename' AND chid=0",
		);
		list($fmode,$fnew,$fsave) = array('i',false,true);
		include_once M_ROOT."./include/fields/$field[datatype].php";
		adminlog(lang('detail0 modify archive common message field'));
		updatecache('initfields');
		amessage(lang('field modify finish'),'?entry=channels&action=initfieldsedit');
	}
}
?>