www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/include/cache.fun.php

    <?php
!defined('M_COM') && exit('No Permission');
function rebuild_cache($sid = 0,$menuurl = '',$mainurl = ''){//$sid = -1为整站缓存更新
	//系统固化的缓存有fieldwords,ibtagnames,nouserinfos,langs,clangs,mlangs,//特殊情况uclassarr,payonlines

	//不区分子站的缓存
	$cacarr = array(
	'channels','fchannels','mchannels','players','fcatalogs','currencys','grouptypes','cotypes','rprojects','permissions',
	'crprojects','initfields','initmfields','mtconfigs','amconfigs','commus','sitemaps','shipings','mconfigs',
	'localfiles','crprices','cafields','ccfields','pfields','vcatalogs','badwords','wordlinks','dbsources','splangs',
	'subsites','mmenus','mprojects','uprojects','freeinfos','userurls','dbfields',
	);
	foreach($cacarr as $k) updatecache($k);
	foreach(array(0,1) as $k) updatecache('menus',$k);//后台菜单
	foreach(array('fields','mfields','cafields','ccfields','ffields','pfields') as $k) updatecache('usednames',$k);
	$vars = array_keys(reload_cache('channels'));
	foreach($vars as $k) updatecache('fields',$k);
	$vars = array_keys(reload_cache('fchannels'));
	foreach($vars as $k) updatecache('ffields',$k);
	$vars = array_keys(reload_cache('mchannels'));
	foreach($vars as $k) updatecache('mfields',$k);
	$vars = array_keys(reload_cache('grouptypes'));
	foreach($vars as $k) updatecache('usergroups',$k);
	$vars = array_keys(reload_cache('cotypes'));
	foreach($vars as $k) updatecache('coclasses',$k);
	updatecache('btagnames');

	//处理需要区分子站的缓存
	if($sid == -1){
		$sids = array_keys(reload_cache('subsites'));
		$sids[] = 0;
	}else $sids = array($sid);
	$s_cacarr = array('catalogs','altypes','cnconfigs','cnodes','gmodels','gmissions',);
	foreach($sids as $v){
		foreach($s_cacarr as $k) updatecache($k,'',$v);
	}
	
	//通常修改了管理后台菜单缓存之后需要刷新页面
	if(!empty($menuurl) && !empty($mainurl)){
		echo "<script>parent.menu.location='".$menuurl."';parent.main.location='".$mainurl."';</script>";
	}
}
function updatecache($cname,$mode='',$sid=0){
	global $db,$tblprefix;
	switch($cname){
		case 'subsites':
			$$cname = mfetch_array('subsites','sid','*','','vieworder,sid','channels,commus');
			cache2file($$cname,$cname);
			break;
		case 'channels':
			$$cname = mfetch_array('channels','chid','*','','chid','','ugids');
			sub_cache($$cname,'','chid','channel','chid,cname,available,userforbidadd,cuid,baidu,fulltxt');
			cache2file($$cname,$cname);
			break;
		case 'fchannels':
			$$cname = mfetch_array('fchannels','chid','*','','chid');
			cache2file($$cname,$cname);
			break;
		case 'fcatalogs':
			$$cname = mfetch_array('fcatalogs','caid','*','','vieworder,caid','','ugids');
			sub_cache($$cname,'','caid','fcatalog','caid,title,vieworder,chid,cumode,allowupdate');
			cache2file($$cname,$cname);
			break;
		case 'mchannels':
			$$cname = mfetch_array('mchannels','mchid','*','','mchid');
			cache2file($$cname,$cname);
			break;
		case 'dbsources':
			$$cname = mfetch_array('dbsources','dsid','*','','dsid');
			cache2file($$cname,$cname);
			break;
		case 'players':
			$$cname = mfetch_array('players','plid','*','','vieworder,plid');
			sub_cache($$cname,'','plid','player','plid,cname,ptype,issystem,available,vieworder,exts');
			cache2file($$cname,$cname);
			break;
		case 'gmodels':
			$$cname = mfetch_array('gmodels','gmid','*',"sid=$sid",'gmid','gfields');
			sub_cache($$cname,'','gmid','gmodel','cname,chid,atid',$sid);
			cache2file($$cname,$cname,'',$sid);
			break;
		case 'gmissions':
			$$cname = mfetch_array('gmissions','gsid','*',"sid=$sid",'gsid','fsettings,dvalues');
			sub_cache($$cname,'','gsid','gmission','cname,gmid',$sid);
			cache2file($$cname,$cname,'',$sid);
			break;
		case 'altypes':
			$$cname = mfetch_array('altypes','atid','*',"sid=$sid",'vieworder,atid','','chids,atids,ugids');
			sub_cache($$cname,'','atid','altype','atid,sid,cname,chid,vieworder',$sid);
			cache2file($$cname,$cname,'',$sid);
			$aaltypes = mfetch_array('altypes','atid','atid,sid,cname,chid','','sid,vieworder,atid');
			cache2file($aaltypes,'aaltypes');
			break;
		case 'catalogs':
			include_once M_ROOT."./include/parse/general.php";
			$catalogs = mfetch_array('catalogs','caid','*',"sid=$sid",'vieworder,caid');
			$catalogs = order_arr($catalogs,0);
			arr_tag2atm($catalogs,'ca');
			sub_cache($catalogs,'','caid','catalog','caid,pid,sid,level,title,dirname,vieworder,chids,atids,isframe',$sid);
			cache2file($catalogs,$cname,'',$sid);
			$acatalogs = mfetch_array('catalogs','caid','caid,pid,sid,level,title,dirname,isframe','','sid,vieworder,caid');
			$acatalogs = order_arr($acatalogs,0);
			cache2file($acatalogs,'acatalogs');
			break;
		case 'currencys':
			$$cname = mfetch_array('currencys','crid','*','','crid');
			cache2file($$cname,$cname);
			break;
		case 'grouptypes':
			$$cname = mfetch_array('grouptypes','gtid','*','','gtid');
			cache2file($$cname,$cname);
			break;
		case 'usergroups':
			$$cname = mfetch_array('usergroups','ugid','*',"gtid='$mode'",'currency DESC,prior,ugid');
			sub_cache($$cname,$mode,'ugid','usergroup','ugid,cname,currency,prior,mchids,limitday');
			cache2file($$cname,$cname.$mode,$cname);
			break;
		case 'cotypes':
			$$cname = mfetch_array('cotypes','coid','*','','vieworder,coid');
			cache2file($$cname,$cname);
			break;
		case 'coclasses':
			include_once M_ROOT."./include/parse/general.php";
			$coclasses = mfetch_array('coclass','ccid','*',"coid='$mode'",'vieworder','conditions');
			$coclasses = order_arr($coclasses,0);
			arr_tag2atm($coclasses,'cc');
			sub_cache($coclasses,$mode,'ccid','coclass','ccid,pid,level,title,dirname,vieworder,chids,atids,isframe');
			cache2file($coclasses,$cname.$mode,$cname);
			break;
		case 'splangs':
			$$cname = mfetch_array('splangs','ename','*','','vieworder,slid');
			foreach($splangs as $k => $v) $splangs[$k] = $v['content'];
			cache2file($$cname,$cname);
			break;
		case 'rprojects':
			$$cname = mfetch_array('rprojects','rpid','*','','rpid','rmfiles','excludes');
			cache2file($$cname,$cname);
			break;
		case 'mprojects':
			$$cname = mfetch_array('mprojects','mpid','*','','mpid');
			cache2file($$cname,$cname);
			break;
		case 'uprojects':
			$$cname = mfetch_array('uprojects','upid','*','','gtid,upid');
			cache2file($$cname,$cname);
			break;
		case 'permissions':
			$$cname = mfetch_array('permissions','pmid','*','','prior DESC,pmid','','aread,cread,issue,download,play');
			cache2file($$cname,$cname);
			break;
		case 'cnconfigs':
			$$cname = mfetch_array('cnconfigs','cncid','*',"sid=$sid",'cncid','idsarr');
			cache2file($$cname,$cname,'',$sid);
			break;
		case 'crprojects':
			$$cname = mfetch_array('crprojects','crpid','*','','crpid');
			cache2file($$cname,$cname);
			break;
		case 'initfields':
			$$cname = mfetch_array('fields','ename','*','chid=0','issystem DESC,fid ASC');
			cache2file($$cname,$cname);
			break;
		case 'initmfields':
			$$cname = mfetch_array('mfields','ename','*','mchid=0','issystem DESC,mfid ASC');
			cache2file($$cname,$cname);
			break;
		case 'mtconfigs':
			$$cname = mfetch_array('mtconfigs','mtcid','*','','mtcid','setting');
			cache2file($$cname,$cname);
			break;
		case 'amconfigs':
			$$cname = mfetch_array('amconfigs','amcid','*','','amcid');
			cache2file($$cname,$cname);
			break;
		case 'commus':
			$$cname = mfetch_array('commus','cuid','*','','issystem DESC,cuid ASC','setting');
			sub_cache($$cname,'','cuid','commu','cuid,cname,cclass,available,sortable,ch');
			cache2file($$cname,$cname);
			break;
		case 'sitemaps':
			$$cname = mfetch_array('sitemaps','ename','*','','vieworder','setting');
			cache2file($$cname,$cname);
			break;
		case 'shipings':
			$$cname = mfetch_array('shipings','shid','*','','vieworder,shid');
			cache2file($$cname,$cname);
			break;
		case 'cnodes':
			$$cname = mfetch_array('cnodes','ename','*',"sid=$sid AND inconfig='1'",'ename');
			sub_cache($$cname,'','ename','cnode','',$sid);
			cache2file($$cname,$cname,'',$sid);
			break;
		case 'freeinfos':
			$$cname = mfetch_array('freeinfos','fid','*','','fid');
			cache2file($$cname,$cname);
			break;
		case 'mconfigs':
			global $mcharset,$cms_version,$homedefault;
			$btags = array();
			$$cname = mfetch_array('mconfigs','varname','*',"cftype<>''",'cftype');
			$bvarnames = array('hostname','hosturl','cmsname','cmsurl','cmslogo','cmstitle','cmskeyword',
				'cmsdescription','cms_icpno','bazscert','copyright',);
			foreach($mconfigs as $k => $v){
				$mconfigs[$k] = $v['value'];
				in_array($k,$bvarnames) && $btags[$k] = $v['value'];
			}

			$mconfigs['cmsindex'] = $btags['cmsindex'] = $homedefault;
			$mconfigs['cms_abs'] = $btags['cms_abs'] = strpos($mconfigs['cmsurl'],$mconfigs['hosturl']) === FALSE ? ($mconfigs['hosturl'].$mconfigs['cmsurl']) : $mconfigs['cmsurl'];
			$mconfigs['cms_rel'] = $btags['cms_rel'] = strpos($mconfigs['cmsurl'],$mconfigs['hosturl']) === FALSE ? $mconfigs['cmsurl'] : str_replace($mconfigs['hosturl'],'',$mconfigs['cmsurl']);
			$btags['mcharset'] = $mcharset;
			$btags['version'] = $cms_version;
			$btags['tplurl'] = $mconfigs['cms_abs'].'template/'.$mconfigs['templatedir'].'/';
			$btags['cms_counter'] = "<script type=\"text/javascript\" src=\"$mconfigs[cms_abs]counter.php\"></script>";
			cache2file($btags,'btags');
			cache2file($$cname,$cname);
			break;
		case 'localfiles':
			$inits = mfetch_array('localfiles','lfid','*','','lfid');
			foreach($inits as $v){
				$localfiles[$v['ftype']][$v['extname']] = $v;
			}
			cache2file($$cname,$cname);
			break;
		case 'fields':
			$$cname = mfetch_array('fields','ename','*',"chid='$mode'",'vieworder,issystem DESC,mcommon DESC,fid ASC');
			sub_cache($$cname,$mode,'ename','field','cname,issystem,isfunc,available,iscustom,mcommon,tbl,datatype,isadmin,aedit,issearch,vieworder,istxt');
			cache2file($$cname,$cname.$mode,$cname);
			break;
		case 'mfields':
			$$cname = mfetch_array('mfields','ename','*',"mchid='$mode'",'vieworder,issystem DESC,mcommon DESC,mfid ASC');
			sub_cache($$cname,$mode,'ename','mfield','cname,issystem,isfunc,available,iscustom,mcommon,tbl,datatype,isadmin,vieworder');
			cache2file($$cname,$cname.$mode,$cname);
			break;
		case 'ffields':
			$$cname = mfetch_array('ffields','ename','*',"chid='$mode'",'vieworder,issystem DESC,fid ASC');
			sub_cache($$cname,$mode,'ename','ffield','cname,issystem,isfunc,available,datatype,isadmin,vieworder');
			cache2file($$cname,$cname.$mode,$cname);
			break;
		case 'crprices':
			$$cname = mfetch_array('crprices','ename','*','','crid,crvalue');
			$vcps = array('tax' => array(),'sale' => array(),'award' => array(),'ftax' => array(),'fsale' => array(),);
			foreach($crprices as $k => $v){
				foreach(array('tax','sale','award','ftax','fsale') as $var){
					$v[$var] && $vcps[$var][$v['ename']] = $v['cname'];
				}
			}
			cache2file($vcps,'vcps');
			cache2file($$cname,$cname);
			break;
		case 'cafields':
			$$cname = mfetch_array('cnfields','ename','*','iscc=0','vieworder,fid');
			cache2file($$cname,$cname);
			break;
		case 'ccfields':
			$$cname = mfetch_array('cnfields','ename','*','iscc=1','vieworder,fid');
			cache2file($$cname,$cname);
			break;
		case 'pfields':
			$$cname = mfetch_array('cufields','ename','*',"cu=1",'vieworder,fid');
			cache2file($$cname,$cname);
			break;
		case 'btagnames':
			deal_btagnames();
			break;
		case 'vcatalogs':
			$$cname = mfetch_array('vcatalogs','caid','*','','vieworder,caid');
			cache2file($$cname,$cname);
			break;
		case 'badwords':
			$badwords = array();
			$query = $db->query("SELECT * FROM {$tblprefix}badwords ORDER BY bwid");
			while($badword = $db->fetch_array($query)){
				$badwords['wreplace'][] = $badword['wreplace'];
				$badword['wsearch'] = preg_replace("/\\\{(\d+)\\\}/", ".{0,\\1}", preg_quote($badword['wsearch'],'/'));
				$badwords['wsearch'][] = '/'.$badword['wsearch'].'/i';
			}
			cache2file($$cname,$cname);
			break;
		case 'wordlinks':
			$wordlinks = array();
			$query = $db->query("SELECT * FROM {$tblprefix}wordlinks WHERE available=1 ORDER BY pcs DESC,wlid ASC");
			while($wordlink = $db->fetch_array($query)){
				$wordlinks['swords'][] = $wordlink['sword'];
				$wordlinks['rwords'][] = "<a href=\"".view_url($wordlink['url'])."\" target=\"_blank\">".$wordlink['sword']."</a>";
			}
			cache2file($$cname,$cname);
			break;
		case 'dbfields':
			$dbfields = array();
			$query = $db->query("SELECT * FROM {$tblprefix}dbfields ORDER BY dfid");
			while($row = $db->fetch_array($query)){
				$dbfields[$row['ddtable'].'_'.$row['ddfield']] = $row['ddcomment'];
			}
			cache2file($$cname,$cname);
			break;
		case 'usednames':
			$$cname = reload_cache($cname);
			$arr = array('fields' => 'archives,archives_sub','mfields' => 'members,members_sub','cafields' => 'catalogs','ccfields' => 'coclass','ffields' => 'farchives','pfields' => 'orders');
			$usednames[$mode] = mfetch_fields($arr[$mode]);
			cache2file($$cname,$cname);
			break;
		case 'menus':
			$mhcac = 'mnheaders'.($mode ? 's' : '');
			$mmcac = 'mnmenus'.($mode ? 's' : '');
			$mlcac = 'mnlangs'.($mode ? 's' : '');
			${$mhcac} = ${$mmcac} = ${$mlcac} = array();
			$query = $db->query("SELECT * FROM {$tblprefix}mtypes WHERE pid=0 AND issub='$mode' ORDER BY vieworder,mtid");
			while($row0 = $db->fetch_array($query)){
				${$mhcac}[$row0['mtid']] = $row0['url'];
				${$mlcac}['menutype_'.$row0['mtid']] = $row0['title'];
				${$mmcac}[$row0['mtid']] = array();
				$query1 = $db->query("SELECT * FROM {$tblprefix}mtypes WHERE pid='$row0[mtid]' AND issub='$mode' ORDER BY vieworder,mtid");
				while($row1 = $db->fetch_array($query1)){
					${$mlcac}['menutype_'.$row1['mtid']] = $row1['title'];
					${$mmcac}[$row0['mtid']][$row1['mtid']] = array();
					$query2 = $db->query("SELECT * FROM {$tblprefix}menus WHERE mtid='$row1[mtid]' AND available=1 AND issub='$mode' AND isbk='0' ORDER BY vieworder,mnid");
					while($row2 = $db->fetch_array($query2)){
						${$mlcac}['menuitem_'.$row2['mnid']] = $row2['title'];
						${$mmcac}[$row0['mtid']][$row1['mtid']][$row2['mnid']] = $row2['url'];
					}
					if(empty(${$mmcac}[$row0['mtid']][$row1['mtid']])) unset(${$mmcac}[$row0['mtid']][$row1['mtid']]);
				}
				if(empty(${$mmcac}[$row0['mtid']])) unset(${$mhcac}[$row0['mtid']],${$mmcac}[$row0['mtid']]);
			}
			foreach(array($mhcac,$mmcac,$mlcac) as $var) cache2file(${$var},$var);
			break;
		case 'userurls':
			$utypes = mfetch_array('utypes','utid','*','','vieworder,utid');
			foreach($utypes as $k => $v){
				if(!$v['pid']) $utypes[$k]['url'] = !$v['ismc'] ? "?entry=userlinks&utid=$k" : "?action=userlinks&utid=$k";
			}
			$utypes = order_arr($utypes,0);
			cache2file($utypes,'utypes');
			$userurls = mfetch_array('userurls','uid','*','','vieworder,uid');
			cache2file($userurls,'userurls');
			break;
		case 'mmenus':
			$mmnmenus = $mmnlangs = array();
			$query = $db->query("SELECT * FROM {$tblprefix}mmtypes ORDER BY vieworder,mtid");
			while($row0 = $db->fetch_array($query)){
				$mmnlangs['mmenutype_'.$row0['mtid']] = $row0['title'];
				$query1 = $db->query("SELECT * FROM {$tblprefix}mmenus WHERE mtid='$row0[mtid]' AND available=1 ORDER BY vieworder,mnid");
				while($row1 = $db->fetch_array($query1)){
					$mmnlangs['mmenuitem_'.$row1['mnid']] = $row1['title'];
					$mmnmenus[$row0['mtid']][$row1['mnid']] = $row1['url'];
				}
			}
			cache2file($mmnmenus,'mmnmenus');
			cache2file($mmnlangs,'mmnlangs');
			break;
	}
}
function mfetch_array($tbl,$key,$fieldstr = '',$where = '',$orderby = '',$unserializes = '',$explodes = ''){
	global $db,$tblprefix;
	$rets = array();
	if(empty($tbl) || empty($key)) return $rets;
	!$fieldstr && $fieldstr = '*';
	$sqlstr = "SELECT $fieldstr FROM {$tblprefix}$tbl".(empty($where) ? '' : " WHERE $where").(empty($orderby) ? '' : " ORDER BY $orderby");
	$query = $db->query($sqlstr);
	while($row = $db->fetch_array($query)){
		if($unserializes && is_array($unarr = array_filter(explode(',',$unserializes)))){
			foreach($unarr as $v){
				if(empty($row[$v]) || !is_array($row[$v] = @unserialize($row[$v]))) $row[$v] = array();
			}
		}
		if($explodes && is_array($exarr = array_filter(explode(',',$explodes)))){
			foreach($exarr as $v){
				$row[$v] = $row[$v] == '' ? array() : explode(',',$row[$v]);
			}
		}
		$rets[$row[$key]] = $row;
	}
	return $rets;
}
function mfetch_one($tbl,$where,$fstr='*',$unserializes = '',$explodes = ''){
	global $db,$tblprefix;
	$rets = array();
	if(!$tbl || !$where || !$fstr) return $rets;
	if($rets = $db->fetch_one("SELECT $fstr FROM {$tblprefix}$tbl WHERE $where")){
		if($unserializes && is_array($arr = array_filter(explode(',',$unserializes)))){
			foreach($arr as $v){
				if(empty($rets[$v]) || !is_array($rets[$v] = @unserialize($rets[$v]))) $rets[$v] = array();
			}
		}
		if($explodes && is_array($arr = array_filter(explode(',',$explodes)))){
			foreach($arr as $v){
				$rets[$v] = $rets[$v] == '' ? array() : explode(',',$rets[$v]);
			}
		}
	}
	return $rets;
}

