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

    <?
(!defined('M_COM') || !defined('M_ADMIN')) && exit('No Permission');
aheader();
!in_array($ttype,array('ctag','utag','rtag','ptag')) && amessage(lang('param error'));
$aps = !$sid ? array('ctag' => 88,'utag' => 87,'rtag' => 90,'ptag' => 89,) : array('ctag' => 149,'utag' => 148,'rtag' => 151,'ptag' => 150,);
!checkapermission($aps[$ttype]) && amessage(lang('no_apermission'));
unset($aps);
load_cache('channels,fchannels,fcatalogs,cotypes,votes,commus,shipings,vcatalogs,mchannels,dbsources');
load_cache('catalogs,altypes',$sid);
cache_merge($channels,'channels',$sid);
include_once M_ROOT."./include/upload.cls.php";
include_once M_ROOT."./include/fields.fun.php";
include_once M_ROOT."./include/template.fun.php";
load_cache($ttype.'s',$sid);
$mtags = &${$ttype.'s'};
switch($ttype){
	case 'ctag':
		$tclassarr = array(
		'archives' => lang('archive list'),
		'alarchives' => lang('inalbum archive list'),
		'searchs' => lang('search archive list'),
		'relates' => lang('related archive list'),
		'outinfos' => lang('free pick list'),
		'archive' => lang('archive content mod'),
		'arcscount' => lang('archive amount stat'),
		'catalogs' => lang('catas list'),
		'cnode' => lang('catas cnode'),
		'functions' => lang('iscustom func list'),
		'nownav' => lang('catas place navi'),
		'context' => lang('context'),
		'acontext' => lang('inalbum context'),
		'farchives' => lang('freeinfo list'),
		'farchive' => lang('message content mod'),
		'freeurl' => lang('isolute page0 url'),
		'commus' => lang('commu message list'),
		'vote' => lang('vote mod'),
		'votes' => lang('vote list'),
		'members' => lang('member list'),
		'userinfos' => lang('member message'),
		'memscount' => lang('member amount stat'),
		'keywords' => lang('keyword list'),
		'channels' => lang('archive channel list'),
		'mchannels' => lang('member channel list'),
		'mcatalogs' => lang('catas list').'('.lang('space0').')',
		'mnownav' => lang('catas place').'('.lang('space0').')',
		'subsites' => lang('subsite list'),
		'scatalogs' => lang('oversite catas list'),
		'sarchives' => lang('oversite archive list'),
		);
	break;
	case 'utag':
		$tclassarr = array(
		'image' => lang('image mod'),
		'file' => lang('download mod'),
		'flash' => lang('flash mod'),
		'media' => lang('media mod'),
		'images' => lang('images list'),
		'files' => lang('download list'),
		'flashs' => lang('flash list'),
		'medias' => lang('media list'),
		'follow' => lang('attachment url'),
		'date' => lang('time view tag'),
		'odeal' => lang('txt deal tag'),
		'arcfee' => lang('archive fee message'),
		'function' => lang('iscustom func tag')
		);
	break;
	case 'rtag':
		$tclassarr = array('' => '',);
	break;
	case 'ptag':
		$tclassarr = array(
		'normal' => lang('pt txt'),
		'archives' => lang('archive list'),
		'alarchives' => lang('inalbum archive list'),
		'functions' => lang('iscustom func list'),
		'farchives' => lang('freeinfo list'),
		'images' => lang('pt images'),
		'commus' => lang('commu message list'),
		'searchs' => lang('search archive list'),
		'outinfos' => lang('free pick list'),
		'members' => lang('member list'),
		);
	break;
}
$unsetvars = array('casource','cainherit','caidson','urlmode','chsource','atsource','space','ucsource','detail','rec','orderby','orderby1','orderstr','startno','wherestr','simple','alimits',
'fmode','date','time','tmode','width','height','maxwidth','maxheight','expand','emptyurl','emptytitle','dealhtml','trim','badword','wordlink','nl2br','randstr',
'next','atsource','atid','chid','caid','mid','aid','func','mpfunc','sqlstr','relays','vid','vsource','vids','chdata','js',);//只要为空或为0就可以清除的参数
foreach($cotypes as $k => $cotype){
	$unsetvars[] = 'cosource'.$k;
	$unsetvars[] = 'coinherit'.$k;
	$unsetvars[] = 'ccid'.$k;
	$unsetvars[] = 'ccidson'.$k;
}
if($action == 'mtagadd'){
	$forward = empty($forward) ? M_REFERER : $forward;
	$forwardstr = '&forward='.urlencode($forward);
	$tclass = empty($mtagnew['tclass']) ? '' : $mtagnew['tclass'];
	if($tclass == 'scatalogs'){
		$nsidsarr = array('-1' => lang('active subsite'),'0' => lang('msite'),) + sidsarr(1);
	}elseif($tclass == 'sarchives'){
		$nsidsarr = array('-2' => lang('nolimit subsite'),'-1' => lang('active subsite'),'0' => lang('msite'),) + sidsarr(1);
	}
	if(!submitcheck('bmtagadd') && !submitcheck('bmtagcode')){
		a_guide($ttype.(empty($mtagnew['tclass']) ? 'edit' : $mtagnew['tclass']));
		$upform = (!empty($mtagnew['tclass']) && in_array($mtagnew['tclass'],array('image','images',))) ? 1 : 0;
		$helpstr = empty($mtagnew['tclass']) || $ttype == 'rtag' ? '' : "&nbsp; &nbsp; [<a href=\"./taghelp.html#".(str_replace('tag','',$ttype).'_'.$mtagnew['tclass'])."\" target=\"08cmstaghelp\">".lang('help')."</a>]";
		tabheader(lang('add '.$ttype).$helpstr,'mtagsadd',"?entry=mtags&action=mtagadd&ttype=$ttype$param_suffix$forwardstr",2,$upform);
		trbasic(lang('tag cname'),'mtagnew[cname]',empty($mtagnew['cname']) ? '' : $mtagnew['cname']);
		trbasic(lang('en id'),'mtagnew[ename]',empty($mtagnew['ename']) ? '' : $mtagnew['ename']);
		if(empty($mtagnew['tclass']) && $ttype != 'rtag'){
		//if(!submitcheck('bmtagaddpre') && !submitcheck('bmtagaddpre1') && $ttype != 'rtag'){
			trbasic(lang('tag type'),'mtagnew[tclass]',makeoption($tclassarr),'select');
			tabfooter('bmtagaddpre',lang('continue'));
		}elseif($ttype != 'rtag' && in_array($mtagnew['tclass'],array('scatalogs','sarchives',)) && !isset($mtagnew['setting']['nsid'])){
		//}elseif(!submitcheck('bmtagaddpre1') && $ttype != 'rtag' && in_array($mtagnew['tclass'],array('scatalogs','sarchives',))){
			trbasic(lang('tag type'),'',$tclassarr[$mtagnew['tclass']],'');
			echo "<input type=\"hidden\" name=\"mtagnew[tclass]\" value=\"$mtagnew[tclass]\">\n";
			trbasic(lang('subsite attr'),'mtagnew[setting][nsid]',makeoption($nsidsarr),'select');
			tabfooter('bmtagaddpre1',lang('continue'));
		}else{
			if($ttype != 'rtag'){
				trbasic(lang('tag type'),'',$tclassarr[$mtagnew['tclass']],'');
				echo "<input type=\"hidden\" name=\"mtagnew[tclass]\" value=\"$mtagnew[tclass]\">\n";
				if(in_array($mtagnew['tclass'],array('scatalogs','sarchives',))){
					trbasic(lang('subsite attr'),'',$nsidsarr[$mtagnew['setting']['nsid']],'');
					echo "<input type=\"hidden\" name=\"mtagnew[setting][nsid]\" value=\"".$mtagnew['setting']['nsid']."\">\n";
				}
			}
			include_once M_ROOT."./include/mtags/$ttype/".($tclass ? $tclass : 'tag').".php";
			echo "<input class=\"button\" type=\"submit\" name=\"bmtagadd\" value=\"".lang('add')."\">".
			($ttype != 'rtag' ? "&nbsp; &nbsp; &nbsp; &nbsp; <input class=\"button\" type=\"submit\" name=\"bmtagcode\" value=\"".lang('create code')."\" onclick=\"this.form.action='?entry=mtags&action=mtagadd&ttype=$ttype$param_suffix';this.form.target='mtagcodeiframe';\">" : '').
			"</form><br><iframe id=\"mtagcodeiframe\" name=\"mtagcodeiframe\" frameborder=\"0\" width=\"100%\"  height=\"200\" style=\"display:none\"></iframe>";
		}
	}elseif(submitcheck('bmtagcode')){
		$errormsg = '';
		if(empty($mtagnew['ename'])){
			$errormsg = lang('please input tag en id');
		}elseif(preg_match("/[^a-z_A-Z0-9]+/",$mtagnew['ename'])){
			$errormsg = lang('tag en id illegal');
		}else{
			$mtagnew['ename'] = trim(strtolower($mtagnew['ename']));
			$usedename = array_keys($mtags);
			if(in_array($mtagnew['ename'], $usedename)) $errormsg = lang('tag en id illegal');
		}
		if(!$errormsg){
			$tclass = empty($mtagnew['tclass']) ? '' : $mtagnew['tclass'];
			include_once M_ROOT."./include/mtags/$ttype/".($tclass ? $tclass : 'tag').".php";
			if(!$errormsg){
				$mtagnew['setting'] = empty($mtagnew['setting']) ? array() : $mtagnew['setting'];
				if(!empty($mtagnew['setting'])){
					foreach($mtagnew['setting'] as $key => $val){
						if(in_array($key,$unsetvars) && empty($val)) unset($mtagnew['setting'][$key]);
					}
				}
				$mtagnew['template'] = empty($mtagnew['template']) ? '' : stripslashes($mtagnew['template']);
				$mtagcode = mtag_code($ttype,$mtagnew);
				echo "<script language=\"javascript\">parent.$('mtagcodeiframe').style.display='';</script>".
				"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#D3ECFC\" style=\"padding:0px;margin:0px;\">".
				"<tr><td class=\"item1\" width=\"25%\">".lang('current tag of template code').
				"<br><br>[<a href='#' onclick=\"mtagcodecopy($('mtagcode'));\">".lang('copy code')."</a>]&nbsp; &nbsp; [<a href='#' onclick=\"parent.$('mtagcodeiframe').style.display='none';\">".lang('close code')."</a>]</td><td class=\"item2\">".
				"<textarea rows=\"8\" name=\"mtagcode\" id=\"mtagcode\" cols=\"110\">".(empty($mtagcode) ? '' : htmlspecialchars(str_replace("\t","    ",$mtagcode)))."</textarea>";
				"</td></tr></table>";
			}
		}
		echo "<script language=\"javascript\">".($errormsg ? "alert('$errormsg');" : '')."parent.$('mtagsadd').action='?entry=mtags&action=mtagadd&ttype=$ttype$param_suffix';parent.$('mtagsadd').target='_self';</script>";
		mexit();
	}else{
		$error_url = "?entry=mtags&action=mtagadd&ttype=$ttype$param_suffix$forwardstr".($ttype == 'rtag' ? '' : '&mtagnew[tclass]='.$mtagnew['tclass']);
		if(empty($mtagnew['cname']) || empty($mtagnew['ename'])){
			amessage(lang('tag data missing'),$error_url);
		}
		if(preg_match("/[^a-z_A-Z0-9]+/",$mtagnew['ename'])){
			amessage(lang('tag en id illegal'),$error_url);
		}
		$mtagnew['ename'] = trim(strtolower($mtagnew['ename']));
		$usedename = array_keys($mtags);
		if(in_array($mtagnew['ename'], $usedename)){
			amessage(lang('tag en id repeat'),$error_url);
		}
		$tclass = empty($mtagnew['tclass']) ? '' : $mtagnew['tclass'];
		include_once M_ROOT."./include/mtags/$ttype/".($tclass ? $tclass : 'tag').".php";
		$mtagnew['setting'] = empty($mtagnew['setting']) ? array() : $mtagnew['setting'];
		if(!empty($mtagnew['setting'])){
			foreach($mtagnew['setting'] as $key => $val){
				if(in_array($key,$unsetvars) && empty($val)) unset($mtagnew['setting'][$key]);
			}
		}
		$mtagnew['template'] = empty($mtagnew['template']) ? '' : stripslashes($mtagnew['template']);
		$mtag = array(
		'cname' => stripslashes($mtagnew['cname']),
		'ename' => $mtagnew['ename'],
		'tclass' => $tclass,
		'template' => $mtagnew['template'],
		'setting' => $mtagnew['setting'],
		);
		$mtags[$mtagnew['ename']] = array('tclass' => $tclass,'vieworder' => 0,);
		cache2file($mtag,cache_name($ttype,$mtagnew['ename']),$ttype,$sid);
		mtags_order($mtags);
		cache2file($mtags,$ttype.'s',$ttype.'s',$sid);
		adminlog(lang('add '.$ttype));
		amessage(lang('tag add finish'),$forward);
	}
}elseif($action == 'mtagcode'){
	empty($mtags[$tname]) && amessage(lang('confirmchoose tag'));
	$mtag = read_cache($ttype,$tname,'',$sid);
	$tclass = empty($mtag['tclass']) ? '' : $mtag['tclass'];
	$mtagcode = mtag_code($ttype,$mtag);
	$helpstr = $ttype == 'rtag' ? '' : "&nbsp; &nbsp; [<a href=\"./taghelp.html#".(str_replace('tag','',$ttype).'_'.$tclass)."\" target=\"08cmstaghelp\">".lang('help')."</a>]";
	tabheader(lang($ttype).'&nbsp; -&nbsp; '.$tclassarr[$mtag['tclass']].'&nbsp; -&nbsp; '.$mtag['cname']);
	echo "<tr><td class=\"item1\">".lang('current tag template code').$helpstr.
	"<br><br>[<a href='#' onclick=\"mtagcodecopy($('mtagcode'));\">".lang('copy code')."</a>]&nbsp; &nbsp; [<a href='#' onclick=\"window.close();\">".lang('close window')."</a>]".
	"</td><td class=\"item2\"><textarea rows=\"15\" name=\"mtagcode\" id=\"mtagcode\" cols=\"110\">".(empty($mtagcode) ? '' : htmlspecialchars(str_replace("\t","    ",$mtagcode)))."</textarea></td></tr>";
	tabfooter();	
}elseif($action == 'mtagsedit'){
	$ftclass = empty($ftclass) ? '' : $ftclass;
	if(!submitcheck('bmtagsedit')){
		a_guide($ttype.'edit');
		$rsubmiturl = "?entry=mtags&action=mtagsedit&ttype=$ttype$param_suffix".($ftclass && $ttype != 'rtag' ? "&ftclass=$ftclass" : '');
		if($ttype != 'rtag'){
			$ftclassarr = array('' => lang('nolimit type')) + $tclassarr;
			$filterbox = lang('filter0 tag').'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;';
			$filterbox .= "<select style=\"vertical-align: middle;\" name=\"ftclass\" onchange=\"redirect('?entry=mtags&action=mtagsedit&ttype=$ttype$param_suffix&ftclass=' + this.options[this.selectedIndex].value);\">";
			foreach($ftclassarr as $k => $v){
				$filterbox .= "<option value=\"$k\"".($ftclass == $k ? ' selected' : '').">$v</option>";
			}
			$filterbox .= "</select>";			
			tabheader($filterbox);
			tabfooter();
		}

		tabheader(lang($ttype.' admin')."&nbsp;&nbsp;&nbsp;&nbsp;[<a href=\"?entry=mtags&action=mtagadd&ttype=$ttype$param_suffix\">".lang('add').'</a>]','mtagsedit',$rsubmiturl,'9');
		trcategory(array(lang('sn'),'<input class="checkbox" type="checkbox" name="chkall" onclick="checkall(this.form)">'.lang('del'),lang('tag cname'),lang('tag style'),lang('type'),lang('order'),lang('edit'),lang('copy'),lang('code')));
		$i = 1;
		foreach($mtags as $key => $mtag){
			if(empty($ftclass) || $ftclass == $mtag['tclass']){
				$vieworder = $mtag['vieworder'];
				$mtag = read_cache($ttype,$key,'',$sid);
				$tclass = $tclassarr[$mtag['tclass']];
				$mtagcodestr = $tclass ? "<a href=\"?entry=mtags&action=mtagcode&ttype=$ttype$param_suffix&tname=$key\" target=\"_blank\">".lang('code')."</a>" : '';
				echo "<tr>".
					"<td class=\"item1\" width=\"30\" align=\"center\">$i</td>\n".
					"<td class=\"item2\" width=\"40\" align=\"center\"><input class=\"checkbox\" type=\"checkbox\" name=\"delete[$key]\" value=\"$key\"></td>\n".
					"<td class=\"item1\"><input type=\"text\" size=\"30\" maxlength=\"30\" name=\"mtagsnew[$key][cname]\" value=\"".mhtmlspecialchars($mtag['cname'])."\"></td>\n".
					"<td class=\"item2\">".tag_style($key)."</td>\n".
					"<td class=\"item1\" width=\"100\">$tclass</td>\n".
					"<td class=\"item2\" width=\"50\" align=\"center\"><input type=\"text\" size=\"4\" name=\"mtagsnew[$key][vieworder]\" value=\"$vieworder\"></td>\n".
					"<td class=\"item1\" width=\"30\" align=\"center\"><a href=\"?entry=mtags&action=mtagsdetail&ttype=$ttype$param_suffix&tname=$key\">".lang('detail')."</a></td>\n".
					"<td class=\"item2\" width=\"30\" align=\"center\"><a href=\"?entry=mtags&action=mtagscopy&ttype=$ttype$param_suffix&tname=$key\">".lang('copy')."</a></td>\n".
					"<td class=\"item1\" width=\"30\" align=\"center\">$mtagcodestr</td>\n".
					"</tr>\n";
				$i ++;
			}
		}
		tabfooter('bmtagsedit',lang('modify'));
	}else{
		if(!empty($delete)){
			foreach($delete as $key){
				del_cache($ttype,$key,'',$sid);
				unset($mtagsnew[$key],$mtags[$key]);
			}
		}
		if(!empty($mtagsnew)){
			foreach($mtagsnew as $key => $mtagnew){
				$mtagnew['vieworder'] = max(0,intval($mtagnew['vieworder']));
				$mtagnew['cname'] = empty($mtagnew['cname']) ? $mtags[$key]['cname'] : $mtagnew['cname'];
				$mtag = read_cache($ttype,$key,'',$sid);
				if($mtagnew['cname'] != $mtag['cname'] || $mtagnew['vieworder'] != $mtags[$key]['vieworder']){
					$mtag['cname'] = stripslashes($mtagnew['cname']);
					$mtags[$key]['vieworder'] = $mtagnew['vieworder'];
					cache2file($mtag,cache_name($ttype,$key),$ttype,$sid);
				}
			}
		}
		mtags_order($mtags);
		cache2file($mtags,$ttype.'s',$ttype.'s',$sid);
		adminlog(lang('edit '.$ttype.' manager list'));
		amessage(lang('tag modify finish'),M_REFERER);
	}
}
elseif($action == 'mtagscopy' && $tname){
	$forward = empty($forward) ? M_REFERER : $forward;
	$forwardstr = '&forward='.urlencode($forward);
	empty($mtags[$tname]) && amessage(lang('confirmchoose tag'),$forward);
	$mtag = read_cache($ttype,$tname,'',$sid);
	if(!submitcheck('bmtagscopy')){
		a_guide($ttype.'edit');
		tabheader(lang('copy '.$ttype),'mtagscopy',"?entry=mtags&action=mtagscopy&ttype=$ttype$param_suffix&tname=$tname$forwardstr");
		$ttype != 'rtag' && trbasic(lang('tag type'),'',$tclassarr[$mtag['tclass']],'');
		trbasic(lang('soc tag cname'),'',$mtag['cname'],'');
		trbasic(lang('soc tag id'),'',$tname,'');
		trbasic(lang('new tag cname'),'mtagnew[cname]');
		trbasic(lang('new tag id'),'mtagnew[ename]');
		tabfooter('bmtagscopy');
	}
	else{
		if(!$mtagnew['cname'] || !$mtagnew['ename']){
			amessage(lang('tag data missing'),M_REFERER);
		}
		if(preg_match("/[^a-z_A-Z0-9]+/",$mtagnew['ename'])){
			amessage(lang('tag en id illegal'),M_REFERER);
		}
		$mtagnew['ename'] = trim(strtolower($mtagnew['ename']));
		$usedename = array_keys($mtags);
		if(in_array($mtagnew['ename'], $usedename)){
			amessage(lang('tag en id repeat'),M_REFERER);
		}
		$mtag['cname'] = stripslashes($mtagnew['cname']);
		$mtag['ename'] = $mtagnew['ename'];
		$mtags[$mtagnew['ename']] = array('tclass' => $mtag['tclass'],'vieworder' => 0,);
		cache2file($mtag,cache_name($ttype,$mtagnew['ename']),$ttype,$sid);
		mtags_order($mtags);
		cache2file($mtags,$ttype.'s',$ttype.'s',$sid);
		adminlog(lang('copy '.$ttype));
		amessage(lang('tag copy finish'),$forward);
	}
}
elseif($action == 'mtagsdetail' && $tname){
	$forward = empty($forward) ? M_REFERER : $forward;
	$forwardstr = '&forward='.urlencode($forward);
	empty($mtags[$tname]) && amessage(lang('confirmchoose tag'),$forward);
	$mtag = read_cache($ttype,$tname,'',$sid);
	$tclass = empty($mtag['tclass']) ? '' : $mtag['tclass'];
	if($tclass == 'scatalogs'){
		$nsidsarr = array('-1' => lang('active subsite'),'0' => lang('msite'),) + sidsarr(1);
	}elseif($tclass == 'sarchives'){
		$nsidsarr = array('-2' => lang('nolimit subsite'),'-1' => lang('active subsite'),'0' => lang('msite'),) + sidsarr(1);
	}
	if(!submitcheck('bmtagsdetail') && !submitcheck('bmtagcode')){
		a_guide($ttype.(empty($mtag['tclass']) ? 'edit' : $mtag['tclass']));
		$upform = in_array($mtag['tclass'],array('image','images',)) ? 1 : 0;
		$helpstr = $ttype == 'rtag' ? '' : "&nbsp; &nbsp; [<a href=\"./taghelp.html#".(str_replace('tag','',$ttype).'_'.$mtag['tclass'])."\" target=\"08cmstaghelp\">".lang('help')."</a>]";
		tabheader(lang($ttype.' setting').$helpstr,'mtagsdetail',"?entry=mtags&action=mtagsdetail&ttype=$ttype$param_suffix&tname=$tname$forwardstr",2,$upform);
		($ttype != 'rtag') && trbasic(lang('tag type'),'',$tclassarr[$mtag['tclass']],'');
		trbasic(lang('tag cname'),'mtagnew[cname]',$mtag['cname']);
		trbasic(lang('en id'),'mtagnew[ename]',$tname);
		if(!submitcheck('bmtagaddpre') && $ttype != 'rtag' && in_array($mtag['tclass'],array('scatalogs','sarchives',))){
			trbasic(lang('subsite attr'),'mtagnew[setting][nsid]',makeoption($nsidsarr,$mtag['setting']['nsid']),'select');
			tabfooter('bmtagaddpre',lang('continue'));
		}else{
			if(in_array($mtag['tclass'],array('scatalogs','sarchives',))){
				trbasic(lang('subsite attr'),'',$nsidsarr[$mtagnew['setting']['nsid']],'');
				echo "<input type=\"hidden\" name=\"mtagnew[setting][nsid]\" value=\"".$mtagnew['setting']['nsid']."\">\n";
			}
			include_once M_ROOT."./include/mtags/$ttype/".($tclass ? $tclass : 'tag').".php";
			echo "<input class=\"button\" type=\"submit\" name=\"bmtagsdetail\" value=\"".lang('submit')."\">".
			($ttype != 'rtag' ? "&nbsp; &nbsp; &nbsp; &nbsp; <input class=\"button\" type=\"submit\" name=\"bmtagcode\" value=\"".lang('create code')."\" onclick=\"this.form.action='?entry=mtags&action=mtagsdetail&ttype=$ttype$param_suffix&tname=$tname';this.form.target='mtagcodeiframe';\">" : '').
			"</form><br><iframe id=\"mtagcodeiframe\" name=\"mtagcodeiframe\" frameborder=\"0\" width=\"100%\"  height=\"200\" style=\"display:none\"></iframe>";
		}
	}elseif(submitcheck('bmtagcode')){
		$errormsg = '';
		if(empty($mtagnew['ename'])){
			$errormsg = lang('please input tag en id');
		}elseif(preg_match("/[^a-z_A-Z0-9]+/",$mtagnew['ename'])){
			$errormsg = lang('tag en id illegal');
		}else{
			$mtagnew['ename'] = trim(strtolower($mtagnew['ename']));
			$usedename = array_keys($mtags);
			if(($mtagnew['ename'] != $tname) && in_array($mtagnew['ename'], $usedename)) $errormsg = lang('tag en id illegal');
		}
		if(!$errormsg){
			$tclass = $mtagnew['tclass'] = $mtag['tclass'];
			include_once M_ROOT."./include/mtags/$ttype/".($tclass ? $tclass : 'tag').".php";
			if(!$errormsg){
				$mtagnew['setting'] = empty($mtagnew['setting']) ? array() : $mtagnew['setting'];
				if(!empty($mtagnew['setting'])){
					foreach($mtagnew['setting'] as $key => $val){
						if(in_array($key,$unsetvars) && empty($val)) unset($mtagnew['setting'][$key]);
					}
				}
				$mtagnew['template'] = empty($mtagnew['template']) ? '' : stripslashes($mtagnew['template']);
				$mtagcode = mtag_code($ttype,$mtagnew);
				echo "<script language=\"javascript\">parent.$('mtagcodeiframe').style.display='';</script>".
				"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#D3ECFC\" style=\"padding:0px;margin:0px;\">".
				"<tr><td class=\"item1\" width=\"25%\">".lang('current tag of template code').
				"<br><br>[<a href='#' onclick=\"mtagcodecopy($('mtagcode'));\">".lang('copy code')."</a>]&nbsp; &nbsp; [<a href='#' onclick=\"parent.$('mtagcodeiframe').style.display='none';\">".lang('close code')."</a>]</td><td class=\"item2\">".
				"<textarea rows=\"8\" name=\"mtagcode\" id=\"mtagcode\" cols=\"110\">".(empty($mtagcode) ? '' : htmlspecialchars(str_replace("\t","    ",$mtagcode)))."</textarea>";
				"</td></tr></table>";
			}
		}
		echo "<script language=\"javascript\">".($errormsg ? "alert('$errormsg');" : '')."parent.$('mtagsdetail').action='?entry=mtags&action=mtagsdetail&ttype=$ttype$param_suffix&tname=$tname';parent.$('mtagsdetail').target='_self';</script>";
		mexit();
	}else{
		if(!$mtagnew['cname'] || !$mtagnew['ename']) {
			amessage(lang('tag data missing'),M_REFERER);
		}
		if(preg_match("/[^a-z_A-Z0-9]+/",$mtagnew['ename'])) {
			amessage(lang('tag en id illegal'),M_REFERER);
		}
		$mtagnew['ename'] = trim(strtolower($mtagnew['ename']));
		$usedename = array_keys($mtags);
		if(($mtagnew['ename'] != $tname) && in_array($mtagnew['ename'], $usedename)){
			amessage(lang('tag en id repeat'),M_REFERER);
		}
		$tclass = $mtag['tclass'];
		include_once M_ROOT."./include/mtags/$ttype/".($tclass ? $tclass : 'tag').".php";
		$mtagnew['setting'] = empty($mtagnew['setting']) ? array() : $mtagnew['setting'];
		if(!empty($mtagnew['setting'])){
			foreach($mtagnew['setting'] as $key => $val){
				if(in_array($key,$unsetvars) && empty($val)) unset($mtagnew['setting'][$key]);
			}
		}
		$mtagnew['template'] = empty($mtagnew['template']) ? '' : stripslashes($mtagnew['template']);
		$mtag = array(
		'cname' => stripslashes($mtagnew['cname']),
		'ename' => $mtagnew['ename'],
		'tclass' => $tclass,
		'template' => $mtagnew['template'],
		'setting' => $mtagnew['setting'],
		);
		$mtags[$mtagnew['ename']] = array('tclass' => $tclass,'vieworder' => $mtags[$tname]['vieworder'],);
		cache2file($mtag,cache_name($ttype,$mtagnew['ename']),$ttype,$sid);
		if($mtagnew['ename'] != $tname){
			del_cache($ttype,$tname,'',$sid);
			unset($mtags[$tname]);
		}
		mtags_order($mtags);
		cache2file($mtags,$ttype.'s',$ttype.'s',$sid);
		adminlog(lang('detail0 modify '.$ttype));
		amessage(lang('tag modify finish'),$forward);
	}
}
function mtags_order(&$mtags){
	if(!is_array($mtags) || empty($mtags) || !function_exists('array_multisort')) return;
	foreach($mtags as $k => $v){
		$vorder[$k] = $v['vieworder'];
		$eorder[$k] = $k;
	}
	array_multisort($vorder,SORT_ASC,$eorder,SORT_ASC,$mtags);
}
function tag_style($ename){
	global $ttype;
	return "{".($ttype == 'rtag' ? 'tpl' : str_replace('tag','',$ttype))."\$<b>$ename</b>}";
}
function mtag_code($ttype,$mtag){
	$mode = str_replace('tag','',$ttype);
	$str = '{'.$mode.'$'.$mtag['ename'];//起始符
	!empty($mtag['tclass']) && $str .= ' [tclass='.$mtag['tclass'].'/]';
	if(!empty($mtag['setting'])){
		foreach($mtag['setting'] as $key => $val){
			$newline = in_array($key,array('wherestr','func','mpfunc','sqlstr')) ? "\n" : '';
			$str .= $newline.' ['.$key.'='.$val.'/]'.$newline;
		}
	}
	$str .= "}";//参数中止
	!empty($mtag['template']) && $str .= $mtag['template'];//加入模板
	$str .= '{/'.$mode.'$'.$mtag['ename'].'}';//加入结束符
	return $str;
	
}

?>