function mfetch_fields($tbls = ''){
	global $db,$tblprefix;
	$fields = array();
	if($tbls && is_array($tblarr = explode(',',$tbls))){
		foreach($tblarr as $table){
			$query = $db->query("SELECT * FROM {$tblprefix}$table");
			while($field = $db->fetch_fields($query)){
				$fields[] = $field->name;
			}
		}
		$fields = array_unique($fields);
	}
	return $fields;
}
function deal_btagnames(){
	global $commus;
	load_cache('commus');
	$btagnames = reload_cache('ibtagnames');
	$commoned = 0;
	$channels = reload_cache('channels');
	foreach($channels as $chid => $channel){
		$fields = reload_cache('fields',$chid);
		foreach($fields as $k => $field){
			if($field['mcommon']){
				!$commoned && $btagnames[] = array('ename' => $k,'cname' => $field['cname'],'bclass' => 'archive','sclass' => '','datatype' => $field['datatype'],);
			}else{
				$btagnames[] = array('ename' => $k,'cname' => $field['cname'],'bclass' => 'archive','sclass' => $chid,'datatype' => $field['datatype'],);
			}
		}
		if(@$commus[$channel['cuid']]['cclass'] == 'answer'){
			$btagnames[] = array('ename' => 'appeals','cname' => lang('appeal amount'),'bclass' => 'archive','sclass' => $chid,'datatype' => 'int',);
			$btagnames[] = array('ename' => 'appealdate','cname' => lang('appeal end time'),'bclass' => 'archive','sclass' => $chid,'datatype' => 'date',);
		}
		$commoned = 1;
	}
	unset($channels,$fields);
	$commoned = 0;
	$fchannels = reload_cache('fchannels');
	foreach($fchannels as $chid => $fchannel){
		$fields = reload_cache('ffields',$chid);
		foreach($fields as $k => $field){
			if($k == 'subject'){
				!$commoned && $btagnames[] = array('ename' => $k,'cname' => $field['cname'],'bclass' => 'freeinfo','sclass' => '','datatype' => $field['datatype'],);
			}else{
				$btagnames[] = array('ename' => $k,'cname' => $field['cname'],'bclass' => 'freeinfo','sclass' => $chid,'datatype' => $field['datatype'],);
			}
		}
		$commoned = 1;
	}
	unset($fchannels,$fields);
	$cotypes = reload_cache('cotypes');
	foreach($cotypes as $coid =>$cotype){
		$btagnames[] = array('ename' => 'cotype'.$coid.'title','cname' => $cotype['cname'].lang('coclass cname'),'bclass' => 'archive','sclass' => '','datatype' => 'text',);
		$btagnames[] = array('ename' => "cotype$coid",'cname' => $cotype['cname'].lang('coclass').'id','bclass' => 'archive','sclass' => '','datatype' => 'int',);
	}
	unset($cotypes,$cotype);
	$cafields = reload_cache('cafields');
	foreach($cafields as $field){
		$btagnames[] = array('ename' => $field['ename'],'cname' => $field['cname'],'bclass' => 'cnode','sclass' => 'catalog','datatype' => $field['datatype'],);
	}
	unset($cafields,$field);

	$ccfields = reload_cache('ccfields');
	foreach($ccfields as $field){
		$btagnames[] = array('ename' => $field['ename'],'cname' => $field['cname'],'bclass' => 'cnode','sclass' => 'coclass','datatype' => $field['datatype'],);
	}
	unset($ccfields,$field);

	$commoned = 0;
	$mchannels = reload_cache('mchannels');
	foreach($mchannels as $chid => $mchannel){
		$mfields = reload_cache('mfields',$chid);
		foreach($mfields as $k => $field){
			if($field['mcommon']){
				(!$commoned && !in_array($k,array('password'))) && $btagnames[] = array('ename' => $k,'cname' => $field['cname'],'bclass' => 'member','sclass' => '','datatype' => $field['datatype'],);
			}else{
				$btagnames[] = array('ename' => $k,'cname' => $field['cname'],'bclass' => 'member','sclass' => $chid,'datatype' => $field['datatype'],);
			}
		}
		$commoned = 1;
	}
	unset($mchannels,$mfields,$field);

	$currencys = reload_cache('currencys');
	foreach($currencys as $crid => $currency){
		$btagnames[] = array('ename' => 'currency'.$crid,'cname' => $currency['cname'].lang('amount'),'bclass' => 'member','sclass' => '','datatype' => 'int',);
	}
	unset($currencys,$currency);
	$grouptypes = reload_cache('grouptypes');
	foreach($grouptypes as $gtid =>$grouptype){
		$btagnames[] = array('ename' => 'grouptype'.$gtid,'cname' => $grouptype['cname'].lang('usergroup').'id','bclass' => 'member','sclass' => '','datatype' => 'int',);
		$btagnames[] = array('ename' => 'grouptype'.$gtid.'name','cname' => $grouptype['cname'].lang('usergroup'),'bclass' => 'member','sclass' => '','datatype' => 'text',);
	}
	unset($grouptypes,$grouptype);
	$bnames = array();
	foreach($btagnames as $k => $v){
		if(!array_key_exists($v['ename'],$bnames)){
			$bnames[$v['ename']] = $v['cname'];
		}elseif(!in_array($v['cname'],array_filter(explode(' | ',$bnames[$v['ename']])))){
			$bnames[$v['ename']] .= ' | '.$v['cname'];
		}
	}
	cache2file($btagnames,'btagnames');
	cache2file($bnames,'bnames');
	unset($btagnames,$bnames);
}
?>