<?php
error_reporting(E_ALL ^ E_NOTICE);

define('InEmpireCMS',TRUE);
define('ECMS_PATH',substr(dirname(__FILE__),0,-7));
define('MAGIC_QUOTES_GPC',function_exists('get_magic_quotes_gpc')&&get_magic_quotes_gpc());
define('STR_IREPLACE',function_exists('str_ireplace'));
define('ECMS_PNO',EcmsGetProgramNo());

$ecms_config=array();
$ecms_adminloginr=array();
$ecms_hashur=array();
$emoreport_r=array();
$public_r=array();
$public_diyr=array();
$emod_pubr=array();
$etable_r=array();
$emod_r=array();
$notcj_r=array();
$fun_r=array();
$message_r=array();
$qmessage_r=array();
$enews_r=array();
$class_r=array();
$class_zr=array();
$class_tr=array();
$eyh_r=array();
$schalltb_r=array();
$level_r=array();
$aglevel_r=array();
$iglevel_r=array();
$r=array();
$addr=array();
$paddr=array();
$search='';
$start=0;
$addgethtmlpath='';
$string='';
$notcjnum=0;
$editor=0;
$ecms_gr=array();
$navinfor=array();
$pagefunr=array();
$navclassid='';
$navnewsid='';
$cjnewsurl='';
$formattxt='';
$link='';
$linkrd='';
$empire='';
$dbtbpre='';
$efileftp='';
$efileftp_fr=array();
$efileftp_dr=array();
$doetran=0;
$ecmsvar_mbr=array();
$ecms_tofunr=array();
$ecms_topager=array();
$ecms_topagesetr=array();
$ecms_toboxr=array();
$add='';
$ecms_config['sets']['selfmoreportid']=0;
$ecms_config['sets']['mainportpath']='';
$ecms_config['sets']['pagemustdt']=0;
$emoreport_r[1]['ppath']='';

require_once ECMS_PATH.'e/config/config.php';

if(!defined('EmpireCMSConfig'))
{
	exit();
}

if($ecms_config['sets']['webdebug']==0)
{
	error_reporting(0);
}

//超時設置
if(defined('EmpireCMSAdmin'))
{
	if($public_r['php_adminouttime'])
	{
		@set_time_limit($public_r['php_adminouttime']);
	}
}
else
{
	if($public_r['php_outtime'])
	{
		@set_time_limit($public_r['php_outtime']);
	}
}

//頁面編碼
if($ecms_config['sets']['setpagechar']==1)
{
	if($ecms_config['sets']['pagechar']=='gb2312'||$ecms_config['sets']['pagechar']=='big5'||$ecms_config['sets']['pagechar']=='utf-8')
	{
		@header('Content-Type: text/html; charset='.$ecms_config['sets']['pagechar']);
	}
}

//時區
if(function_exists('date_default_timezone_set'))
{
	@date_default_timezone_set($ecms_config['sets']['timezone']);
}

if($ecms_config['db']['usedb']=='mysqli')
{
	include(ECMS_PATH.'e/class/db/db_mysqli.php');
}
else
{
	include(ECMS_PATH.'e/class/db/db_mysql.php');
}

//禁止IP
eCheckAccessIp(0);
DoSafeCheckFromurl();

if(defined('EmpireCMSAdmin'))
{
	eCheckAccessIp(1);//禁止IP
	EcmsCheckUserAgent($ecms_config['esafe']['ckhuseragent']);
	//FireWall
	if(!empty($ecms_config['fw']['eopen']))
	{
		DoEmpireCMSFireWall();
	}
	if(!empty($ecms_config['esafe']['ckhsession']))
	{
		session_start();
		define('EmpireCMSDefSession',TRUE);
	}
}
else
{
	if(!empty($public_r['closeqdt']))
	{
		echo $public_r['closeqdtmsg'];
		exit();
	}
}

if($ecms_config['sets']['selfmoreportid']>1)
{
	EcmsDefMoreport($ecms_config['sets']['selfmoreportid']);
}

//--------------- 數據庫 ---------------

function db_connect(){
	global $ecms_config;
	$dblink=do_dbconnect($ecms_config['db']['dbserver'],$ecms_config['db']['dbport'],$ecms_config['db']['dbusername'],$ecms_config['db']['dbpassword'],$ecms_config['db']['dbname']);
	return $dblink;
}

function return_dblink($query){
	$dblink=$GLOBALS['link'];
	return $dblink;
}

//設置編碼
function DoSetDbChar($dbchar){
	global $link;
	if($dbchar&&$dbchar!='auto')
	{
		do_DoSetDbChar($dbchar,$link);
	}
}

function db_close(){
	global $link;
	do_dbclose($link);
}


//--------------- 公共 ---------------

//設置COOKIE
function esetcookie($var,$val,$life=0,$ecms=0){
	global $ecms_config;
	//secure屬性
	$cksecure=$ecms_config['cks']['cksecure'];
	if(!empty($cksecure))
	{
		$secure=0;
		if($cksecure==2)//開啟
		{
			$secure=1;
		}
		elseif($cksecure==3)//後台開啟
		{
			if(defined('EmpireCMSAdmin'))
			{
				$secure=1;
			}
		}
		elseif($cksecure==4)//前台開啟
		{
			if(!defined('EmpireCMSAdmin'))
			{
				$secure=1;
			}
		}
		else
		{}
	}
	else
	{
		$secure=eCheckUseHttps();
	}
	//httponly屬性
	$ckhttponly=$ecms_config['cks']['ckhttponly'];
	$httponly=0;
	if(!empty($ckhttponly))
	{
		if($ckhttponly==1)//開啟
		{
			$httponly=1;
		}
		elseif($ckhttponly==2)//後台開啟
		{
			if(defined('EmpireCMSAdmin'))
			{
				$httponly=1;
			}
		}
		elseif($ckhttponly==3)//前台開啟
		{
			if(!defined('EmpireCMSAdmin'))
			{
				$httponly=1;
			}
		}
		else
		{}
	}
	//設置
	$varpre=empty($ecms)?$ecms_config['cks']['ckvarpre']:$ecms_config['cks']['ckadminvarpre'];
	$ckpath=$ecms_config['cks']['ckpath'];
	if(PHP_VERSION<'5.2.0')
	{
		if($httponly)
		{
			$ckpath.='; HttpOnly';
		}
		return setcookie($varpre.$var,$val,$life,$ckpath,$ecms_config['cks']['ckdomain'],$secure);
	}
	else
	{
		return setcookie($varpre.$var,$val,$life,$ckpath,$ecms_config['cks']['ckdomain'],$secure,$httponly);
	}
}

//返回cookie
function getcvar($var,$ecms=0){
	global $ecms_config;
	$tvar=empty($ecms)?$ecms_config['cks']['ckvarpre'].$var:$ecms_config['cks']['ckadminvarpre'].$var;
	return $_COOKIE[$tvar];
}

//錯誤提示
function printerror($error="",$gotourl="",$ecms=0,$noautourl=0,$novar=0){
	global $empire,$editor,$public_r,$ecms_config;
	if($editor==1){$a="../";}
	elseif($editor==2){$a="../../";}
	elseif($editor==3){$a="../../../";}
	else{$a="";}
	if($ecms==1||$ecms==9)
	{
		$a=ECMS_PATH.'e/data/';
	}
	if(strstr($gotourl,"(")||empty($gotourl))
	{
		if(strstr($gotourl,"(-2"))
		{
			$gotourl_js="history.go(-2)";
			$gotourl="javascript:history.go(-2)";
		}
		else
		{
			$gotourl_js="history.go(-1)";
			$gotourl="javascript:history.go(-1)";
		}
	}
	else
	{$gotourl_js="self.location.href='$gotourl';";}
	if(empty($error))
	{$error="DbError";}
	if($ecms==9)//前台彈出對話框
	{
		@include $a.LoadLang("pub/q_message.php");
		$error=empty($novar)?$qmessage_r[$error]:$error;
		echo"<script>alert('".$error."');".$gotourl_js."</script>";
		db_close();
		$empire=null;
		exit();
	}
	elseif($ecms==8)//後台彈出對話框
	{
		@include $a.LoadLang("pub/message.php");
		$error=empty($novar)?$message_r[$error]:$error;
		echo"<script>alert('".$error."');".$gotourl_js."</script>";
		db_close();
		$empire=null;
		exit();
	}
	elseif($ecms==7)//前台彈出對話框並關閉窗口
	{
		@include $a.LoadLang("pub/q_message.php");
		$error=empty($novar)?$qmessage_r[$error]:$error;
		echo"<script>alert('".$error."');window.close();</script>";
		db_close();
		$empire=null;
		exit();
	}
	elseif($ecms==6)//後台彈出對話框並關閉窗口
	{
		@include $a.LoadLang("pub/message.php");
		$error=empty($novar)?$message_r[$error]:$error;
		echo"<script>alert('".$error."');window.close();</script>";
		db_close();
		$empire=null;
		exit();
	}
	elseif($ecms==0)
	{
		@include $a.LoadLang("pub/message.php");
		$error=empty($novar)?$message_r[$error]:$error;
		@include($a."message.php");
	}
	else
	{
		@include $a.LoadLang("pub/q_message.php");
		$error=empty($novar)?$qmessage_r[$error]:$error;
		@include($a."../message/index.php");
	}
	db_close();
	$empire=null;
	exit();
}

//錯誤提示2：直接文字
function printerror2($error='',$gotourl='',$ecms=0,$noautourl=0){
	global $empire,$public_r;
	if(strstr($gotourl,"(")||empty($gotourl))
	{
		if(strstr($gotourl,"(-2"))
		{
			$gotourl_js="history.go(-2)";
			$gotourl="javascript:history.go(-2)";
		}
		else
		{
			$gotourl_js="history.go(-1)";
			$gotourl="javascript:history.go(-1)";
		}
	}
	else
	{$gotourl_js="self.location.href='$gotourl';";}
	if($ecms==9)//彈出對話框
	{
		echo"<script>alert('".$error."');".$gotourl_js."</script>";
	}
	elseif($ecms==7)//彈出對話框並關閉窗口
	{
		echo"<script>alert('".$error."');window.close();</script>";
	}
	else
	{
		@include(ECMS_PATH.'e/message/index.php');
	}
	db_close();
	exit();
}

//ajax錯誤提示
function ajax_printerror($result='',$ajaxarea='ajaxarea',$error='',$ecms=0,$novar=0){
	global $empire,$editor,$public_r,$ecms_config;
	if($editor==1){$a="../";}
	elseif($editor==2){$a="../../";}
	elseif($editor==3){$a="../../../";}
	else{$a="";}
	if($ecms==1)
	{
		$a=ECMS_PATH.'e/data/';
	}
	if($ecms==0)
	{
		@include $a.LoadLang("pub/message.php");
		$error=empty($novar)?$message_r[$error]:$error;
	}
	else
	{
		@include $a.LoadLang("pub/q_message.php");
		$error=empty($novar)?$qmessage_r[$error]:$error;
	}
	if(empty($ajaxarea))
	{
		$ajaxarea='ajaxarea';
	}
	$ajaxarea=ehtmlspecialchars($ajaxarea,ENT_QUOTES);
	$string=$result.'|'.$ajaxarea.'|'.$error;
	echo $string;
	db_close();
	$empire=null;
	exit();
}

//直接轉向
function printerrortourl($gotourl='',$error='',$sec=0){
	global $empire,$editor,$public_r,$ecms_config;
	echo'<meta http-equiv="refresh" content="'.$sec.';url='.$gotourl.'">'.$error;
	db_close();
	$empire=null;
	exit();
}

//編碼轉換
function DoIconvVal($code,$targetcode,$str,$inc=0){
	global $editor;
	if($editor==1){$a="../";}
	elseif($editor==2){$a="../../";}
	elseif($editor==3){$a="../../../";}
	else{$a="";}
	if($inc)
	{
		@include_once(ECMS_PATH."e/class/doiconv.php");
	}
	$iconv=new Chinese($a);
	$str=$iconv->Convert($code,$targetcode,$str);
	return $str;
}

//初始化訪問端
function EcmsDefMoreport($pid){
	global $public_r,$ecms_config,$emoreport_r;
	if(empty($public_r['ckhavemoreport']))
	{
		exit();
	}
	$pid=(int)$pid;
	if($pid<=1||!$emoreport_r[$pid]['pid'])
	{
		exit();
	}
	if($emoreport_r[$pid]['isclose'])
	{
		echo'This visit port is close!';
		exit();
	}
	//關閉後台
	if(defined('EmpireCMSAdmin')&&$emoreport_r[$pid]['openadmin'])
	{
		if($emoreport_r[$pid]['openadmin']==1)
		{
			if(defined('EmpireCMSAPage'))
			{
				//echo'Admin close!';
				exit();
			}
		}
		else
		{
			//echo'Admin close!';
			exit();
		}
	}
	$ecms_config['sets']['deftempid']=$emoreport_r[$pid]['tempgid'];
	$ecms_config['sets']['pagemustdt']=$emoreport_r[$pid]['mustdt'];
	$ecms_config['sets']['mainportpath']=$emoreport_r[1]['ppath'];
	if($emoreport_r[$pid]['closeadd'])
	{
		$public_r['addnews_ok']=$emoreport_r[$pid]['closeadd'];
	}
}

//重置為主訪問端模板組ID
function Moreport_ResetMainTempGid(){
	global $ecms_config,$public_r,$emoreport_r;
	$pid=(int)$ecms_config['sets']['selfmoreportid'];
	if($pid<=1||!$emoreport_r[$pid]['pid'])
	{
		return '';
	}
	$ecms_config['sets']['deftempid']=$public_r['deftempid']?$public_r['deftempid']:1;
}

//轉向訪問端目錄
function Moreport_eSetSelfPath($pid,$ecms=0){
	global $empire,$dbtbpre,$public_r,$ecms_config;
	$pid=(int)$pid;
	$defpr=array();
	$defpr['ppath']='';
	if($pid<=1)
	{
		$pid=1;
	}
	$pr=$empire->fetch1("select * from {$dbtbpre}enewsmoreport where pid='$pid'");
	if(!$pr['ppath']||!file_exists($pr['ppath'].'e/config/config.php'))
	{
		return $defpr;
	}
	define('ECMS_SELFPATH',$pr['ppath']);
	$ecms_config['sets']['deftempid']=$pr['tempgid'];
	//緩存模板
	if($ecms==1)
	{
		$tr=$empire->fetch1("select downsofttemp,onlinemovietemp,listpagetemp from ".GetTemptb("enewspubtemp")." limit 1");
		$public_r['downsofttemp']=addslashes(stripSlashes($tr['downsofttemp']));
		$public_r['onlinemovietemp']=addslashes(stripSlashes($tr['onlinemovietemp']));
		$public_r['listpagetemp']=addslashes(stripSlashes($tr['listpagetemp']));
	}
	return $pr;
}

//autodo
function eAutodo_AddDo($dotype,$classid,$id,$tid,$userid,$pid,$fname='',$ckdoall=1){
	return '';
}

//返回是否強制動態頁
function Moreport_ReturnMustDt(){
	global $ecms_config;
	return $ecms_config['sets']['pagemustdt'];
}

//返回是否強制動態頁(加狀態)
function Moreport_ReturnMustDtAnd(){
	global $ecms_config;
	if(defined('ECMS_SELFPATH')&&$ecms_config['sets']['pagemustdt'])
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

//返回強制動態頁狀態
function Moreport_ReturnDtStatus($dt){
	global $ecms_config;
	if($ecms_config['sets']['pagemustdt'])
	{
		return 1;
	}
	else
	{
		return $dt;
	}
}

//返回內容頁地址(訪問端)
function Moreport_ReturnTitleUrl($classid,$id){
		$rewriter=eReturnRewriteInfoUrl($classid,$id,1);
		$titleurl=$rewriter['pageurl'];
		return $titleurl;
}

//返回欄目頁地址(訪問端)
function Moreport_ReturnClassUrl($classid){
	global $public_r,$class_r;
	if($class_r[$classid]['wburl'])
	{
		$classurl=$class_r[$classid]['wburl'];
	}
	else
	{
		$rewriter=eReturnRewriteClassUrl($classid,1);
		$classurl=$rewriter['pageurl'];
	}
	return $classurl;
}

//返回標題分類頁地址(訪問端)
function Moreport_ReturnInfoTypeUrl($typeid){
	$rewriter=eReturnRewriteTitleTypeUrl($typeid,1);
	$url=$rewriter['pageurl'];
	return $url;
}

//返回首頁地址(訪問端)
function Moreport_ReturnIndexUrl(){
	global $public_r;
	$file=$public_r['newsurl'].'index.php';
	return $file;
}

//根據編號返回模板表名
function eTnoGetTempTbname($no){
	if($no==1)//標籤模板
	{
		$temptb='enewsbqtemp';
	}
	elseif($no==2)//JS模板
	{
		$temptb='enewsjstemp';
	}
	elseif($no==3)//列表模板
	{
		$temptb='enewslisttemp';
	}
	elseif($no==4)//內容模板
	{
		$temptb='enewsnewstemp';
	}
	elseif($no==5)//公共模板
	{
		$temptb='enewspubtemp';
	}
	elseif($no==6)//搜索模板
	{
		$temptb='enewssearchtemp';
	}
	elseif($no==7)//模板變量
	{
		$temptb='enewstempvar';
	}
	elseif($no==8)//投票模板
	{
		$temptb='enewsvotetemp';
	}
	elseif($no==9)//封面模板
	{
		$temptb='enewsclasstemp';
	}
	elseif($no==10)//評論模板
	{
		$temptb='enewspltemp';
	}
	elseif($no==11)//打印模板
	{
		$temptb='enewsprinttemp';
	}
	elseif($no==12)//自定義頁面模板
	{
		$temptb='enewspagetemp';
	}
	else
	{
		$temptb='';
	}
	return $temptb;
}

//模板表轉換
function GetTemptb($temptb){
	global $public_r,$ecms_config,$dbtbpre;
	if(!empty($ecms_config['sets']['deftempid']))
	{
		$tempid=$ecms_config['sets']['deftempid'];
	}
	else
	{
		$tempid=$public_r['deftempid'];
	}
	if(!empty($tempid)&&$tempid!=1)
	{
		$en="_".$tempid;
	}
	return $dbtbpre.$temptb.$en;
}

//返回操作模板表
function GetDoTemptb($temptb,$gid){
	global $dbtbpre;
	if(!empty($gid)&&$gid!=1)
	{
		$en="_".$gid;
	}
	return $dbtbpre.$temptb.$en;
}

//返回當前使用模板組ID
function GetDoTempGid(){
	global $ecms_config,$public_r;
	if($ecms_config['sets']['deftempid'])
	{
		$gid=$ecms_config['sets']['deftempid'];
	}
	elseif($public_r['deftempid'])
	{
		$gid=$public_r['deftempid'];
	}
	else
	{
		$gid=1;
	}
	return $gid;
}

//導入語言包
function LoadLang($file){
	global $ecms_config;
	return "../data/language/".$ecms_config['sets']['elang']."/".$file;
}

//取得IP
function egetip(){
	global $ecms_config;
	if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')) 
	{
		$ip=getenv('HTTP_CLIENT_IP');
	} 
	elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown'))
	{
		$ip=getenv('HTTP_X_FORWARDED_FOR');
	}
	elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown'))
	{
		$ip=getenv('REMOTE_ADDR');
	}
	elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown'))
	{
		$ip=$_SERVER['REMOTE_ADDR'];
	}
	if($ecms_config['sets']['getiptype']>0)
	{
		$ip=egetipadd();
	}
	$ip=RepPostVar(preg_replace("/^([\d\.]+).*/","\\1",$ip));
	return $ip;
}

//取得IP附加
function egetipadd(){
	global $ecms_config;
	if($ecms_config['sets']['getiptype']==2)
	{
		$ip=getenv('HTTP_X_FORWARDED_FOR');
	}
	elseif($ecms_config['sets']['getiptype']==3)
	{
		$ip=getenv('HTTP_CLIENT_IP');
	}
	else
	{
		$ip=getenv('REMOTE_ADDR');
	}
	return $ip;
}

//取得端口
function egetipport(){
	$ipport=(int)$_SERVER['REMOTE_PORT'];
	return $ipport;
}

//檢查地址
function ecms_eCheckNotUrl($str){
	if(stristr($str,'/')||stristr($str,':')||stristr($str,"\\")||stristr($str,'&')||stristr($str,'?')||stristr($str,'#')||stristr($str,'@')||stristr($str,'"')||stristr($str,"'")||stristr($str,'%'))
	{
		exit();
	}
	return $str;
}

//返回來源地址
function EcmsGetReturnUrl(){
	global $public_r;
	$from=$_SERVER['HTTP_REFERER']?$_SERVER['HTTP_REFERER']:$public_r['newsurl'];
	return RepPostStrUrl($from);
}

//checkdomain
function eToCheckThisDomain($url){
	$domain=eReturnDomain();
	if(!stristr($url,$domain))
	{
		exit();
	}
	if(eCheckHaveReStr($url,'://'))
	{
		exit();
	}
}

//checkotherurl
function eCheckOtherViewUrl($url,$havevar=0,$ecms=0){
	//fromurl
	if($ecms==1)
	{
		$fromurl=$_SERVER['HTTP_REFERER'];
		if(!$fromurl)
		{
			exit();
		}
		eToCheckThisDomain($fromurl);
	}
	if(!$url)
	{
		exit();
	}
	$url=RepPostStrUrl($url);
	if(!$havevar)
	{
		if(stristr($url,'?')||stristr($url,'&')||stristr($url,'#'))
		{
			exit();
		}
	}
	//url
	if(stristr($url,'://'))
	{
		eToCheckThisDomain($url);
	}
	else
	{
		if(stristr($str,':')||stristr($str,"\\")||stristr($str,'"')||stristr($str,"'"))
		{
			exit();
		}
	}
}

//checkrestr
function eCheckHaveReStr($str,$exp){
	$r=explode($exp,$str);
	if(count($r)>2)
	{
		return 1;
	}
	return 0;
}

//checkurl
function eToCheckIsUrl($url){
	$r=explode('://',$url);
	return eCheckStrType(2,$r[0],0);
}

//checkurl2
function eToCheckIsUrl2($url){
	if(substr($url,0,4)=='http')
	{
		return 1;
	}
	return 0;
}

//checkstrtype
function eCheckStrType($type,$str,$doing=0){
	$ret=0;
	if($type==1)//數字
	{
		if(preg_match('/^[0-9]+$/',$str))
		{
			$ret=1;
		}
	}
	elseif($type==2)//字母
	{
		if(preg_match('/^[A-Za-z]+$/',$str))
		{
			$ret=1;
		}
	}
	elseif($type==3)//字母+數字
	{
		if(preg_match('/^[A-Za-z0-9]+$/',$str))
		{
			$ret=1;
		}
	}
	elseif($type==4)//字母+數字+下劃線
	{
		if(preg_match('/^[A-Za-z0-9_]+$/',$str))
		{
			$ret=1;
		}
	}
	elseif($type==5)//字母+數字+下劃線+點
	{
		if(preg_match('/^[A-Za-z0-9\-\._]+$/',$str))
		{
			$ret=1;
		}
	}
	else
	{
		$ret=0;
	}
	if($doing)
	{
		if($ret<1)
		{
			exit();
		}
	}
	return $ret;
}

//返回地址
function DoingReturnUrl($url,$from=''){
	if(empty($from))
	{
		return RepPostStrUrl($url);
	}
	elseif($from==9)
	{
		$from=$_SERVER['HTTP_REFERER']?$_SERVER['HTTP_REFERER']:$url;
	}
	return RepPostStrUrl($from);
}

//htmlspecialchars處理
function ehtmlspecialchars($val,$flags=ENT_COMPAT){
	global $ecms_config;
	if(PHP_VERSION>='5.4.0')
	{
		if($ecms_config['sets']['pagechar']=='utf-8')
		{
			$char='UTF-8';
		}
		else
		{
			$char='ISO-8859-1';
		}
		$val=htmlspecialchars($val,$flags,$char);
	}
	else
	{
		$val=htmlspecialchars($val,$flags);
	}
	return $val;
}

//addslashes處理
function eaddslashes($val,$ckmq=1){
	if($ckmq==1&&MAGIC_QUOTES_GPC)
	{
		return $val;
	}
	$val=addslashes($val);
	return $val;
}

//addslashes處理
function eaddslashes2($val,$ckmq=1){
	if($ckmq==1&&MAGIC_QUOTES_GPC)
	{
		return addslashes($val);
	}
	$val=addslashes(addslashes($val));
	return $val;
}

//stripSlashes處理
function estripSlashes($val,$ckmq=1){
	if($ckmq==1&&!MAGIC_QUOTES_GPC)
	{
		return $val;
	}
	$val=stripSlashes($val);
	return $val;
}

//stripSlashes處理
function estripSlashes2($val,$ckmq=1){
	if($ckmq==1&&!MAGIC_QUOTES_GPC)
	{
		return stripSlashes($val);
	}
	$val=stripSlashes(stripSlashes($val));
	return $val;
}

//變量正數型處理
function RepPIntvar($val){
	$val=intval($val);
	if($val<0)
	{
		$val=0;
	}
	return $val;
}

//參數處理函數
function RepPostVar($val){
	if($val!=addslashes($val))
	{
		exit();
	}
	CkPostStrChar($val);
	$val=str_replace("%","",$val);
	$val=str_replace(" ","",$val);
	$val=str_replace("`","",$val);
	$val=str_replace("\t","",$val);
	$val=str_replace("%20","",$val);
	$val=str_replace("%27","",$val);
	$val=str_replace("*","",$val);
	$val=str_replace("'","",$val);
	$val=str_replace("\"","",$val);
	$val=str_replace("/","",$val);
	$val=str_replace(";","",$val);
	$val=str_replace("#","",$val);
	$val=str_replace("--","",$val);
	$val=RepPostStr($val,1);
	$val=addslashes($val);
	//FireWall
	FWClearGetText($val);
	return $val;
}

//參數處理函數2
function RepPostVar2($val){
	if($val!=addslashes($val))
	{
		exit();
	}
	CkPostStrChar($val);
	$val=str_replace("%","",$val);
	$val=str_replace("`","",$val);
	$val=str_replace("\t","",$val);
	$val=str_replace("%20","",$val);
	$val=str_replace("%27","",$val);
	$val=str_replace("*","",$val);
	$val=str_replace("'","",$val);
	$val=str_replace("\"","",$val);
	$val=str_replace("/","",$val);
	$val=str_replace(";","",$val);
	$val=str_replace("#","",$val);
	$val=str_replace("--","",$val);
	$val=RepPostStr($val,1);
	$val=addslashes($val);
	//FireWall
	FWClearGetText($val);
	return $val;
}

//參數處理函數3
function RepPostVar3($val){
	if($val!=addslashes($val))
	{
		exit();
	}
	CkPostStrChar($val);
	$val=str_replace("%","",$val);
	$val=str_replace("`","",$val);
	$val=str_replace("\t","",$val);
	$val=str_replace("%20","",$val);
	$val=str_replace("%27","",$val);
	$val=str_replace("*","",$val);
	$val=str_replace("'","",$val);
	$val=str_replace("\"","",$val);
	//$val=str_replace("/","",$val);
	$val=str_replace(";","",$val);
	$val=str_replace("#","",$val);
	$val=str_replace("--","",$val);
	$val=RepPostStr($val,1);
	$val=addslashes($val);
	//FireWall
	FWClearGetText($val);
	return $val;
}

//驗證編碼字符
function CkPostStrCharYh($val){
	if($val!=addslashes($val))
	{
		exit();
	}
	return $val;
}

//處理提交字符
function RepPostStr($val,$ecms=0,$phck=0){
	if($phck==1)
	{
		CkPostStrCharYh($val);
	}
	$val=ehtmlspecialchars($val,ENT_QUOTES);
	if($ecms==0)
	{
		CkPostStrChar($val);
		$val=AddAddsData($val);
		//FireWall
		FWClearGetText($val);
	}
	return $val;
}

//處理提交字符2
function RepPostStr2($val,$phck=0){
	if($phck==1)
	{
		CkPostStrCharYh($val);
	}
	CkPostStrChar($val);
	$val=AddAddsData($val);
	//FireWall
	FWClearGetText($val);
	return $val;
}

//處理地址
function RepPostStrUrl($val,$phck=0){
	$val=str_replace('&amp;','&',RepPostStr($val,1,$phck));
	return $val;
}

//保存數據處理
function dgdb_tosave($val,$phck=0){
	$val=RepPostStr($val,0,$phck);
	$val=addslashes($val);
	return $val;
}

//保存數據處理(url)
function dgdb_tosaveurl($val,$phck=0){
	$val=RepPostStr($val,0,$phck);
	$val=str_replace('&amp;','&',$val);
	$val=addslashes($val);
	return $val;
}

//數據顯示
function dgdb_toshow($val){
	$val=stripSlashes($val);
	return $val;
}

//處理顯示字符
function eDoRepShowStr($val,$isurl=0){
	$val=ehtmlspecialchars($val,ENT_QUOTES);
	if($isurl==1)
	{
		$val=str_replace('&amp;','&',$val);
	}
	return $val;
}

//處理普通字符
function eDoRepPostComStr($val,$isurl=0){
	$val=ehtmlspecialchars($val,ENT_QUOTES);
	if($isurl==1)
	{
		$val=str_replace('&amp;','&',$val);
	}
	return $val;
}

//處理提交字符
function hRepPostStr($val,$ecms=0,$phck=0){
	if($phck==1)
	{
		CkPostStrCharYh($val);
	}
	if($ecms==1)
	{
		$val=ehtmlspecialchars($val,ENT_QUOTES);
	}
	CkPostStrChar($val);
	$val=AddAddsData($val);
	return $val;
}

//處理提交字符2
function hRepPostStr2($val,$phck=0){
	if($phck==1)
	{
		CkPostStrCharYh($val);
	}
	CkPostStrChar($val);
	$val=AddAddsData($val);
	return $val;
}

//處理編碼字符
function CkPostStrChar($val){
	if(substr($val,-1)=="\\")
	{
		exit();
	}
}

//返回轉義
function egetzy($n='2'){
	if($n=='rn')
	{
		$str="\r\n";
	}
	elseif($n=='n')
	{
		$str="\n";
	}
	elseif($n=='r')
	{
		$str="\r";
	}
	elseif($n=='t')
	{
		$str="\t";
	}
	elseif($n=='syh')
	{
		$str="\\\"";
	}
	elseif($n=='dyh')
	{
		$str="\'";
	}
	else
	{
		for($i=0;$i<$n;$i++)
		{
			$str.="\\";
		}
	}
	return $str;
}

//驗證字符是否空
function CheckValEmpty($val){
	return strlen($val)==0?1:0;
}

//返回ID列表
function eReturnInids($ids){
	if(empty($ids))
	{
		return 0;
	}
	$dh='';
	$retids='';
	$r=explode(',',$ids);
	$count=count($r);
	for($i=0;$i<$count;$i++)
	{
		$id=(int)$r[$i];
		if(!$id)
		{
			continue;
		}
		$retids.=$dh.$id;
		$dh=',';
	}
	if(empty($retids))
	{
		return 0;
	}
	return $retids;
}

//數組返回ID列表
function eArrayReturnInids($r){
	$count=count($r);
	if(!$count)
	{
		return 0;
	}
	$dh='';
	$retids='';
	for($i=0;$i<$count;$i++)
	{
		$id=(int)$r[$i];
		if(!$id)
		{
			continue;
		}
		$retids.=$dh.$id;
		$dh=',';
	}
	if(empty($retids))
	{
		return 0;
	}
	return $retids;
}

//返回父欄目ID列表
function eReturnInFcids($featherclass){
	if(!$featherclass||$featherclass=='|')
	{
		return 0;
	}
	$cids='';
	$cdh='';
	$fcr=explode('|',$featherclass);
	$fcount=count($fcr);
	for($fi=1;$fi<$fcount-1;$fi++)
	{
		$fcr[$fi]=(int)$fcr[$fi];
		if(!$fcr[$fi])
		{
			continue;
		}
		$cids.=$cdh.$fcr[$fi];
		$cdh=',';
	}
	if(empty($cids))
	{
		return 0;
	}
	return $cids;
}

//返回組列表
function eReturnSetGroups($groupid,$isnum=1){
	$count=count($groupid);
	if($count==0)
	{
		return '';
	}
	$ids=',';
	for($i=0;$i<$count;$i++)
	{
		if($isnum==1)
		{
			$groupid[$i]=(int)$groupid[$i];
		}
		$ids.=$groupid[$i].',';
	}
	return $ids;
}

//取得表裡的模型ID
function eGetTableModids($tid,$tbname){
	global $empire,$dbtbpre;
	$mids='';
	$where=$tid?"tid='$tid'":"tbname='$tbname'";
	$sql=$empire->query("select mid from {$dbtbpre}enewsmod where ".$where);
	while($r=$empire->fetch($sql))
	{
		$mids.=$dh.$r['mid'];
		$dh=',';
	}
	if(empty($mids))
	{
		$mids=0;
	}
	return $mids;
}

//替換模板變量字符
function RepTempvarPostStr($val){
	$val=str_replace('[!--','[!---',$val);
	return $val;
}

//替換模板變量字符
function RepTempvarPostStrT($val,$ispagef=0){
	if($ispagef==1)
	{
		$val=str_replace('[!--empirenews.page--]','[!!!-empirecms.page-!!]',$val);
	}
	$val=str_replace('[!--','&#091;!--',$val);
	if($ispagef==1)
	{
		$val=str_replace('[!!!-empirecms.page-!!]','[!--empirenews.page--]',$val);
	}
	return $val;
}

//取得文件擴展名
function GetFiletype($filename){
	$filer=explode(".",$filename);
	$count=count($filer)-1;
	return strtolower(".".RepGetFiletype($filer[$count]));
}

function RepGetFiletype($filetype){
	$filetype=str_replace('|','_',$filetype);
	$filetype=str_replace(',','_',$filetype);
	$filetype=str_replace('.','_',$filetype);
	return $filetype;
}

//取得文件名
function GetFilename($filename){
	if(strstr($filename,"\\"))
	{
		$exp="\\";
	}
	else
	{
		$exp='/';
	}
	$filer=explode($exp,$filename);
	$count=count($filer)-1;
	return $filer[$count];
}

//返回目錄函數
function eReturnCPath($path,$ypath=''){
	if(strstr($path,'..')||strstr($path,"\\")||strstr($path,'%')||strstr($path,':'))
	{
		return $ypath;
	}
	return $path;
}

//驗證文件名格式函數
function eReturnCkCFile($path){
	if(strstr($path,'..')||strstr($path,"\\")||strstr($path,'/')||strstr($path,'%')||strstr($path,':'))
	{
		return 0;
	}
	return 1;
}

//字符截取函數
function sub($string,$start=0,$length,$mode=false,$dot='',$rephtml=0){
	global $ecms_config;
	$strlen=strlen($string);
	if($strlen<=$length)
	{
		return $string;
	}

	if($rephtml==0)
	{
		$string = str_replace(array('&nbsp;','&amp;','&quot;','&lt;','&gt;','&#039;'), array(' ','&','"','<','>',"'"), $string);
	}

	$strcut = '';
	if(strtolower($ecms_config['sets']['pagechar']) == 'utf-8') {

		$n = $tn = $noc = 0;
		while($n < $strlen) {

			$t = ord($string[$n]);
			if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
				$tn = 1; $n++; $noc++;
			} elseif(194 <= $t && $t <= 223) {
				$tn = 2; $n += 2; $noc += 2;
			} elseif(224 <= $t && $t < 239) {
				$tn = 3; $n += 3; $noc += 2;
			} elseif(240 <= $t && $t <= 247) {
				$tn = 4; $n += 4; $noc += 2;
			} elseif(248 <= $t && $t <= 251) {
				$tn = 5; $n += 5; $noc += 2;
			} elseif($t == 252 || $t == 253) {
				$tn = 6; $n += 6; $noc += 2;
			} else {
				$n++;
			}

			if($noc >= $length) {
				break;
			}

		}
		if($noc > $length) {
			$n -= $tn;
		}

		$strcut = substr($string, 0, $n);

	} else {
		for($i = 0; $i < $length; $i++) {
			$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
		}
	}

	if($rephtml==0)
	{
		$strcut = str_replace(array('&','"','<','>',"'"), array('&amp;','&quot;','&lt;','&gt;','&#039;'), $strcut);
	}

	return $strcut.$dot;
}

//截取字數
function esub($string,$length,$dot='',$rephtml=0){
	return sub($string,0,$length,false,$dot,$rephtml);
}

//取得隨機數
function make_password($pw_length){
	$low_ascii_bound=48;
	$upper_ascii_bound=122;
	$notuse=array(58,59,60,61,62,63,64,91,92,93,94,95,96);
	while($i<$pw_length)
	{
		if(PHP_VERSION<'4.2.0')
		{
			mt_srand((double)microtime()*1000000);
		}
		mt_srand();
		$randnum=mt_rand($low_ascii_bound,$upper_ascii_bound);
		if(!in_array($randnum,$notuse))
		{
			$password1=$password1.chr($randnum);
			$i++;
		}
	}
	return $password1;
}

//取得隨機數(數字)
function no_make_password($pw_length){
	$low_ascii_bound=48;
	$upper_ascii_bound=57;
	$notuse=array(58,59,60,61,62,63,64,73,79,91,92,93,94,95,96,108,111);
	while($i<$pw_length)
	{
		if(PHP_VERSION<'4.2.0')
		{
			mt_srand((double)microtime()*1000000);
		}
		mt_srand();
		$randnum=mt_rand($low_ascii_bound,$upper_ascii_bound);
		if(!in_array($randnum,$notuse))
		{
			$password1=$password1.chr($randnum);
			$i++;
		}
	}
	return $password1;
}

//取得隨機數(字母)
function abc_make_password($pw_length){
	$low_ascii_bound=65;
	$upper_ascii_bound=122;
	$notuse=array(91,92,93,94,95,96);
	while($i<$pw_length)
	{
		if(PHP_VERSION<'4.2.0')
		{
			mt_srand((double)microtime()*1000000);
		}
		mt_srand();
		$randnum=mt_rand($low_ascii_bound,$upper_ascii_bound);
		if(!in_array($randnum,$notuse))
		{
			$password1=$password1.chr($randnum);
			$i++;
		}
	}
	return $password1;
}

//programno
function EcmsGetProgramNo(){
	$r=explode(' ',microtime());
	$pno=$r[1].$r[0];
	return $pno;
}

//隨機數字
function EcmsRandInt($min=0,$max=0,$ecms=0){
	mt_srand();
	if($max)
	{
		$rnd=mt_rand($min,$max);
	}
	else
	{
		$rnd=mt_rand();
	}
	return $rnd;
}

//顏色轉RGB
function ToReturnRGB($rgb){
	$rgb=str_replace('#','',ehtmlspecialchars($rgb));
    return array(
        base_convert(substr($rgb,0,2),16,10),
        base_convert(substr($rgb,2,2),16,10),
        base_convert(substr($rgb,4,2),16,10)
    );
}

//驗證頁碼是否有效
function eCheckListPageNo($page,$line,$totalnum){
	$page=(int)$page;
	$line=(int)$line;
	$totalnum=(int)$totalnum;
	if(!$page)
	{
		return '';
	}
	if(!$line)
	{
		return '';
	}
	$totalpage=ceil($totalnum/$line);
	if($page>=$totalpage)
	{
		printerror('ErrorUrl','history.go(-1)',1);
	}
}

//前台分頁
function page1($num,$line,$page_line,$start,$page,$search){
	global $fun_r;
	$num=(int)$num;
	$line=(int)$line;
	$page_line=(int)$page_line;
	$start=(int)$start;
	$page=(int)$page;
	if($num<=$line)
	{
		return '';
	}
	$search=RepPostStr($search,1);
	$url=eReturnSelfPage(0).'?page';
	$snum=2;//最小頁數
	$totalpage=ceil($num/$line);//取得總頁數
	$firststr='<a title="'.$fun_r['trecord'].'">&nbsp;<b>'.$num.'</b> </a>&nbsp;&nbsp;';
	//上一頁
	if($page<>0)
	{
		$toppage='<a href="'.$url.'=0'.$search.'">'.$fun_r['startpage'].'</a>&nbsp;';
		$pagepr=$page-1;
		$prepage='<a href="'.$url.'='.$pagepr.$search.'">'.$fun_r['pripage'].'</a>';
	}
	//下一頁
	if($page!=$totalpage-1)
	{
		$pagenex=$page+1;
		$nextpage='&nbsp;<a href="'.$url.'='.$pagenex.$search.'">'.$fun_r['nextpage'].'</a>';
		$lastpage='&nbsp;<a href="'.$url.'='.($totalpage-1).$search.'">'.$fun_r['lastpage'].'</a>';
	}
	$starti=$page-$snum<0?0:$page-$snum;
	$no=0;
	for($i=$starti;$i<$totalpage&&$no<$page_line;$i++)
	{
		$no++;
		if($page==$i)
		{
			$is_1="<b>";
			$is_2="</b>";
		}
		else
		{
			$is_1='<a href="'.$url.'='.$i.$search.'">';
			$is_2="</a>";
		}
		$pagenum=$i+1;
		$returnstr.="&nbsp;".$is_1.$pagenum.$is_2;
	}
	$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
	return $returnstr;
}

//---------- 偽靜態 ----------

//返回內容偽靜態
function eReturnRewriteInfoUrl($classid,$id,$ecms=0){
	global $public_r;
	if(empty($public_r['rewriteinfo']))
	{
		$r['pageurl']=$public_r['newsurl']."e/action/ShowInfo.php?classid=$classid&id=$id";
		$r['rewrite']=0;
	}
	else
	{
		if($ecms==1)
		{
			$r['pageurl']=$public_r['newsurl'].str_replace(array('[!--classid--]','[!--id--]','[!--page--]'),array($classid,$id,0),$public_r['rewriteinfo']);
		}
		else
		{
			$r['pageurl']=$public_r['newsurl'].str_replace(array('[!--classid--]','[!--id--]'),array($classid,$id),$public_r['rewriteinfo']);
		}
		$r['rewrite']=1;
	}
	return $r;
}

//返回欄目列表偽靜態
function eReturnRewriteClassUrl($classid,$ecms=0){
	global $public_r;
	if(empty($public_r['rewriteclass']))
	{
		$r['pageurl']=$public_r['newsurl']."e/action/ListInfo/?classid=$classid";
		$r['rewrite']=0;
	}
	else
	{
		if($ecms==1)
		{
			$r['pageurl']=$public_r['newsurl'].str_replace(array('[!--classid--]','[!--page--]'),array($classid,0),$public_r['rewriteclass']);
		}
		else
		{
			$r['pageurl']=$public_r['newsurl'].str_replace('[!--classid--]',$classid,$public_r['rewriteclass']);
		}
		$r['rewrite']=1;
	}
	return $r;
}

//返回標題分類列表偽靜態
function eReturnRewriteTitleTypeUrl($ttid,$ecms=0){
	global $public_r;
	if(empty($public_r['rewriteinfotype']))
	{
		$r['pageurl']=$public_r['newsurl']."e/action/InfoType/?ttid=$ttid";
		$r['rewrite']=0;
	}
	else
	{
		if($ecms==1)
		{
			$r['pageurl']=$public_r['newsurl'].str_replace(array('[!--ttid--]','[!--page--]'),array($ttid,0),$public_r['rewriteinfotype']);
		}
		else
		{
			$r['pageurl']=$public_r['newsurl'].str_replace('[!--ttid--]',$ttid,$public_r['rewriteinfotype']);
		}
		$r['rewrite']=1;
	}
	return $r;
}

//返回TAGS列表偽靜態
function eReturnRewriteTagsUrl($tagid,$tagname,$ecms=0){
	global $public_r;
	$tagname=urlencode($tagname);
	if(empty($public_r['rewritetags']))
	{
		$r['pageurl']=$public_r['newsurl']."e/tags/?tagname=".$tagname;
		$r['rewrite']=0;
	}
	else
	{
		if($ecms==1)
		{
			$r['pageurl']=$public_r['newsurl'].str_replace(array('[!--tagname--]','[!--page--]'),array($tagname,0),$public_r['rewritetags']);
		}
		else
		{
			$r['pageurl']=$public_r['newsurl'].str_replace('[!--tagname--]',$tagname,$public_r['rewritetags']);
		}
		$r['rewrite']=1;
	}
	return $r;
}

//返回評論列表偽靜態
function eReturnRewritePlUrl($classid,$id,$doaction='doinfo',$myorder=0,$tempid=0,$ecms=0){
	global $public_r;
	if(empty($public_r['rewritepl']))
	{
		if($doaction=='dozt')
		{
			$r['pageurl']=$public_r['plurl']."?doaction=dozt&classid=$classid".($myorder?'&myorder='.$myorder:'').($tempid?'&tempid='.$tempid:'');
		}
		else
		{
			$r['pageurl']=$public_r['plurl']."?classid=$classid&id=$id".($myorder?'&myorder='.$myorder:'').($tempid?'&tempid='.$tempid:'');
		}
		$r['rewrite']=0;
	}
	else
	{
		if($ecms==1)
		{
			$r['pageurl']=$public_r['newsurl'].str_replace(array('[!--doaction--]','[!--classid--]','[!--id--]','[!--page--]','[!--myorder--]','[!--tempid--]'),array($doaction,$classid,$id,0,$myorder,$tempid),$public_r['rewritepl']);
		}
		else
		{
			$r['pageurl']=$public_r['newsurl'].str_replace(array('[!--doaction--]','[!--classid--]','[!--id--]','[!--myorder--]','[!--tempid--]'),array($doaction,$classid,$id,$myorder,$tempid),$public_r['rewritepl']);
		}
		$r['rewrite']=1;
	}
	return $r;
}

//偽靜態鏈接地址中轉
function eReturnRewriteLink($type,$classid,$id){
	if($type=='infopage')//信息頁
	{
		$url=eReturnRewriteInfoUrl($classid,$id);
	}
	elseif($type=='ttpage')//標題分類頁
	{
		$url=eReturnRewriteTitleTypeUrl($classid);
	}
	elseif($type=='tagspage')//Tags列表頁
	{
		$url=eReturnRewriteTagsUrl($classid,$id);
	}
	else//欄目頁
	{
		$url=eReturnRewriteClassUrl($classid);
	}
	return $url;
}

//偽靜態替換分頁號
function eReturnRewritePageLink($r,$page){
	//動靜
	$truepage=$page+1;
	if($r['repagenum']&&$truepage<=$r['repagenum'])
	{
		//文件名
		if(empty($r['dofile']))
		{
			$r['dofile']='index';
		}
		$url=$r['dolink'].$r['dofile'].($truepage==1?'':'_'.$truepage).$r['dotype'];
		return $url;
	}
	if($r['rewrite']==1)
	{
		$url=str_replace('[!--page--]',$page,$r['pageurl']);
	}
	else
	{
		$url=$r['pageurl'].'&page='.$page;
	}
	return $url;
}

//偽靜態替換分頁號(靜態)
function eReturnRewritePageLink2($r,$page){
	if($r['rewrite']==1)
	{
		$url=str_replace('[!--page--]',$page-1,$r['pageurl']);
	}
	else
	{
		$url=$r['pageurl'].'&page='.($page-1);
	}
	return $url;
}

//前台分頁(偽靜態)
function InfoUsePage($num,$line,$page_line,$start,$page,$search,$add){
	global $fun_r;
	$num=(int)$num;
	$line=(int)$line;
	$page_line=(int)$page_line;
	$start=(int)$start;
	$page=(int)$page;
	if($num<=$line)
	{
		return '';
	}
	$search=RepPostStr($search,1);
	$snum=2;//最小頁數
	$totalpage=ceil($num/$line);//取得總頁數
	$firststr='<a title="'.$fun_r['trecord'].'">&nbsp;<b>'.$num.'</b> </a>&nbsp;&nbsp;';
	//上一頁
	if($page<>0)
	{
		$toppage='<a href="'.eReturnRewritePageLink($add,0).'">'.$fun_r['startpage'].'</a>&nbsp;';
		$pagepr=$page-1;
		$prepage='<a href="'.eReturnRewritePageLink($add,$pagepr).'">'.$fun_r['pripage'].'</a>';
	}
	//下一頁
	if($page!=$totalpage-1)
	{
		$pagenex=$page+1;
		$nextpage='&nbsp;<a href="'.eReturnRewritePageLink($add,$pagenex).'">'.$fun_r['nextpage'].'</a>';
		$lastpage='&nbsp;<a href="'.eReturnRewritePageLink($add,$totalpage-1).'">'.$fun_r['lastpage'].'</a>';
	}
	$starti=$page-$snum<0?0:$page-$snum;
	$no=0;
	for($i=$starti;$i<$totalpage&&$no<$page_line;$i++)
	{
		$no++;
		if($page==$i)
		{
			$is_1="<b>";
			$is_2="</b>";
		}
		else
		{
			$is_1='<a href="'.eReturnRewritePageLink($add,$i).'">';
			$is_2="</a>";
		}
		$pagenum=$i+1;
		$returnstr.="&nbsp;".$is_1.$pagenum.$is_2;
	}
	$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
	return $returnstr;
}

//時間轉換函數
function to_time($datetime){
	if(strlen($datetime)==10)
	{
		$datetime.=" 00:00:00";
	}
	$r=explode(" ",$datetime);
	$t=explode("-",$r[0]);
	$k=explode(":",$r[1]);
	$dbtime=@mktime($k[0],$k[1],$k[2],$t[1],$t[2],$t[0]);
	return intval($dbtime);
}

//時期轉日期
function date_time($time,$format="Y-m-d H:i:s"){
	$threadtime=date($format,$time);
	return $threadtime;
}

//格式化日期
function format_datetime($newstime,$format){
	if($newstime=="0000-00-00 00:00:00")
	{return $newstime;}
	$time=is_numeric($newstime)?$newstime:to_time($newstime);
	$newdate=date_time($time,$format);
	return $newdate;
}

//時間轉換函數
function to_date($date){
	$date.=" 00:00:00";
	$r=explode(" ",$date);
	$t=explode("-",$r[0]);
	$k=explode(":",$r[1]);
	$dbtime=@mktime($k[0],$k[1],$k[2],$t[1],$t[2],$t[0]);
	return intval($dbtime);
}

//選擇時間
function ToChangeTime($time,$day){
	$truetime=$time-$day*24*3600;
	$date=date_time($truetime,"Y-m-d");
	return $date;
}

//刪除文件
function DelFiletext($filename){
	@unlink($filename);
}

//取得文件內容
function ReadFiletext($filepath){
	$filepath=trim($filepath);
	$ishttp=0;
	if(strstr($filepath,'://'))
	{
		if(!eToCheckIsUrl2($filepath))
		{
			return '';
		}
		$ishttp=1;
	}
	$htmlfp=@fopen($filepath,"r");
	//遠程
	if($ishttp==1)
	{
		while($data=@fread($htmlfp,500000))
	    {
			$string.=$data;
		}
	}
	//本地
	else
	{
		$string=@fread($htmlfp,@filesize($filepath));
	}
	@fclose($htmlfp);
	return $string;
}

//寫文件
function WriteFiletext($filepath,$string){
	global $public_r;
	$string=stripSlashes($string);
	$fp=@fopen($filepath,"w");
	@fputs($fp,$string);
	@fclose($fp);
	if(empty($public_r[filechmod]))
	{
		@chmod($filepath,0777);
	}
}

//寫文件
function WriteFiletext_n($filepath,$string){
	global $public_r;
	$fp=@fopen($filepath,"w");
	@fputs($fp,$string);
	@fclose($fp);
	if(empty($public_r[filechmod]))
	{
		@chmod($filepath,0777);
	}
}

//標題屬性後
function DoTitleFont($titlefont,$title){
	if(empty($titlefont))
	{
		return $title;
	}
	$r=explode(',',$titlefont);
	if(!empty($r[0]))
	{
		$title="<font color='".$r[0]."'>".$title."</font>";
	}
	if(empty($r[1]))
	{return $title;}
	//粗體
	if(strstr($r[1],"b"))
	{$title="<strong>".$title."</strong>";}
	//斜體
	if(strstr($r[1],"i"))
	{$title="<i>".$title."</i>";}
	//刪除線
	if(strstr($r[1],"s"))
	{$title="<s>".$title."</s>";}
	return $title;
}

//返回頭條級別名稱權限
function ReturnFirsttitleNameCkLevel($r,$groupid,$classid){
	if(defined('EmpireCMSAdmin'))
	{
		if($r['groupid'])
		{
			if(!strstr($r['groupid'],','.$groupid.','))
			{
				return 0;
			}
		}
	}
	if($classid)
	{
		if($r['showcid'])
		{
			if(!strstr($r['showcid'],','.$classid.','))
			{
				return 0;
			}
		}
		if($r['hiddencid'])
		{
			if(strstr($r['hiddencid'],','.$classid.','))
			{
				return 0;
			}
		}
	}
	else
	{
		if($r['showall']==1)
		{
			return 0;
		}
	}
	return 1;
}

//返回頭條級別名稱
function ReturnFirsttitleNameList($firsttitle,$isgood){
	global $empire,$dbtbpre,$lur,$classid,$class_r;
	$classid=(int)$classid;
	if($classid&&!$class_r[$classid]['islast'])
	{
		$classid=0;
	}
	$groupid=(int)$lur['groupid'];
	$first_r=array();//頭條
	$ftn='';
	$good_r=array();//推薦
	$gn='';
	$sql=$empire->query("select tname,ttype,levelid,groupid,showall,showcid,hiddencid from {$dbtbpre}enewsgoodtype order by myorder desc,levelid");
	while($r=$empire->fetch($sql))
	{
		if($r['ttype']==1)//頭條
		{
			$first_r[$r['levelid']]=$r['tname'];
			$selected='';
			if($r['levelid']==$firsttitle)
			{
				$selected=' selected';
			}
			if(ReturnFirsttitleNameCkLevel($r,$groupid,$classid))
			{
				$ftn.='<option value="'.$r['levelid'].'"'.$selected.'>'.$r['tname'].'</option>';
			}
		}
		else//推薦
		{
			$good_r[$r['levelid']]=$r['tname'];
			$selected='';
			if($r['levelid']==$isgood)
			{
				$selected=' selected';
			}
			if(ReturnFirsttitleNameCkLevel($r,$groupid,$classid))
			{
				$gn.='<option value="'.$r['levelid'].'"'.$selected.'>'.$r['tname'].'</option>';
			}
		}
	}
	$ret_r['ftname']=$ftn;
	$ret_r['ftr']=$first_r;
	$ret_r['igname']=$gn;
	$ret_r['igr']=$good_r;
	return $ret_r;
}

//替換全角逗號
function DoReplaceQjDh($text){
	return str_replace('，',',',$text);
}

//半角轉全角
function eDoBjToQj($text){
	$text=str_replace(array('&','"','\'','<','>'),array('＆','〞','′','＜','＞'),$text);
	return $text;
}

//給信息字段轉全角
function eDoInfoTbfToQj($tbname,$f,$fval,$qjf){
	global $public_r;
	if(empty($qjf))
	{
		return $fval;
	}
	if(!stristr('|'.$qjf.'|','|'.$tbname.'.'.$f.'|'))
	{
		return $fval;
	}
	$fval=eDoBjToQj($fval);
	return $fval;
}

//建立目錄函數
function DoMkdir($path){
	global $public_r;
	//不存在則建立
	if(!file_exists($path))
	{
		//安全模式
		if($public_r[phpmode])
		{
			$pr[0]=$path;
			FtpMkdir($ftpid,$pr,0777);
			$mk=1;
		}
		else
		{
			$mk=@mkdir($path,0777);
			@chmod($path,0777);
		}
		if(empty($mk))
		{
			echo Ecms_eReturnShowMkdir($path);
			printerror("CreatePathFail","history.go(-1)");
		}
	}
	return true;
}

//建立上級目錄
function DoFileMkDir($file){
	$path=dirname($file.'empirecms.txt');
	DoMkdir($path);
}

//設置上傳文件權限
function DoChmodFile($file){
	global $public_r;
	if($public_r['filechmod']!=1)
	{
		@chmod($file,0777);
	}
}

//替換斜扛
function DoRepFileXg($file){
	$file=str_replace("\\","/",$file);
	return $file;
}

//返回欄目鏈接字符串
function ReturnClassLink($classid){
	global $class_r,$public_r,$fun_r;
	if(empty($class_r[$classid][featherclass]))
	{$class_r[$classid][featherclass]="|";}
	$r=explode("|",$class_r[$classid][featherclass].$classid."|");
	$string="<a href=\"".ReturnSiteIndexUrl()."\">".$fun_r['index']."</a>";
	for($i=1;$i<count($r)-1;$i++)
	{
		//moreport
		if(Moreport_ReturnMustDt())
		{
			$class_r[$r[$i]][listdt]=1;
		}
		//靜態列表
		if(empty($class_r[$r[$i]][listdt]))
		{
			//無綁定域名
			if(empty($class_r[$r[$i]][classurl]))
			{$url=$public_r[newsurl].$class_r[$r[$i]][classpath]."/";}
			else
			{$url=$class_r[$r[$i]][classurl];}
		}
		else
		{
			$rewriter=eReturnRewriteClassUrl($r[$i],1);
			$url=$rewriter['pageurl'];
		}
		$string.="&nbsp;".$public_r[navfh]."&nbsp;<a href=\"".$url."\">".$class_r[$r[$i]][classname]."</a>";
	}
	return $string;
}

//返回專題鏈接字符串
function ReturnZtLink($ztid){
	global $class_zr,$public_r,$fun_r;
	$string="<a href=\"".ReturnSiteIndexUrl()."\">".$fun_r['index']."</a>";
	//無綁定域名
	if(empty($class_zr[$ztid][zturl]))
	{$url=$public_r[newsurl].$class_zr[$ztid][ztpath]."/";}
	else
	{$url=$class_zr[$ztid][zturl];}
    $string.="&nbsp;".$public_r[navfh]."&nbsp;<a href=\"".$url."\">".$class_zr[$ztid][ztname]."</a>";
	return $string;
}

//返回標題分類鏈接字符串
function ReturnInfoTypeLink($typeid){
	global $class_tr,$public_r,$fun_r;
	$string="<a href=\"".ReturnSiteIndexUrl()."\">".$fun_r['index']."</a>";
	//moreport
	if(Moreport_ReturnMustDt())
	{
		$class_tr[$typeid]['listdt']=1;
	}
	if($class_tr[$typeid]['listdt'])
	{
		$rewriter=eReturnRewriteTitleTypeUrl($typeid,1);
		$url=$rewriter['pageurl'];
	}
	else
	{
		$url=$public_r[newsurl].$class_tr[$typeid][tpath]."/";
	}
    $string.="&nbsp;".$public_r[navfh]."&nbsp;<a href=\"".$url."\">".$class_tr[$typeid][tname]."</a>";
	return $string;
}

//返回單頁鏈接字符串
function ReturnUserPLink($title,$titleurl){
	global $public_r,$fun_r;
	$string='<a href="'.ReturnSiteIndexUrl().'">'.$fun_r['index'].'</a>&nbsp;'.$public_r[navfh].'&nbsp;'.$title;
	return $string;
}

//返回標題鏈接(靜態)
function sys_ReturnBqTitleLink($r){
	global $public_r;
	if(empty($r['isurl']))
	{
		//moreport
		if(Moreport_ReturnMustDt())
		{
			return Moreport_ReturnTitleUrl($r['classid'],$r['id']);
		}
		return $r['titleurl'];
	}
	else
	{
		if($public_r['opentitleurl'])
		{
			$titleurl=$r['titleurl'];
		}
		else
		{
			$titleurl=$public_r['newsurl'].'e/public/jump/?classid='.$r['classid'].'&id='.$r['id'];
		}
		return $titleurl;
	}
}

//返回標題鏈接(動態)
function sys_ReturnBqTitleLinkDt($r){
	global $public_r,$class_r;
	if(empty($r['isurl']))
	{
		if($class_r[$r[classid]][showdt]==1)//動態生成
		{
			$titleurl=$public_r[newsurl]."e/action/ShowInfo/?classid=$r[classid]&id=$r[id]";
			return $titleurl;
		}
		elseif($class_r[$r[classid]][showdt]==2)
		{
			$rewriter=eReturnRewriteInfoUrl($r['classid'],$r['id'],1);
			$titleurl=$rewriter['pageurl'];
			return $titleurl;
		}
		if($class_r[$r[classid]][filename]==3)
		{
			$filename=ReturnInfoSPath($r[filename]);
		}
		else
		{
			$filetype=$r[groupid]?'.php':$class_r[$r[classid]][filetype];
			$filename=$r[filename].$filetype;
		}
		$iclasspath=ReturnSaveInfoPath($r[classid],$r[id]);
		$newspath=empty($r[newspath])?'':$r[newspath]."/";
		if($class_r[$r[classid]][classurl]&&$class_r[$r[classid]][ipath]=='')//域名
		{
			$titleurl=$class_r[$r[classid]][classurl]."/".$newspath.$filename;
		}
		else
		{
			$titleurl=$public_r[newsurl].$iclasspath.$newspath.$filename;
		}
	}
	else
	{
		$titleurl=$r['titleurl'];
	}
	return addslashes($titleurl);
}

//中轉取得信息地址
function GotoGetTitleUrl($classid,$id,$newspath,$filename,$groupid,$isurl,$titleurl){
	$r['classid']=$classid;
	$r['id']=$id;
	$r['newspath']=$newspath;
	$r['filename']=$filename;
	$r['groupid']=$groupid;
	$r['isurl']=$isurl;
	$r['titleurl']=$titleurl;
	$infourl=sys_ReturnBqTitleLinkDt($r);
	return $infourl;
}

//返回標題鏈接(觸發)
function sys_ReturnBqAutoTitleLink($r){
	global $public_r,$class_r;
	if(empty($r['isurl']))
	{
		if($class_r[$r[classid]][showdt]==2)
		{
			$rewriter=eReturnRewriteInfoUrl($r['classid'],$r['id'],1);
			$titleurl=$rewriter['pageurl'];
			return $titleurl;
		}
		if($class_r[$r[classid]][filename]==3)
		{
			$filename=ReturnInfoSPath($r[filename]);
		}
		else
		{
			$filetype=$r[groupid]?'.php':$class_r[$r[classid]][filetype];
			$filename=$r[filename].$filetype;
		}
		$iclasspath=ReturnSaveInfoPath($r[classid],$r[id]);
		$newspath=empty($r[newspath])?'':$r[newspath]."/";
		if($class_r[$r[classid]][classurl]&&$class_r[$r[classid]][ipath]=='')//域名
		{
			$titleurl=$class_r[$r[classid]][classurl]."/".$newspath.$filename;
		}
		else
		{
			$titleurl=$public_r[newsurl].$iclasspath.$newspath.$filename;
		}
	}
	else
	{
		if($public_r['opentitleurl'])
		{
			$titleurl=$r['titleurl'];
		}
		else
		{
			$titleurl=$public_r['newsurl']."e/public/jump/?classid=".$r['classid']."&id=".$r['id'];
		}
	}
	return $titleurl;
}

//返回內容頁地址前綴
function ReturnInfoPageQz($r){
	global $public_r,$class_r;
	$ret_r['titleurl']='';
	$ret_r['filetype']='';
	$ret_r['nametype']=0;
	//動態頁面
	if($class_r[$r[classid]][showdt]==2)
	{
		$rewriter=eReturnRewriteInfoUrl($r['classid'],$r['id'],0);
		$ret_r['pageurl']=$rewriter['pageurl'];
		$ret_r['rewrite']=$rewriter['rewrite'];
		$ret_r['titleurl']=$rewriter['pageurl'];
		$ret_r['filetype']='';
		$ret_r['nametype']=1;
		return $ret_r;
	}
	//靜態頁面
	$ret_r['filetype']=$r[groupid]?'.php':$class_r[$r[classid]][filetype];
	$filename=$r[filename];
	$iclasspath=ReturnSaveInfoPath($r[classid],$r[id]);
	$newspath=empty($r[newspath])?'':$r[newspath]."/";
	if($class_r[$r[classid]][classurl]&&$class_r[$r[classid]][ipath]=='')//域名
	{
		$ret_r['titleurl']=$class_r[$r[classid]][classurl]."/".$newspath.$filename;
	}
	else
	{
		$ret_r['titleurl']=$public_r[newsurl].$iclasspath.$newspath.$filename;
	}
	return $ret_r;
}

//返回欄目鏈接
function sys_ReturnBqClassname($r,$have_class=0){
	global $public_r,$class_r;
	if($have_class)
	{
		//moreport
		if(Moreport_ReturnMustDt())
		{
			$class_r[$r[classid]][listdt]=1;
		}
		//外部欄目
		if($class_r[$r[classid]][wburl])
		{
			$classurl=$class_r[$r[classid]][wburl];
		}
		//動態列表
		elseif($class_r[$r[classid]][listdt])
		{
			$rewriter=eReturnRewriteClassUrl($r['classid'],1);
			$classurl=$rewriter['pageurl'];
		}
		elseif($class_r[$r[classid]][classurl])
		{
			$classurl=$class_r[$r[classid]][classurl];
		}
		else
		{
			$classurl=$public_r[newsurl].$class_r[$r[classid]][classpath]."/";
		}
		if(empty($class_r[$r[classid]][bname]))
		{$classname=$class_r[$r[classid]][classname];}
		else
		{$classname=$class_r[$r[classid]][bname];}
		$myadd="[<a href=".$classurl.">".$classname."</a>]";
		//只返回鏈接
		if($have_class==9)
		{$myadd=$classurl;}
	}
	else
	{$myadd="";}
	return $myadd;
}

//返回專題鏈接
function sys_ReturnBqZtname($r){
	global $public_r,$class_zr;
	if($class_zr[$r[ztid]][zturl])
	{
		$zturl=$class_zr[$r[ztid]][zturl];
    }
	else
	{
		$zturl=$public_r[newsurl].$class_zr[$r[ztid]][ztpath]."/";
    }
	return $zturl;
}

//返回標題分類鏈接
function sys_ReturnBqInfoTypeUrl($typeid){
	global $public_r,$class_tr;
	//moreport
	if(Moreport_ReturnMustDt())
	{
		$class_tr[$typeid]['listdt']=1;
	}
	if($class_tr[$typeid]['listdt'])
	{
		$rewriter=eReturnRewriteTitleTypeUrl($typeid,1);
		$url=$rewriter['pageurl'];
	}
	else
	{
		$url=$public_r['newsurl'].$class_tr[$typeid]['tpath']."/";
	}
	return $url;
}

//文件大小格式轉換
function ChTheFilesize($size){
	if($size>=1024*1024)//MB
	{
		$filesize=number_format($size/(1024*1024),2,'.','')." MB";
	}
	elseif($size>=1024)//KB
	{
		$filesize=number_format($size/1024,2,'.','')." KB";
	}
	else
	{
		$filesize=$size." Bytes";
	}
	return $filesize;
}

//取得表記錄
function eGetTableRowNum($tbname){
	global $empire,$dbtbpre;
	$total_r=$empire->fetch1("SHOW TABLE STATUS LIKE '".$tbname."';");
	return $total_r['Rows'];
}

//更新欄目信息數
function AddClassInfos($classid,$addallstr,$addstr,$checked=1){
	global $empire,$dbtbpre;
	$updatestr='';
	$dh='';
	if($addallstr)
	{
		$updatestr.='allinfos=allinfos'.$addallstr;
		$dh=',';
	}
	if($addstr)
	{
		if($checked)
		{
			$updatestr.=$dh.'infos=infos'.$addstr;
		}
	}
	if(empty($updatestr))
	{
		return '';
	}
	$empire->query("update {$dbtbpre}enewsclass set ".$updatestr." where classid='$classid' limit 1");
}

//返回欄目信息數
function ReturnClassInfoNum($cr,$ecms=0){
	global $empire,$dbtbpre,$class_r;
	if($cr['islast'])
	{
		$num=$ecms==0?$cr['infos']:$cr['allinfos'];
	}
	else
	{
		$f=$ecms==0?'infos':'allinfos';
		$num=$empire->gettotal("select sum(".$f.") as total from {$dbtbpre}enewsclass where ".ReturnClass($class_r[$cr[classid]][sonclass]));
		$num=(int)$num;
	}
	return $num;
}

//重置欄目信息數
function ResetClassInfos($classid){
	global $empire,$dbtbpre,$class_r;
	$infos=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid]['tbname']." where classid='$classid'");
	$checkinfos=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid]['tbname']."_check where classid='$classid'");
	$allinfos=$infos+$checkinfos;
	$empire->query("update {$dbtbpre}enewsclass set allinfos='$allinfos',infos='$infos' where classid='$classid' limit 1");
}

//單信息評論數
function UpdateSingleInfoPlnum($classid,$id,$checked=1){
	global $empire,$dbtbpre,$class_r;
	$tbname=$class_r[$classid]['tbname'];
	if(empty($tbname))
	{
		return '';
	}
	$infotb=ReturnInfoMainTbname($tbname,$checked);
	$r=$empire->fetch1("select id,restb,plnum from ".$infotb." where id='$id' limit 1");
	if(empty($r['restb']))
	{
		return '';
	}
	$pubid=ReturnInfoPubid($classid,$id);
	$plnum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewspl_".$r['restb']." where pubid='$pubid' limit 1");
	if($plnum==$r['plnum'])
	{
		return '';
	}
	$empire->query("update ".$infotb." set plnum='$plnum' where id='$id' limit 1");
}

//信息數統計加1
function DoUpdateAddDataNum($type='info',$stb,$addnum=1){
	global $empire,$dbtbpre;
	if($type=='info')//信息
	{
		$lasttimef='lasttimeinfo';
		$lastnumf='lastnuminfo';
		$lastnumtbf='lastnuminfotb';
		$todaytimef='todaytimeinfo';
		$todaynumf='todaynuminfo';
		$yesterdaynumf='yesterdaynuminfo';
		$sqladdf=',todaytimeinfo,todaytimepl,todaynuminfo,todaynumpl';
	}
	elseif($type=='pl')//評論
	{
		$lasttimef='lasttimepl';
		$lastnumf='lastnumpl';
		$lastnumtbf='lastnumpltb';
		$todaytimef='todaytimepl';
		$todaynumf='todaynumpl';
		$yesterdaynumf='yesterdaynumpl';
		$sqladdf=',todaytimepl,todaytimeinfo,todaynuminfo,todaynumpl';
	}
	else
	{
		return '';
	}
	$sqladdupdate='';
	$time=time();
	$pur=$empire->fetch1("select ".$lasttimef.",".$lastnumtbf.$sqladdf." from {$dbtbpre}enewspublic_up limit 1");
	if($stb)
	{
		if(empty($pur[$lastnumtbf]))
		{
			$pur[$lastnumtbf]='|';
		}
		if(strstr($pur[$lastnumtbf],'|'.$stb.','))
		{
			$numr=explode('|'.$stb.',',$pur[$lastnumtbf]);
			$numrt=explode('|',$numr[1]);
			$newnum=$numrt[0]+$addnum;
			$tbnums=str_replace('|'.$stb.','.$numrt[0].'|','|'.$stb.','.$newnum.'|',$pur[$lastnumtbf]);
		}
		else
		{
			$tbnums=$pur[$lastnumtbf].$stb.','.$addnum.'|';
		}
		$sqladdupdate.=",".$lastnumtbf."='".$tbnums."'";
	}
	//今日統計
	if($sqladdf)
	{
		$todaydate=date('Y-m-d');
		if($todaydate<>date('Y-m-d',$pur['todaytimeinfo'])||$todaydate<>date('Y-m-d',$pur['todaytimepl']))
		{
			if($type=='info')
			{
				$todaynuminfo=$addnum;
				$todaynumpl=0;
			}
			else
			{
				$todaynuminfo=0;
				$todaynumpl=$addnum;
			}
			$yesterdaynuminfo=$pur['todaynuminfo'];
			$yesterdaynumpl=$pur['todaynumpl'];
			if($todaydate<>date('Y-m-d',$pur['todaytimeinfo']+24*3600))
			{
				$yesterdaynuminfo=0;
			}
			if($todaydate<>date('Y-m-d',$pur['todaytimepl']+24*3600))
			{
				$yesterdaynumpl=0;
			}
			$sqladdupdate.=",todaytimeinfo='$time',todaytimepl='$time',todaynuminfo='$todaynuminfo',todaynumpl='$todaynumpl',yesterdaynuminfo='$yesterdaynuminfo',yesterdaynumpl='$yesterdaynumpl'";
		}
		else
		{
			$sqladdupdate.=",".$todaynumf."=".$todaynumf."+".$addnum;
		}
	}
	$empire->query("update {$dbtbpre}enewspublic_up set ".$lastnumf."=".$lastnumf."+".$addnum.$sqladdupdate." limit 1");
}

//重置信息數統計
function DoResetAddDataNum($type='info'){
	global $empire,$dbtbpre;
	if($type=='info')//信息
	{
		$lasttimef='lasttimeinfo';
		$lastnumf='lastnuminfo';
		$lastnumtbf='lastnuminfotb';
	}
	elseif($type=='pl')//評論
	{
		$lasttimef='lasttimepl';
		$lastnumf='lastnumpl';
		$lastnumtbf='lastnumpltb';
	}
	else
	{
		return '';
	}
	$time=time();
	$empire->query("update {$dbtbpre}enewspublic_up set ".$lasttimef."='$time',".$lastnumf."=0,".$lastnumtbf."='' limit 1");
}

//更新昨日信息數統計
function DoUpdateYesterdayAddDataNum(){
	global $empire,$dbtbpre;
	$pur=$empire->fetch1("select * from {$dbtbpre}enewspublic_up limit 1");
	$todaydate=date('Y-m-d');
	if($todaydate==date('Y-m-d',$pur['todaytimeinfo'])&&$todaydate==date('Y-m-d',$pur['todaytimepl']))
	{
		return '';
	}
	$yesterdaynuminfo=$pur['todaynuminfo'];
	$yesterdaynumpl=$pur['todaynumpl'];
	if($todaydate<>date('Y-m-d',$pur['todaytimeinfo']+24*3600))
	{
		$yesterdaynuminfo=0;
	}
	if($todaydate<>date('Y-m-d',$pur['todaytimepl']+24*3600))
	{
		$yesterdaynumpl=0;
	}
	$time=time();
	$empire->query("update {$dbtbpre}enewspublic_up set todaytimeinfo='$time',todaytimepl='$time',todaynuminfo=0,yesterdaynuminfo='$yesterdaynuminfo',todaynumpl=0,yesterdaynumpl='$yesterdaynumpl' limit 1");
}

//返回欄目自定義字段內容
function ReturnClassAddField($classid,$f){
	global $empire,$dbtbpre,$navclassid;
	if(empty($classid))
	{
		$classid=$navclassid;
	}
	$fr=$empire->fetch1("select ".$f." from {$dbtbpre}enewsclassadd where classid='$classid' limit 1");
	if(strstr($f,','))
	{
		return $fr;
	}
	else
	{
		return $fr[$f];
	}
}

//返回專題自定義字段內容
function ReturnZtAddField($classid,$f){
	global $empire,$dbtbpre,$navclassid;
	if(empty($classid))
	{
		$classid=$navclassid;
	}
	$fr=$empire->fetch1("select ".$f." from {$dbtbpre}enewsztadd where ztid='$classid' limit 1");
	if(strstr($f,','))
	{
		return $fr;
	}
	else
	{
		return $fr[$f];
	}
}

//返回擴展變量值
function ReturnPublicAddVar($myvar){
	global $empire,$dbtbpre;
	if(strstr($myvar,','))
	{
		$myvr=explode(',',$myvar);
		$count=count($myvr);
		for($i=0;$i<$count;$i++)
		{
			$v=$myvr[$i];
			$vr=$empire->fetch1("select varvalue from {$dbtbpre}enewspubvar where myvar='$v' limit 1");
			$ret_vr[$v]=$vr['varvalue'];
		}
		return $ret_vr;
	}
	else
	{
		$vr=$empire->fetch1("select varvalue from {$dbtbpre}enewspubvar where myvar='$myvar' limit 1");
		return $vr['varvalue'];
	}
}

//返回排序字段
function ReturnDoOrderF($mid,$orderby,$myorder){
	global $emod_r;
	$orderby=str_replace(',','',$orderby);
	$orderf=',newstime,id,onclick,totaldown,plnum';
	if(!empty($emod_r[$mid]['orderf']))
	{
		$orderf.=$emod_r[$mid]['orderf'];
	}
	else
	{
		$orderf.=',';
	}
	if(strstr($orderf,','.$orderby.','))
	{
		$rr['returnorder']=$orderby;
		$rr['returnf']=$orderby;
	}
	else
	{
		$rr['returnorder']='newstime';
		$rr['returnf']='newstime';
	}
	if(empty($myorder))
	{
		$rr['returnorder'].=' desc';
	}
	return $rr;
}

//返回置頂
function ReturnSetTopSql($ecms){
	global $public_r;
	if(empty($public_r['settop']))
	{
		return '';
	}
	$top='istop desc,';
	if($ecms=='list')
	{
		if($public_r['settop']==1||$public_r['settop']==4||$public_r['settop']==5||$public_r['settop']==6)
		{
			return $top;
		}
	}
	elseif($ecms=='bq')
	{
		if($public_r['settop']==2||$public_r['settop']==4||$public_r['settop']==5||$public_r['settop']==7)
		{
			return $top;
		}
	}
	elseif($ecms=='js')
	{
		if($public_r['settop']==3||$public_r['settop']==4||$public_r['settop']==6||$public_r['settop']==7)
		{
			return $top;
		}
	}
	return '';
}

//返回優化方案SQL
function ReturnYhSql($yhid,$yhvar,$ecms=0){
	global $eyh_r;
	if(empty($yhid))
	{
		return '';
	}
	$query='';
	if($eyh_r[$yhid][$yhvar])
	{
		$t=time()-($eyh_r[$yhid][$yhvar]*86400);
		$query='newstime>'.$t.(empty($ecms)?'':' and ');
	}
	return $query;
}

//返回優化+條件SQL
function ReturnYhAndSql($yhadd,$where,$ecms=0){
	if($yhadd.$where=='')
	{
		return '';
	}
	elseif($yhadd&&$where)
	{
		return $ecms==1?' where '.$yhadd.$where:' where '.$yhadd.' and '.$where;
	}
	elseif($yhadd&&!$where)
	{
		return ' where '.$yhadd;
	}
	else
	{
		return $ecms==1?' where '.substr($where,5):' where '.$where;
	}
}

//返回列表查詢字段
function ReturnSqlListF($mid){
	global $emod_r;
	if(empty($mid))
	{
		return '*';
	}
	$f='id,classid,ttid,onclick,plnum,totaldown,newspath,filename,userid,username,firsttitle,isgood,ispic,istop,isqf,ismember,isurl,truetime,lastdotime,havehtml,groupid,userfen,titlefont,titleurl,stb,fstb,restb,keyboard,eckuid'.substr($emod_r[$mid]['listtempf'],0,-1);
	return $f;
}

//返回內容查詢字段
function ReturnSqlTextF($mid,$ecms=0){
	global $emod_r;
	if(empty($mid))
	{
		return '*';
	}
	$f=($ecms==0?'id,classid,':'').'ttid,onclick,plnum,totaldown,newspath,filename,userid,username,firsttitle,isgood,ispic,istop,isqf,ismember,isurl,truetime,lastdotime,havehtml,groupid,userfen,titlefont,titleurl,stb,fstb,restb,keyboard,eckuid'.substr($emod_r[$mid]['tbmainf'],0,-1);
	return $f;
}

//返回內容副表查詢字段
function ReturnSqlFtextF($mid){
	global $emod_r;
	if(empty($mid))
	{
		return '*';
	}
	$f='keyid,dokey,newstempid,closepl,infotags'.substr($emod_r[$mid]['tbdataf'],0,-1);
	return $f;
}

//返回信息表
function ReturnInfoTbname($tbname,$checked=1,$stb=1){
	global $dbtbpre;
	if(empty($checked))//待審核
	{
		$r['tbname']=$dbtbpre.'ecms_'.$tbname.'_check';
		$r['datatbname']=$dbtbpre.'ecms_'.$tbname.'_check_data';
	}
	else//已審核
	{
		$r['tbname']=$dbtbpre.'ecms_'.$tbname;
		$r['datatbname']=$dbtbpre.'ecms_'.$tbname.'_data_'.$stb;
	}
	return $r;
}

//返回信息主表
function ReturnInfoMainTbname($tbname,$checked=1){
	global $dbtbpre;
	return empty($checked)?$dbtbpre.'ecms_'.$tbname.'_check':$dbtbpre.'ecms_'.$tbname;
}

//返回信息副表
function ReturnInfoDataTbname($tbname,$checked=1,$stb=1){
	global $dbtbpre;
	return empty($checked)?$dbtbpre.'ecms_'.$tbname.'_check_data':$dbtbpre.'ecms_'.$tbname.'_data_'.$stb;
}

//主表信息
function ReturnIndexTableInfo($tbname,$f,$classid,$id){
	global $dbtbpre;
	$r=$empire->fetch1("select ".$f." from {$dbtbpre}ecms_".$tbname."_index where id='$id' limit 1");
	return $r;
}

//返回評論表名
function eReturnRestb($restb){
	global $public_r,$dbtbpre;
	$restb=(int)$restb;
	if(!strstr($public_r['pldatatbs'],','.$restb.','))
	{
		$restb=$public_r['pldeftb'];
	}
	return $dbtbpre.'enewspl_'.$restb;
}

//返回附件表名
function eReturnFstb($fstb){
	global $public_r,$dbtbpre;
	$fstb=(int)$fstb;
	if(!strstr($public_r['filedatatbs'],','.$fstb.','))
	{
		$fstb=$public_r['filedeftb'];
	}
	return $dbtbpre.'enewsfile_'.$fstb;
}

//返回公共表索引ID
function ReturnInfoPubid($classid,$id,$tid=0){
	global $class_r;
	$classid=(int)$classid;
	$id=(int)$id;
	if(empty($tid))
	{
		$tid=$class_r[$classid]['tid'];
	}
	$tid=(int)$tid;
	$pubid='1'.ReturnAllInt($tid,5).ReturnAllInt($id,10);
	return $pubid;
}

//是否內部表
function InfoIsInTable($tbname){
	global $etable_r;
	return $etable_r[$tbname]['intb']==1?true:false;
}

//檢驗字段是否存在
function eCheckTbHaveField($tid,$tbname,$f){
	global $empire,$dbtbpre;
	$where=$tid?"tid='$tid' and ":"tbname='$tbname' and ";
	if(strstr($f,','))
	{
		$fr=explode(',',$f);
		$where.="f='".$fr[0]."' or f='".$fr[1]."'";
	}
	else
	{
		$where.="f='$f'";
	}
	$num=$empire->gettotal("select count(*) as total from {$dbtbpre}enewsf where ".$where." limit 1");
	return $num;
}

//驗證模板是否開啟動態使用
function DtTempIsClose($tempid,$type='listtemp'){
	global $public_r;
	if($type=='listtemp')//列表模板
	{
		if($public_r['closelisttemp']&&strstr(','.$public_r['closelisttemp'].',',','.$tempid.','))
		{
			echo'ListTempID='.$tempid.' is close.';
			exit();
		}
	}
}

//補零
function ReturnAllInt($val,$num){
	$len=strlen($val);
	$zeronum=$num-$len;
	if($zeronum==1)
	{
		$val='0'.$val;
	}
	elseif($zeronum==2)
	{
		$val='00'.$val;
	}
	elseif($zeronum==3)
	{
		$val='000'.$val;
	}
	elseif($zeronum==4)
	{
		$val='0000'.$val;
	}
	elseif($zeronum==5)
	{
		$val='00000'.$val;
	}
	elseif($zeronum==6)
	{
		$val='000000'.$val;
	}
	elseif($zeronum==7)
	{
		$val='0000000'.$val;
	}
	elseif($zeronum==8)
	{
		$val='00000000'.$val;
	}
	elseif($zeronum==9)
	{
		$val='000000000'.$val;
	}
	elseif($zeronum==10)
	{
		$val='0000000000'.$val;
	}
	return $val;
}

//返回替換列表
function ReturnReplaceListF($mid){
	global $emod_r;
	$r['mid']=$mid;
	$r['fr']=explode(',',$emod_r[$mid]['listtempf']);
	$r['fcount']=count($r['fr'])-1;
	return $r;
}

//返回替換內容
function ReturnReplaceTextF($mid){
	global $emod_r;
	$r['mid']=$mid;
	$r['fr']=explode(',',$emod_r[$mid]['tempf']);
	$r['fcount']=count($r['fr'])-1;
	return $r;
}

//替換列表模板/標籤模板/搜索模板
function ReplaceListVars($no,$listtemp,$subnews,$subtitle,$formatdate,$url,$haveclass=0,$r,$field,$docode=0){
	global $empire,$public_r,$class_r,$class_zr,$fun_r,$dbtbpre,$emod_r,$class_tr,$level_r,$navclassid,$etable_r;
	if($haveclass)
	{
		$add=sys_ReturnBqClassname($r,$haveclass);
	}
	if(empty($r[oldtitle]))
	{
		$r[oldtitle]=$r[title];
	}
	if($docode==1)
	{
		$listtemp=stripSlashes($listtemp);
		eval($listtemp);
	}
	$ylisttemp=$listtemp;
	$mid=$field['mid'];
	$fr=$field['fr'];
	$fcount=$field['fcount'];
	for($i=1;$i<$fcount;$i++)
	{
		$f=$fr[$i];
		$value=$r[$f];
		$spf=0;
		if($f=='title')//標題
		{
	        if(!empty($subtitle))//截取字符
	        {
				$value=sub($value,0,$subtitle,false);
	        }
			$value=DoTitleFont($r[titlefont],$value);
			$spf=1;
		}
		elseif($f=='newstime')//時間
		{
			//$value=date($formatdate,$value);
			$value=format_datetime($value,$formatdate);
			$spf=1;
		}
		elseif($f=='titlepic')//標題圖片
		{
			if(empty($value))
		    {
				$value=$public_r[newsurl].'e/data/images/notimg.gif';
			}
			$spf=1;
		}
		elseif(strstr($emod_r[$mid]['smalltextf'],','.$f.','))//簡介
		{
			if(!empty($subnews))//截取字符
			{
				$value=sub($value,0,$subnews,false);
			}
		}
		elseif($f=='befrom')//信息來源
		{
			$spf=1;
		}
		elseif($f=='writer')//作者
		{
			$spf=1;
		}
		if($spf==0&&!strstr($emod_r[$mid]['editorf'],','.$f.','))
		{
			if(strstr($emod_r[$mid]['tobrf'],','.$f.','))//加br
			{
				$value=nl2br($value);
			}
			if(!strstr($emod_r[$mid]['dohtmlf'],','.$f.','))//去除html
			{
				$value=RepFieldtextNbsp(ehtmlspecialchars($value));
			}
		}
		$listtemp=str_replace('[!--'.$f.'--]',$value,$listtemp);
	}
	$titleurl=sys_ReturnBqTitleLink($r);//鏈接
	$listtemp=str_replace('[!--id--]',$r[id],$listtemp);
	$listtemp=str_replace('[!--classid--]',$r[classid],$listtemp);
	$listtemp=str_replace('[!--class.name--]',$add,$listtemp);
	$listtemp=str_replace('[!--ttid--]',$r[ttid],$listtemp);
	$listtemp=str_replace('[!--tt.name--]',$class_tr[$r[ttid]][tname],$listtemp);
	$listtemp=str_replace('[!--tt.url--]',sys_ReturnBqInfoTypeUrl($r['ttid']),$listtemp);
	$listtemp=str_replace('[!--userfen--]',$r[userfen],$listtemp);
	$listtemp=str_replace('[!--titleurl--]',$titleurl,$listtemp);
	$listtemp=str_replace('[!--no.num--]',$no,$listtemp);
	$listtemp=str_replace('[!--plnum--]',$r[plnum],$listtemp);
	$listtemp=str_replace('[!--userid--]',$r[userid],$listtemp);
	$listtemp=str_replace('[!--username--]',$r[username],$listtemp);
	$listtemp=str_replace('[!--onclick--]',$r[onclick],$listtemp);
	$listtemp=str_replace('[!--oldtitle--]',$r[oldtitle],$listtemp);
	$listtemp=str_replace('[!--totaldown--]',$r[totaldown],$listtemp);
	//欄目鏈接
	if(strstr($ylisttemp,'[!--this.classlink--]'))
	{
		$thisclasslink=sys_ReturnBqClassname($r,9);
		$listtemp=str_replace('[!--this.classlink--]',$thisclasslink,$listtemp);
	}
	$thisclassname=$class_r[$r[classid]][bname]?$class_r[$r[classid]][bname]:$class_r[$r[classid]][classname];
	$listtemp=str_replace('[!--this.classname--]',$thisclassname,$listtemp);
	return $listtemp;
}

//加上防複製字符
function AddNotCopyRndStr($text){
	global $public_r;
	if($public_r['opencopytext'])
	{
		$rnd=make_password(3).$public_r['sitename'];
		$text=str_replace("<br />","<span style=\"display:none\">".$rnd."</span><br />",$text);
		$text=str_replace("</p>","<span style=\"display:none\">".$rnd."</span></p>",$text);
	}
	return $text;
}

//替換信息來源
function ReplaceBefrom($befrom){
	global $empire,$dbtbpre;
	if(empty($befrom))
	{return $befrom;}
	$befrom=addslashes($befrom);
	$r=$empire->fetch1("select befromid,sitename,siteurl from {$dbtbpre}enewsbefrom where sitename='$befrom' limit 1");
	if(empty($r[befromid]))
	{return $befrom;}
	$return_befrom="<a href='".$r[siteurl]."' target=_blank>".$r[sitename]."</a>";
	return $return_befrom;
}

//替換作者
function ReplaceWriter($writer){
	global $empire,$dbtbpre;
	if(empty($writer))
	{return $writer;}
	$writer=addslashes($writer);
	$r=$empire->fetch1("select wid,writer,email from {$dbtbpre}enewswriter where writer='$writer' limit 1");
	if(empty($r[wid])||empty($r[email]))
	{
		return $writer;
	}
	$return_writer="<a href='".$r[email]."'>".$r[writer]."</a>";
	return $return_writer;
}

//備份下載記錄
function BakDown($classid,$id,$pathid,$userid,$username,$title,$cardfen,$online=0){
	global $empire,$dbtbpre;
	$truetime=time();
	$id=(int)$id;
	$pathid=(int)$pathid;
	$userid=(int)$userid;
	$cardfen=(int)$cardfen;
	$classid=(int)$classid;
	$username=RepPostVar($username);
	$title=RepPostStr($title);
	$online=addslashes(RepPostStr($online));
	$sql=$empire->query("insert into {$dbtbpre}enewsdownrecord(id,pathid,userid,username,title,cardfen,truetime,classid,online) values($id,$pathid,$userid,'$username','".addslashes($title)."',$cardfen,$truetime,$classid,'$online');");
}

//備份充值記錄
function BakBuy($userid,$username,$buyname,$userfen,$money,$userdate,$type=0){
	global $empire,$dbtbpre;
	$buytime=date("y-m-d H:i:s");
	$buyname=addslashes(RepPostStr($buyname));
	$userid=(int)$userid;
	$username=RepPostVar($username);
	$userfen=addslashes(RepPostStr($userfen));
	$money=addslashes(RepPostStr($money));
	$userdate=addslashes(RepPostStr($userdate));
	$type=addslashes(RepPostStr($type));
	$empire->query("insert into {$dbtbpre}enewsbuybak(userid,username,card_no,cardfen,money,buytime,userdate,type) values('$userid','$username','$buyname','$userfen','$money','$buytime','$userdate','$type');");
}

//發送短消息
function eSendMsg($title,$msgtext,$to_username,$from_userid,$from_username,$isadmin,$issys,$ecms=0){
	global $empire,$dbtbpre;
	$tbname=$ecms==1?$dbtbpre.'enewshmsg':$dbtbpre.'enewsqmsg';
	$to_username=RepPostVar($to_username);
	$from_userid=(int)$from_userid;
	$from_username=RepPostVar($from_username);
	$isadmin=(int)$isadmin;
	$issys=(int)$issys;
	$msgtime=date("Y-m-d H:i:s");
	$empire->query("insert into ".$tbname."(title,msgtext,haveread,msgtime,to_username,from_userid,from_username,isadmin,issys) values('$title','$msgtext',0,'$msgtime','$to_username','$from_userid','$from_username','$isadmin','$issys');");
	//消息狀態
	$userr=$empire->fetch1("select ".eReturnSelectMemberF('userid,havemsg')." from ".eReturnMemberTable()." where ".egetmf('username')."='$to_username' limit 1");
	if(!$userr['havemsg'])
	{
		$newhavemsg=eReturnSetHavemsg($userr['havemsg'],0);
		$empire->query("update ".eReturnMemberTable()." set ".egetmf('havemsg')."='$newhavemsg' where ".egetmf('userid')."='".$userr['userid']."' limit 1");
	}
}

//發送通知
function eSendNotice($title,$msgtext,$to_username,$from_userid,$from_username,$ecms=0){
	global $empire,$dbtbpre;
	$tbname=$ecms==1?$dbtbpre.'enewshnotice':$dbtbpre.'enewsnotice';
	$to_username=RepPostVar($to_username);
	$from_userid=(int)$from_userid;
	$from_username=RepPostVar($from_username);
	$msgtime=date("Y-m-d H:i:s");
	$empire->query("insert into ".$tbname."(title,msgtext,haveread,msgtime,to_username,from_userid,from_username) values('".$title."','".$msgtext."',0,'$msgtime','$to_username','$from_userid','$from_username');");
}

//截取簡介
function SubSmalltextVal($value,$len){
	if(empty($len))
	{
		return '';
	}
	$value=str_replace(array("\r\n","<br />","<br>","&nbsp;","[!--empirenews.page--]","[/!--empirenews.page--]"),array("","\r\n","\r\n"," ","",""),$value);
	$value=strip_tags($value);
	if($len)
	{
		$value=sub($value,0,$len,false);
	}
	$value=trim($value,"\r\n");
	$value=str_replace('&amp;ldquo;','&ldquo;',$value);
	$value=str_replace('&amp;rdquo;','&rdquo;',$value);
	$value=str_replace('&amp;mdash;','&mdash;',$value);
	return $value;
}

//全站搜索簡介
function SubSchallSmalltext($value,$len){
	$value=str_replace(array("\r\n","&nbsp;","[!--empirenews.page--]","[/!--empirenews.page--]"),array("","","",""),$value);
	$value=strip_tags($value);
	if($len)
	{
		$value=sub($value,0,$len,false);
	}
	$value=trim($value,"\r\n");
	return $value;
}

//加紅替換
function DoReplaceFontRed($text,$key){
	return str_replace($key,'<font color="red">'.$key.'</font>',$text);
}

//返回不生成html的欄目
function ReturnNreInfoWhere(){
	global $public_r;
	if(empty($public_r['nreinfo'])||$public_r['nreinfo']==',')
	{
		return '';
	}
	$cids=substr($public_r['nreinfo'],1,strlen($public_r['nreinfo'])-2);
	$where=' and classid not in ('.$cids.')';
	return $where;
}

//返回標籤不調用欄目
function ReturnNottoBqWhere(){
	global $public_r;
	if(empty($public_r['nottobq'])||$public_r['nottobq']==',')
	{
		return '';
	}
	$cids=substr($public_r['nottobq'],1,strlen($public_r['nottobq'])-2);
	$where='classid not in ('.$cids.')';
	return $where;
}

//返回文件名及擴展名
function ReturnCFiletype($file){
	$r=explode('.',$file);
	$count=count($r)-1;
	$re['filetype']=strtolower($r[$count]);
	$re['filename']=substr($file,0,strlen($file)-strlen($re['filetype'])-1);
	return $re;
}

//返回欄目目錄
function ReturnSaveClassPath($classid,$f=0){
	global $class_r;
	$classpath=$class_r[$classid][classpath];
	if($f==1){
		$classpath.="/index".$class_r[$classid][classtype];
	}
	return $classpath;
}

//返回專題目錄
function ReturnSaveZtPath($classid,$f=0){
	global $class_zr;
	$classpath=$class_zr[$classid][ztpath];
	if($f==1){
		$classpath.="/index".$class_zr[$classid][zttype];
	}
	return $classpath;
}

//返回標題分類目錄
function ReturnSaveInfoTypePath($classid,$f=0){
	global $class_tr;
	$classpath=$class_tr[$classid]['tpath'];
	if($f==1){
		$classpath.='/index'.$class_tr[$classid]['ttype'];
	}
	return $classpath;
}

//返回首頁文件
function ReturnSaveIndexFile(){
	global $public_r;
	$file='index'.$public_r[indextype];
	return $file;
}

//返回首頁地址
function ReturnSiteIndexUrl(){
	global $public_r;
	if(empty($public_r['indexaddpage']))
	{
		return $public_r['newsurl'];
	}
	if($public_r['indexpagedt']||Moreport_ReturnMustDt())//moreport
	{
		$public_r['indextype']='.php';
	}
	$file=$public_r['newsurl'].'index'.$public_r['indextype'];
	return $file;
}

//返回內容頁存放目錄
function ReturnSaveInfoPath($classid,$id){
	global $class_r;
	if($class_r[$classid][ipath]==''){
		$path=$class_r[$classid][classpath].'/';
	}
	else{
		$path=$class_r[$classid][ipath]=='/'?'':$class_r[$classid][ipath].'/';
	}
	return $path;
}

//返回內容頁文件名
function GetInfoFilename($classid,$id){
	global $empire,$dbtbpre,$public_r,$class_r;
	$infor=$empire->fetch1("select isurl,groupid,classid,newspath,filename,id from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where id='$id' limit 1");
	if(!$infor['id']||$infor['isurl'])
	{
		return '';
	}
	$filetype=$infor['groupid']?'.php':$class_r[$classid]['filetype'];
	$iclasspath=ReturnSaveInfoPath($classid,$id);
	$doclasspath=eReturnTrueEcmsPath().$iclasspath;//moreport
	$newspath='';
	if($infor['newspath'])
	{
		$newspath=$infor['newspath'].'/';
	}
	$file=$doclasspath.$newspath.$infor['filename'].$filetype;
	return $file;
}

//格式化信息目錄
function FormatPath($classid,$mynewspath,$enews=0){
	global $class_r;
	if($enews)
	{
		$newspath=$mynewspath;
	}
	else
	{
		$newspath=date($class_r[$classid][newspath]);
	}
	if(empty($newspath))
	{
		return "";
	}
	$path=eReturnTrueEcmsPath().ReturnSaveInfoPath($classid,$id);
	if(file_exists($path.$newspath))
	{
		return $newspath;
	}
	$returnpath="";
	$r=explode("/",$newspath);
	$count=count($r);
	for($i=0;$i<$count;$i++){
		if($i>0)
		{
			$returnpath.="/".$r[$i];
		}
		else
		{
			$returnpath.=$r[$i];
		}
		$createpath=$path.$returnpath;
		$mk=DoMkdir($createpath);
		if(empty($mk))
		{
			printerror("CreatePathFail","");
		}
	}
	return $returnpath;
}

//返回內容頁目錄
function ReturnInfoSPath($filename){
	return str_replace('/index','',$filename);
}

//返回根目錄
function ReturnAbsEcmsPath(){
	$ecmspath=str_replace("\\","/",ECMS_PATH);
	return $ecmspath;
}

//返回當前根目錄
function eReturnTrueEcmsPath(){
	if(defined('ECMS_SELFPATH'))
	{
		return ECMS_SELFPATH;
	}
	else
	{
		return ECMS_PATH;
	}
}

//返回主端根目錄
function eReturnEcmsMainPortPath(){
	global $ecms_config;
	if($ecms_config['sets']['mainportpath'])
	{
		return $ecms_config['sets']['mainportpath'];
	}
	else
	{
		return ECMS_PATH;
	}
}


//------------- 附件 -------------

//返回附件分表
function eReturnFileStb($fstb){
	global $public_r;
	$fstb=(int)$fstb;
	if(!strstr($public_r['filedatatbs'],','.$fstb.','))
	{
		$fstb=$public_r['filedeftb'];
	}
	return $fstb;
}

//返回附件表
function eReturnFileTable($modtype,$fstb){
	global $dbtbpre;
	if($modtype==0)//信息
	{
		$fstb=eReturnFileStb($fstb);
		$table=$dbtbpre.'enewsfile_'.$fstb;
	}
	elseif($modtype==5)//公共
	{
		$table=$dbtbpre.'enewsfile_public';
	}
	elseif($modtype==6)//會員
	{
		$table=$dbtbpre.'enewsfile_member';
	}
	else//其他
	{
		$table=$dbtbpre.'enewsfile_other';
	}
	return $table;
}

//查詢附件表
function eSelectFileTable($modtype,$fstb,$selectf,$where){
	global $dbtbpre;
	$query="select {$selectf} from ".eReturnFileTable($modtype,$fstb)." where ".$where;
	return $query;
}

//寫入附件記錄
function eInsertFileTable($filename,$filesize,$path,$adduser,$classid,$no,$type,$id,$cjid,$fpath,$pubid,$modtype=0,$fstb=1){
	global $empire,$dbtbpre,$public_r;
	$filetime=time();
	$filesize=(int)$filesize;
	$classid=(int)$classid;
	$id=(int)$id;
	$cjid=(int)$cjid;
	$fpath=(int)$fpath;
	$type=(int)$type;
	$modtype=(int)$modtype;
	$filename=addslashes(RepPostStr($filename));
	$no=addslashes(RepPostStr($no));
	$adduser=RepPostVar($adduser);
	$path=addslashes(RepPostStr($path));
	$pubid=RepPostVar($pubid);
	$fstb=(int)$fstb;
	if($modtype==0)//信息
	{
		$fstb=eReturnFileStb($fstb);
		$sql=$empire->query("insert into {$dbtbpre}enewsfile_".$fstb."(pubid,filename,filesize,adduser,path,filetime,classid,no,type,id,cjid,onclick,fpath) values('$pubid','$filename','$filesize','$adduser','$path','$filetime','$classid','$no','$type','$id','$cjid',0,'$fpath');");
	}
	elseif($modtype==5)//公共
	{
		$sql=$empire->query("insert into {$dbtbpre}enewsfile_public(filename,filesize,adduser,path,filetime,modtype,no,type,id,cjid,onclick,fpath) values('$filename','$filesize','$adduser','$path','$filetime',0,'$no','$type','$id','$cjid',0,'$fpath');");
	}
	elseif($modtype==6)//會員
	{
		$sql=$empire->query("insert into {$dbtbpre}enewsfile_member(filename,filesize,adduser,path,filetime,no,type,id,cjid,onclick,fpath) values('$filename','$filesize','$adduser','$path','$filetime','$no','$type','$id','$cjid',0,'$fpath');");
	}
	else//其他
	{
		$sql=$empire->query("insert into {$dbtbpre}enewsfile_other(filename,filesize,adduser,path,filetime,modtype,no,type,id,cjid,onclick,fpath) values('$filename','$filesize','$adduser','$path','$filetime','$modtype','$no','$type','$id','$cjid',0,'$fpath');");
	}
	return $sql;
}

//更新相應的附件(非信息)
function UpdateTheFileOther($modtype,$id,$checkpass,$tb='other'){
	global $empire,$dbtbpre;
	if(empty($id)||empty($checkpass))
	{
		return "";
	}
	$id=(int)$id;
	$checkpass=(int)$checkpass;
	$where='';
	if($tb=='other')
	{
		$where=" and modtype='$modtype'";
	}
	$sql=$empire->query("update {$dbtbpre}enewsfile_{$tb} set id='$id',cjid=0 where cjid='$checkpass'".$where);
}

//修改時更新附件(非信息)
function UpdateTheFileEditOther($modtype,$id,$tb='other'){
	global $empire,$dbtbpre;
	$where='';
	if($tb=='other')
	{
		$where=" and modtype='$modtype'";
	}
	$sql=$empire->query("update {$dbtbpre}enewsfile_{$tb} set cjid=0 where id='$id'".$where);
}

//返回filepass
function ReturnTranFilepass(){
	$filepass=time();
	return $filepass;
}

//返回附件域名地址
function eReturnFileUrl($ecms=0){
	global $public_r;
	if($ecms==1)
	{
		return $public_r['fileurl'];
	}
	$fileurl=$public_r['openfileserver']?$public_r['fs_purl']:$public_r['fileurl'];
	return $fileurl;
}

//返回附件目錄
function ReturnFileSavePath($classid,$fpath=''){
	global $public_r,$class_r;
	$fpath=$fpath||strstr(','.$fpath.',',',0,')?$fpath:$public_r['fpath'];
	$efileurl=eReturnFileUrl();
	if($fpath==1)//p目錄
	{
		$r['filepath']='d/file/p/';
		$r['fileurl']=$efileurl.'p/';
	}
	elseif($fpath==2)//file目錄
	{
		$r['filepath']='d/file/';
		$r['fileurl']=$efileurl;
	}
	else
	{
		if(empty($classid))
		{
			$r['filepath']='d/file/p/';
			$r['fileurl']=$efileurl.'p/';
		}
		else
		{
			$r['filepath']='d/file/'.$class_r[$classid][classpath].'/';
			$r['fileurl']=$efileurl.$class_r[$classid][classpath].'/';
		}
	}
	return $r;
}

//格式化附件目錄
function FormatFilePath($classid,$mynewspath,$enews=0){
	global $public_r;
	if($enews)
	{
		$newspath=$mynewspath;
	}
	else
	{
		$newspath=date($public_r['filepath']);
	}
	if(empty($newspath))
	{
		return "";
	}
	$fspath=ReturnFileSavePath($classid);
	$path=eReturnEcmsMainPortPath().$fspath['filepath'];//moreport
	if(file_exists($path.$newspath))
	{
		return $newspath;
	}
	$returnpath="";
	$r=explode("/",$newspath);
	$count=count($r);
	for($i=0;$i<$count;$i++){
		if($i>0){
			$returnpath.="/".$r[$i];
		}
		else{
			$returnpath.=$r[$i];
		}
		$createpath=$path.$returnpath;
		$mk=DoMkdir($createpath);
		if(empty($mk)){
			printerror("CreatePathFail","");
		}
	}
	return $returnpath;
}

//返回上傳文件名
function ReturnDoTranFilename($file_name,$classid){
	$filename=md5(uniqid(microtime()).EcmsRandInt());
	return $filename;
}

//上傳文件
function DoTranFile($file,$file_name,$file_type,$file_size,$classid,$ecms=0){
	global $public_r,$class_r,$doetran,$efileftp_fr;
	$classid=(int)$classid;
	//文件類型
	$r[filetype]=GetFiletype($file_name);
	//文件名
	$r[insertfile]=ReturnDoTranFilename($file_name,$classid);
	$r[filename]=$r[insertfile].$r[filetype];
	//日期目錄
	$r[filepath]=FormatFilePath($classid,$mynewspath,0);
	$filepath=$r[filepath]?$r[filepath].'/':$r[filepath];
	//存放目錄
	$fspath=ReturnFileSavePath($classid);
	$r[savepath]=eReturnEcmsMainPortPath().$fspath['filepath'].$filepath;//moreport
	//附件地址
	$r[url]=$fspath['fileurl'].$filepath.$r[filename];
	//縮圖文件
	$r[name]=$r[savepath]."small".$r[insertfile];
	//附件文件
	$r[yname]=$r[savepath].$r[filename];
	$r[tran]=1;
	//驗證類型
	if(CheckSaveTranFiletype($r[filetype]))
	{
		if($doetran)
		{
			$r[tran]=0;
			return $r;
		}
		else
		{
			printerror('TranFail','',$ecms);
		}
	}
	//上傳文件
	$cp=@move_uploaded_file($file,$r[yname]);
	if(empty($cp))
	{
		if($doetran)
		{
			$r[tran]=0;
			return $r;
		}
		else
		{
			printerror('TranFail','',$ecms);
		}
	}
	DoChmodFile($r[yname]);
	$r[filesize]=(int)$file_size;
	//FileServer
	if($public_r['openfileserver'])
	{
		$efileftp_fr[]=$r['yname'];
	}
	return $r;
}

//遠程保存忽略地址
function CheckNotSaveUrl($url){
	global $public_r;
	if(empty($public_r['notsaveurl']))
	{
		return 0;
    }
	$r=explode("\r\n",$public_r['notsaveurl']);
	$count=count($r);
	$re=0;
	for($i=0;$i<$count;$i++)
	{
		if(empty($r[$i]))
		{continue;}
		if(stristr($url,$r[$i]))
		{
			$re=1;
			break;
	    }
    }
	return $re;
}

//遠程保存
function DoTranUrl($url,$classid){
	global $public_r,$class_r,$ecms_config,$efileftp_fr;
	$classid=(int)$classid;
	//處理地址
	$url=trim($url);
	$url=str_replace(" ","%20",$url);
    $r[tran]=1;
	//附件地址
	$r[url]=$url;
	//文件類型
	$r[filetype]=GetFiletype($url);
	if(CheckSaveTranFiletype($r[filetype]))
	{
		$r[tran]=0;
		return $r;
	}
	//是否已上傳的文件
	$havetr=CheckNotSaveUrl($url);
	if($havetr)
	{
		$r[tran]=0;
		return $r;
	}
	//是否地址
	if(!strstr($url,'://'))
	{
		$r[tran]=0;
		return $r;
	}
	if(!eToCheckIsUrl2($url))
	{
		$r[tran]=0;
		return $r;
	}
	$string=ReadFiletext($url);
	if(empty($string))//讀取不了
	{
		$r[tran]=0;
		return $r;
	}
	//文件名
	$r[insertfile]=ReturnDoTranFilename($file_name,$classid);
	$r[filename]=$r[insertfile].$r[filetype];
	//日期目錄
	$r[filepath]=FormatFilePath($classid,$mynewspath,0);
	$filepath=$r[filepath]?$r[filepath].'/':$r[filepath];
	//存放目錄
	$fspath=ReturnFileSavePath($classid);
	$r[savepath]=eReturnEcmsMainPortPath().$fspath['filepath'].$filepath;//moreport
	//附件地址
	$r[url]=$fspath['fileurl'].$filepath.$r[filename];
	//縮圖文件
	$r[name]=$r[savepath]."small".$r[insertfile];
	//附件文件
	$r[yname]=$r[savepath].$r[filename];
	WriteFiletext_n($r[yname],$string);
	$r[filesize]=@filesize($r[yname]);
	//返回類型
	if(strstr($ecms_config['sets']['tranflashtype'],','.$r[filetype].','))
	{
		$r[type]=2;
	}
	elseif(strstr($ecms_config['sets']['tranpicturetype'],','.$r[filetype].','))
	{
		$r[type]=1;
	}
	elseif(strstr($ecms_config['sets']['mediaplayertype'],','.$r[filetype].',')||strstr($ecms_config['sets']['realplayertype'],','.$r[filetype].','))//多媒體
	{
		$r[type]=3;
	}
	else
	{
		$r[type]=0;
	}
	//FileServer
	if($public_r['openfileserver'])
	{
		$efileftp_fr[]=$r['yname'];
	}
	return $r;
}

//刪除附件
function DoDelFile($r){
	global $class_r,$public_r,$efileftp_dr;
	$path=$r['path']?$r['path'].'/':$r['path'];
	$fspath=ReturnFileSavePath($r[classid],$r[fpath]);
	$delfile=eReturnEcmsMainPortPath().$fspath['filepath'].$path.$r['filename'];//moreport
	DelFiletext($delfile);
	//FileServer
	if($public_r['openfileserver'])
	{
		$efileftp_dr[]=$delfile;
	}
}

//替換表前綴
function RepSqlTbpre($sql){
	global $dbtbpre;
	$sql=str_replace('[!db.pre!]',$dbtbpre,$sql);
	return $sql;
}

//反替換表前綴
function ReRepSqlTbpre($sql){
	global $dbtbpre;
	$sql=str_replace($dbtbpre,'***_',$sql);
	return $sql;
}

//驗證表是否存在
function eCheckTbname($tbname){
	global $empire,$dbtbpre;
	$num=$empire->gettotal("select count(*) as total from {$dbtbpre}enewstable where tbname='$tbname' limit 1");
	return $num;
}

//時間轉換
function ToChangeUseTime($time){
	global $fun_r;
	$usetime=time()-$time;
	if($usetime<60)
	{
		$tstr=$usetime.$fun_r['TimeSecond'];
	}
	else
	{
		$usetime=round($usetime/60);
		$tstr=$usetime.$fun_r['TimeMinute'];
	}
	return $tstr;
}

//返回欄目集合
function ReturnClass($sonclass){
	if($sonclass==''||$sonclass=='|'){
		return 'classid=0';
	}
	$where='classid in ('.RepSonclassSql($sonclass).')';
	return $where;
}

//替換子欄目子
function RepSonclassSql($sonclass){
	if($sonclass==''||$sonclass=='|'){
		return 0;
	}
	$sonclass=substr($sonclass,1,strlen($sonclass)-2);
	$sonclass=str_replace('|',',',$sonclass);
	return $sonclass;
}

//返回多欄目
function sys_ReturnMoreClass($sonclass,$son=0){
	global $class_r;
	$r=explode(',',$sonclass);
	$count=count($r);
	$return_r[0]=intval($r[0]);
	$where='';
	$or='';
	for($i=0;$i<$count;$i++)
	{
		$r[$i]=intval($r[$i]);
		if($son==1)
		{
			if($class_r[$r[$i]]['tbname']&&!$class_r[$r[$i]]['islast'])
			{
				$where.=$or."classid in (".RepSonclassSql($class_r[$r[$i]]['sonclass']).")";
			}
			else
			{
				$where.=$or."classid='".$r[$i]."'";
			}
		}
		else
		{
			$where.=$or."classid='".$r[$i]."'";
		}
		$or=' or ';
	}
	$return_r[1]=$where;
	return $return_r;
}

//返回多專題
function sys_ReturnMoreZt($zt,$ecms=0){
	$f=$ecms==1?'ztid':'cid';
	$r=explode(',',$zt);
	$count=count($r);
	$return_r[0]=intval($r[0]);
	$ids='';
	$dh='';
	for($i=0;$i<$count;$i++)
	{
		$r[$i]=intval($r[$i]);
		$ids.=$dh.$r[$i];
		$dh=',';
	}
	$return_r[1]=$f.' in ('.$ids.')';
	return $return_r;
}

//返回多標題分類
function sys_ReturnMoreTT($tt){
	$r=explode(',',$tt);
	$count=count($r);
	$return_r[0]=intval($r[0]);
	$ids='';
	$dh='';
	for($i=0;$i<$count;$i++)
	{
		$r[$i]=intval($r[$i]);
		$ids.=$dh.$r[$i];
		$dh=',';
	}
	$return_r[1]='ttid in ('.$ids.')';
	return $return_r;
}

//驗證是否包含欄目
function CheckHaveInClassid($cr,$checkclass){
	global $class_r;
	if($cr['islast'])
	{
		$chclass='|'.$cr['classid'].'|';
	}
	else
	{
		$chclass=$cr['sonclass'];
	}
	$return=0;
	$r=explode('|',$chclass);
	$count=count($r);
	for($i=1;$i<$count-1;$i++)
	{
		if(strstr($checkclass,'|'.$r[$i].'|'))
		{
			$return=1;
			break;
		}
	}
	return $return;
}

//返回加前綴的下載地址
function ReturnDownQzPath($path,$urlid){
	global $empire,$dbtbpre;
	$urlid=(int)$urlid;
	if(empty($urlid))
	{
		$re['repath']=$path;
		$re['downtype']=0;
    }
	else
	{
		$r=$empire->fetch1("select urlid,url,downtype from {$dbtbpre}enewsdownurlqz where urlid='$urlid'");
		if($r['urlid'])
		{
			$re['repath']=$r['url'].$path;
		}
		else
		{
			$re['repath']=$path;
		}
		$re['downtype']=$r['downtype'];
	}
	return $re;
}

//返回帶防盜鏈的絕對地址
function ReturnDSofturl($downurl,$qz,$path='../../',$isdown=0){
	$urlr=ReturnDownQzPath(stripSlashes($downurl),$qz);
	$url=$urlr['repath'];
	@include_once(ECMS_PATH."e/DownSys/class/enpath.php");//防盜鏈
	if($isdown)
	{
		$url=DoEnDownpath($url);
	}
	else
	{
		$url=DoEnOnlinepath($url);
	}
	return $url;
}

//驗證提交來源
function CheckCanPostUrl(){
	global $public_r;
	if($public_r['canposturl'])
	{
		$r=explode("\r\n",$public_r['canposturl']);
		$count=count($r);
		$b=0;
		for($i=0;$i<$count;$i++)
		{
			if(strstr($_SERVER['HTTP_REFERER'],$r[$i]))
			{
				$b=1;
				break;
			}
		}
		if($b==0)
		{
			printerror('NotCanPostUrl','',1);
		}
	}
}

//adminpath
function eGetSelfAdminPath(){
	$selfpath=eReturnSelfPage(0);
	$selfpath=str_replace("\\","/",$selfpath);
	if(strstr($selfpath,'//'))
	{
		exit();
	}
	$pr=explode('/e/',$selfpath);
	$pr2=explode('/',$pr[1]);
	$adminpath=$pr2[0];
	if(empty($adminpath))
	{
		exit();
	}
	return $adminpath;
}

//特殊來源驗證
function hCheckSpFromUrl(){
	if(defined('EmpireCMSSpFromUrl'))
	{
		return '';
	}
	$spurl=',AddNews.php,ShowInfo.php,ShowWfInfo.php,EditCjNews.php,infoeditor,';
	$r=explode(',',$spurl);
	$count=count($r);
	$fromurl=$_SERVER['HTTP_REFERER'];
	for($i=1;$i<$count;$i++)
	{
		if(empty($r[$i]))
		{
			continue;
		}
		if(stristr($fromurl,$r[$i]))
		{
			printerror("FailHash","history.go(-1)");
		}
	}
}

//設定特殊來源
function hSetSpFromUrl(){
	define('EmpireCMSSpFromUrl',TRUE);
}

//驗證來源
function DoSafeCheckFromurl(){
	global $ecms_config;
	if($ecms_config['esafe']['ckfromurl']==0||defined('EmpireCMSNFPage'))//不啟用
	{
		return '';
	}
	$fromurl=$_SERVER['HTTP_REFERER'];
	if(!$fromurl)
	{
		return '';
	}
	$domain=eReturnDomain();
	if($ecms_config['esafe']['ckfromurl']==1)//全部啟用
	{
		if(!stristr($fromurl,$domain))
		{
			echo"";
			exit();
		}
	}
	elseif($ecms_config['esafe']['ckfromurl']==2)//後台啟用
	{
		if(defined('EmpireCMSAdmin')&&!stristr($fromurl,$domain.'/'))
		{
			echo"";
			exit();
		}
	}
	elseif($ecms_config['esafe']['ckfromurl']==3)//前台啟用
	{
		if(!defined('EmpireCMSAdmin')&&!stristr($fromurl,$domain))
		{
			echo"";
			exit();
		}
	}
	elseif($ecms_config['esafe']['ckfromurl']==4)//全部啟用(嚴格)
	{
		if(!stristr($fromurl,$domain))
		{
			echo"";
			exit();
		}
		if(defined('EmpireCMSAdmin'))
		{
			$adminpath=eGetSelfAdminPath();
			if(!stristr($fromurl,'/e/'.$adminpath.'/'))
			{
				echo"";
				exit();
			}
		}
	}
	elseif($ecms_config['esafe']['ckfromurl']==5)//後台啟用(嚴格)
	{
		if(defined('EmpireCMSAdmin'))
		{
			if(!stristr($fromurl,$domain.'/'))
			{
				echo"";
				exit();
			}
			$adminpath=eGetSelfAdminPath();
			if(!stristr($fromurl,'/e/'.$adminpath.'/'))
			{
				echo"";
				exit();
			}
		}
	}
	elseif($ecms_config['esafe']['ckfromurl']==6)//前台啟用(嚴格)
	{
		if(!defined('EmpireCMSAdmin')&&!stristr($fromurl,$domain))
		{
			echo"";
			exit();
		}
	}
}

//驗證agent信息
function EcmsCheckUserAgent($ckstr){
	if(empty($ckstr))
	{
		return '';
	}
	$userinfo=$_SERVER['HTTP_USER_AGENT'];
	$cr=explode('||',$ckstr);
	$count=count($cr);
	for($i=0;$i<$count;$i++)
	{
		if(empty($cr[$i]))
		{
			continue;
		}
		if(!strstr($userinfo,$cr[$i]))
		{
			//echo'Userinfo Error';
			exit();
		}
	}
}

//驗證IP
function eCheckAccessIp($ecms=0){
	global $public_r;
	$userip=egetip();
	if($ecms)//後台
	{
		//允許IP
		if($public_r['hopenip'])
		{
			$close=1;
			foreach(explode("\n",$public_r['hopenip']) as $ctrlip)
			{
				if(preg_match("/^(".preg_quote(($ctrlip=trim($ctrlip)),'/').")/",$userip))
				{
					$close=0;
					break;
				}
			}
			if($close==1)
			{
				echo"Ip<font color='#cccccc'>(".$userip.")</font> be prohibited.";
				exit();
			}
		}
	}
	else
	{
		//允許IP
		if($public_r['openip'])
		{
			$close=1;
			foreach(explode("\n",$public_r['openip']) as $ctrlip)
			{
				if(preg_match("/^(".preg_quote(($ctrlip=trim($ctrlip)),'/').")/",$userip))
				{
					$close=0;
					break;
				}
			}
			if($close==1)
			{
				echo"Ip<font color='#cccccc'>(".$userip.")</font> be prohibited.";
				exit();
			}
		}
		//禁止IP
		if($public_r['closeip'])
		{
			foreach(explode("\n",$public_r['closeip']) as $ctrlip)
			{
				if(preg_match("/^(".preg_quote(($ctrlip=trim($ctrlip)),'/').")/",$userip))
				{
					echo"Ip<font color='#cccccc'>(".$userip.")</font> be prohibited.";
					exit();
				}
			}
		}
	}
}

//驗證提交IP
function eCheckAccessDoIp($doing){
	global $public_r,$empire,$dbtbpre;
	$pr=$empire->fetch1("select opendoip,closedoip,doiptype from {$dbtbpre}enewspublic limit 1");
	if(!strstr($pr['doiptype'],','.$doing.','))
	{
		return '';
	}
	$userip=egetip();
	//允許IP
	if($pr['opendoip'])
	{
		$close=1;
		foreach(explode("\n",$pr['opendoip']) as $ctrlip)
		{
			if(preg_match("/^(".preg_quote(($ctrlip=trim($ctrlip)),'/').")/",$userip))
			{
				$close=0;
				break;
			}
		}
		if($close==1)
		{
			printerror('NotCanPostIp','history.go(-1)',1);
		}
	}
	//禁止IP
	if($pr['closedoip'])
	{
		foreach(explode("\n",$pr['closedoip']) as $ctrlip)
		{
			if(preg_match("/^(".preg_quote(($ctrlip=trim($ctrlip)),'/').")/",$userip))
			{
				printerror('NotCanPostIp','history.go(-1)',1);
			}
		}
	}
}

//驗證是否關閉相關模塊
function eCheckCloseMods($mod){
	global $public_r;
	if(strstr($public_r['closemods'],','.$mod.','))
	{
		echo $mod.' is close';
		exit();
	}
}

//驗證操作時間
function eCheckTimeCloseDo($ecms){
	global $public_r;
	if(stristr($public_r['timeclosedo'],','.$ecms.','))
	{
		$h=date('G');
		if(strstr($public_r['timeclose'],','.$h.','))
		{
			printerror('ThisTimeCloseDo','history.go(-1)',1);
		}
	}
}

//驗證外部登錄是否開啟
function eCheckCloseMemberConnect(){
	global $public_r;
	if(!$public_r['memberconnectnum'])
	{
		printerror('NotOpenMemberConnect','history.go(-1)',1);
	}
}

//過濾
function ClearNewsBadCode($text){
	$text=preg_replace(array('!<script!i','!</script>!i','!<link!i','!<iframe!i','!</iframe>!i','!<meta!i','!<body!i','!<style!i','!</style>!i','! onerror!i','!<marquee!i','!</marquee>!i','/<!--/','! onload!i','! onmouse!i','!<frame!i','!<frameset!i'),array('&lt;script','&lt;/script&gt;','&lt;link','&lt;iframe','&lt;/iframe&gt;','&lt;meta','&lt;body','&lt;style','&lt;/style&gt;',' one rror','&lt;marquee','&lt;/marquee&gt;','<!---ecms ',' onl oad',' onm ouse','&lt;frame','&lt;frameset'),$text);
	return $text;
}

//驗證包含字符
function toCheckCloseWord($word,$closestr,$mess){
	if($closestr&&$closestr!='|')
	{
		$checkr=explode('|',$closestr);
		$ckcount=count($checkr);
		for($i=0;$i<$ckcount;$i++)
		{
			if($checkr[$i])
			{
				if(stristr($checkr[$i],'##'))//多字
				{
					$morer=explode('##',$checkr[$i]);
					if(stristr($word,$morer[0])&&stristr($word,$morer[1]))
					{
						printerror($mess,"history.go(-1)",1);
					}
				}
				else
				{
					if(stristr($word,$checkr[$i]))
					{
						printerror($mess,"history.go(-1)",1);
					}
				}
			}
		}
	}
}

//替換評論表情
function RepPltextFace($text){
	global $public_r;
	if(empty($public_r['plface'])||$public_r['plface']=='||')
	{
		return $text;
	}
	$facer=explode('||',$public_r['plface']);
	$count=count($facer);
	for($i=1;$i<$count-1;$i++)
	{
		$r=explode('##',$facer[$i]);
		$text=str_replace($r[0],"<img src='".$public_r['newsurl']."e/data/face/".$r[1]."' border=0>",$text);
	}
	return $text;
}

//替換空格
function RepFieldtextNbsp($text){
	return str_replace(array("\t",'   ','  '),array('&nbsp; &nbsp; &nbsp; &nbsp; ','&nbsp; &nbsp;','&nbsp;&nbsp;'),$text);
}

//保留擴展名驗證
function CheckSaveTranFiletype($filetype){
	$savetranfiletype=',.php,.php3,.php4,.php5,.php6,.asp,.aspx,.jsp,.cgi,.phtml,.asa,.asax,.fcgi,.pl,.ascx,.ashx,.cer,.cdx,.pht,.shtml,.shtm,.stm,';
	if(stristr($savetranfiletype,','.$filetype.','))
	{
		return true;
	}
	return false;
}

//設置驗證碼
function ecmsSetShowKey($varname,$val,$ecms=0,$isadmin=0){
	global $public_r;
	$pubkeyrnd=$isadmin==1?$public_r['hkeyrnd']:$public_r['keyrnd'];
	$time=time();
	$checkpass=md5('d!i#g?o-d-'.md5(md5($varname.'E.C#M!S^e-'.$val).'-E?m!P.i#R-e'.$time).$pubkeyrnd.'P#H!o,m^e-e');
	$key=$time.','.$checkpass.',EmpireCMS';
	esetcookie($varname,$key,0,$ecms);
}

//檢查驗證碼
function ecmsCheckShowKey($varname,$postval,$dopr,$ecms=0,$isadmin=0){
	global $public_r;
	$postval=trim($postval);
	if($isadmin==1)
	{
		$pubkeytime=$public_r['hkeytime'];
		$pubkeyrnd=$public_r['hkeyrnd'];
	}
	else
	{
		$pubkeytime=$public_r['keytime'];
		$pubkeyrnd=$public_r['keyrnd'];
	}
	$r=explode(',',getcvar($varname,$ecms));
	$cktime=(int)$r[0];
	$pass=$r[1];
	$val=$r[2];
	$time=time();
	if($cktime>$time||$time-$cktime>$pubkeytime)
	{
		printerror('OutKeytime','',$dopr);
	}
	if(empty($postval))
	{
		printerror('FailKey','',$dopr);
	}
	$checkpass=md5('d!i#g?o-d-'.md5(md5($varname.'E.C#M!S^e-'.$postval).'-E?m!P.i#R-e'.$cktime).$pubkeyrnd.'P#H!o,m^e-e');
	if('dg'.$checkpass<>'dg'.$pass)
	{
		printerror('FailKey','',$dopr);
	}
}

//清空驗證碼
function ecmsEmptyShowKey($varname,$ecms=0,$isadmin=0){
	esetcookie($varname,'',0,$ecms);
}

//設置提交碼
function DoSetActionPass($userid,$username,$rnd,$other,$ecms=0){
	global $ecms_config;
	$varname='actionepass';
	$date=date("Y-m-d-H");
	$pass=md5(md5($rnd.'-'.$userid.'-'.$date.'-'.$other).$ecms_config['cks']['ckrnd'].$username);
	esetcookie($varname,$pass,0,$ecms);
}

//清除提交碼
function DoEmptyActionPass($ecms=0){
	$varname='actionepass';
	esetcookie($varname,'',0,$ecms);
}

//檢測提交碼
function DoCheckActionPass($userid,$username,$rnd,$other,$ecms=0){
	global $ecms_config;
	$varname='actionepass';
	$date=date("Y-m-d-H");
	$checkpass=md5(md5($rnd.'-'.$userid.'-'.$date.'-'.$other).$ecms_config['cks']['ckrnd'].$username);
	$pass=getcvar($varname,$ecms);
	if('dg'.$checkpass<>'dg'.$pass)
	{
		exit();
	}
}

//返回字段標識
function toReturnFname($tbname,$f){
	global $empire,$dbtbpre;
	$r=$empire->fetch1("select fname from {$dbtbpre}enewsf where f='$f' and tbname='$tbname' limit 1");
	return $r[fname];
}

//返回拼音
function ReturnPinyinFun($hz){
	global $ecms_config;
	include_once(ECMS_PATH.'e/class/epinyin.php');
	//編碼
	if($ecms_config['sets']['pagechar']!='gb2312')
	{
		include_once(ECMS_PATH.'e/class/doiconv.php');
		$iconv=new Chinese('');
		$char=$ecms_config['sets']['pagechar']=='big5'?'BIG5':'UTF8';
		$targetchar='GB2312';
		$hz=$iconv->Convert($char,$targetchar,$hz);
	}
	return c($hz);
}

//取得字母
function GetInfoZm($hz){
	if(!trim($hz))
	{
		return '';
	}
	$py=ReturnPinyinFun($hz);
	$zm=substr($py,0,1);
	return strtoupper($zm);
}

//返回加密後的IP
function ToReturnXhIp($ip,$n=1){
	$newip='';
	$ipr=explode(".",$ip);
	$ipnum=count($ipr);
	for($i=0;$i<$ipnum;$i++)
	{
		if($i!=0)
		{$d=".";}
		if($i==$ipnum-1)
		{
			$ipr[$i]="*";
		}
		if($n==2)
		{
			if($i==$ipnum-2)
			{
				$ipr[$i]="*";
			}
		}
		$newip.=$d.$ipr[$i];
	}
	return $newip;
}

//驗證是否使用https
function eCheckUseHttps(){
	if($_SERVER['HTTPS']&&strtolower($_SERVER['HTTPS'])!='off')
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

//返回http類型
function eReturnHttpType(){
	global $public_r;
	if($public_r['httptype'])
	{
		if($public_r['httptype']==1)
		{
			return 'http://';
		}
		elseif($public_r['httptype']==2)
		{
			return 'https://';
		}
		elseif($public_r['httptype']==3)
		{
			if(defined('EmpireCMSAdmin'))
			{
				return 'https://';
			}
			else
			{
				return 'http://';
			}
		}
		elseif($public_r['httptype']==4)
		{
			if(defined('EmpireCMSAdmin'))
			{
				return 'http://';
			}
			else
			{
				return 'https://';
			}
		}
	}
	return eCheckUseHttps()==1?'https://':'http://';
}

//返回當前域名2
function eReturnTrueDomain(){
	$domain=RepPostStr($_SERVER['HTTP_HOST'],1);
	if(empty($domain))
	{
		return '';
	}
	return $domain;
}

//返回當前域名
function eReturnDomain(){
	$domain=RepPostStr($_SERVER['HTTP_HOST'],1);
	if(empty($domain))
	{
		return '';
	}
	return eReturnHttpType().$domain;
}

//返回域名網站地址
function eReturnDomainSiteUrl(){
	global $public_r;
	$PayReturnUrlQz=$public_r['newsurl'];
	if(!stristr($public_r['newsurl'],'://'))
	{
		$PayReturnUrlQz=eReturnDomain().$public_r['newsurl'];
	}
	return $PayReturnUrlQz;
}

//返回當前地址
function eReturnSelfPage($ecms=0){
	if(empty($ecms))
	{
		$page=$_SERVER['PHP_SELF'];
	}
	else
	{
		$page=$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
	}
	$page=str_replace('&amp;','&',RepPostStr($page,1));
	return $page;
}

//驗證當前會員權限
function sys_CheckMemberGroup($groupid){
	if(!defined('InEmpireCMSUser'))
	{
		include_once ECMS_PATH.'e/member/class/user.php';
	}
	$r=qCheckLoginAuthstr();
	if(!$r['islogin'])
	{
		return 0;
	}
	if(!strstr(','.$groupid.',',','.$r['groupid'].','))
	{
		return -1;
	}
	return 1;
}

//EMAIL地址檢查
function chemail($email){
	$chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$/i";
    if (strpos($email, '@') !== false && strpos($email, '.') !== false)
    {
        if (preg_match($chars, $email))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

//去除adds
function ClearAddsData($data){
	if(MAGIC_QUOTES_GPC)
	{
		$data=stripSlashes($data);
	}
	return $data;
}

//增加adds
function AddAddsData($data){
	if(!MAGIC_QUOTES_GPC)
	{
		$data=addslashes($data);
	}
	return $data;
}

//原字符adds
function StripAddsData($data){
	$data=addslashes(stripSlashes($data));
	return $data;
}

//反增加adds
function fAddAddsData($data){
	if(MAGIC_QUOTES_GPC)
	{
		$data=addslashes($data);
	}
	return $data;
}

//------- 存文本 -------

//讀取文本字段內容
function GetTxtFieldText($pagetexturl){
	global $ecms_config;
	if(empty($pagetexturl))
	{
		return '';
	}
	$file=$ecms_config['sets']['txtpath'].$pagetexturl.".php";
	$text=ReadFiletext($file);
	$text=substr($text,12);//去除exit
	return $text;
}

//取得文本地址
function GetTxtFieldTextUrl($pagetexturl){
	global $ecms_config;
	$file=$ecms_config['sets']['txtpath'].$pagetexturl.".php";
	return $file;
}

//修改文本字段內容
function EditTxtFieldText($pagetexturl,$pagetext){
	global $ecms_config;
	$pagetext="<? exit();?>".$pagetext;
	$file=$ecms_config['sets']['txtpath'].$pagetexturl.".php";
	WriteFiletext_n($file,$pagetext);
}

//刪除文本字段內容
function DelTxtFieldText($pagetexturl){
	global $ecms_config;
	if(empty($pagetexturl))
	{
		return '';
	}
	$file=$ecms_config['sets']['txtpath'].$pagetexturl.".php";
	DelFiletext($file);
}

//取得隨機數
function GetFileMd5(){
	$p=md5(uniqid(microtime()).EcmsRandInt());
	return $p;
}

//建立存放目錄
function MkDirTxtFile($date,$file){
	global $ecms_config;
	$r=explode("/",$date);
	$path=$ecms_config['sets']['txtpath'].$r[0];
	DoMkdir($path);
	$path=$ecms_config['sets']['txtpath'].$date;
	DoMkdir($path);
	$returnpath=$date."/".$file;
	return $returnpath;
}

//替換公共標記
function ReplaceSvars($temp,$url,$classid,$title,$key,$des,$add,$repvar=1){
	global $public_r,$class_r,$class_zr;
	if($repvar==1)//全局模板變量
	{
		$temp=ReplaceTempvar($temp);
	}
	$temp=str_replace('[!--class.menu--]',$public_r['classnavs'],$temp);//欄目導航
	$temp=str_replace('[!--newsnav--]',$url,$temp);//位置導航
	$temp=str_replace('[!--pagetitle--]',$title,$temp);
	$temp=str_replace('[!--pagekey--]',$key,$temp);
	$temp=str_replace('[!--pagedes--]',$des,$temp);
	$temp=str_replace('[!--self.classid--]',0,$temp);
	$temp=str_replace('[!--news.url--]',$public_r['newsurl'],$temp);
	return $temp;
}

//返回數組組合字符
function eReturnRDataStr($r){
	$count=count($r);
	if(!$count)
	{
		return '';
	}
	$str=',';
	for($i=0;$i<$count;$i++)
	{
		$str.=$r[$i].',';
	}
	return $str;
}

//------- firewall -------

//提示
function FWShowMsg($msg){
	//echo $msg;
	exit();
}

//防火牆
function DoEmpireCMSFireWall(){
	global $ecms_config;
	if(!empty($ecms_config['fw']['adminloginurl']))
	{
		$usehost=FWeReturnDomain();
		if($usehost!=$ecms_config['fw']['adminloginurl'])
		{
			FWShowMsg('Login Url');
		}
	}
	if($ecms_config['fw']['adminhour']!=='')
	{
		$h=date('G');
		if(!strstr(','.$ecms_config['fw']['adminhour'].',',','.$h.','))
		{
			FWShowMsg('Admin Hour');
		}
	}
	if($ecms_config['fw']['adminweek']!=='')
	{
		$w=date('w');
		if(!strstr(','.$ecms_config['fw']['adminweek'].',',','.$w.','))
		{
			FWShowMsg('Admin Week');
		}
	}
	if(!defined('EmpireCMSAPage')&&$ecms_config['fw']['adminckpassvar']&&$ecms_config['fw']['adminckpassval'])
	{
		FWCheckPassword();
	}
}

//返回當前域名
function FWeReturnDomain(){
	$domain=RepPostStr($_SERVER['HTTP_HOST'],1);
	if(empty($domain))
	{
		return '';
	}
	return eReturnHttpType().$domain;
}

//檢查敏感字符
function FWClearGetText($str){
	global $ecms_config;
	if(empty($ecms_config['fw']['eopen']))
	{
		return '';
	}
	if(empty($ecms_config['fw']['cleargettext']))
	{
		return '';
	}
	$r=explode(',',$ecms_config['fw']['cleargettext']);
	$count=count($r);
	for($i=0;$i<$count;$i++)
	{
		if(stristr($r[$i],'##'))//多字
		{
			$morer=explode('##',$r[$i]);
			if(stristr($str,$morer[0])&&stristr($str,$morer[1]))
			{
				FWShowMsg('Post String');
			}
		}
		else
		{
			if(stristr($str,$r[$i]))
			{
				FWShowMsg('Post String');
			}
		}
	}
}

//後台防火牆密碼
function FWSetPassword(){
	global $ecms_config;
	if(!$ecms_config['fw']['eopen']||!$ecms_config['fw']['adminckpassvar']||!$ecms_config['fw']['adminckpassval'])
	{
		return '';
	}
	$ip=$ecms_config['esafe']['ckhloginip']==0?'127.0.0.1':egetip();
	$ecmsckpass=md5(md5($ecms_config['fw']['adminckpassval'].'-empirecms-'.$ecms_config['fw']['epass']).'-'.$ip.'-'.$ecms_config['fw']['adminckpassval'].'-phome.net-');
	esetcookie($ecms_config['fw']['adminckpassvar'],$ecmsckpass,0,1);
}

function FWCheckPassword(){
	global $ecms_config;
	if(!$ecms_config['fw']['eopen']||!$ecms_config['fw']['adminckpassvar']||!$ecms_config['fw']['adminckpassval'])
	{
		return '';
	}
	$ip=$ecms_config['esafe']['ckhloginip']==0?'127.0.0.1':egetip();
	$ecmsckpass=md5(md5($ecms_config['fw']['adminckpassval'].'-empirecms-'.$ecms_config['fw']['epass']).'-'.$ip.'-'.$ecms_config['fw']['adminckpassval'].'-phome.net-');
	if('dg'.$ecmsckpass<>'dg'.getcvar($ecms_config['fw']['adminckpassvar'],1))
	{
		FWShowMsg('Password');
	}
}

function FWEmptyPassword(){
	global $ecms_config;
	esetcookie($ecms_config['fw']['adminckpassvar'],'',0,1);
}


//--------------- 緩存 ---------------

//取最後一兩級目錄
function Ecms_eReturnShowMkdir($path){
	global $ecms_config;
	if(!$ecms_config['sets']['webdebug'])
	{
		return '';
	}
	if(!stristr($path,'/'))
	{
		return '';
	}
	$path=str_replace(eReturnTrueEcmsPath(),'/',$path);
	$r=explode('/',$path);
	$count=count($r);
	if($count<2)
	{
		return '';
	}
	else
	{
		return '/'.$r[$count-1];
	}
}

//建立目錄(普通)
function Ecms_eMkdir($path){
	if(!file_exists($path))
	{
		$mk=@mkdir($path,0777);
		@chmod($path,0777);
		if(empty($mk))
		{
			echo 'Create path fail: '.Ecms_eReturnShowMkdir($path);
			exit();
		}
	}
	return true;
}

//遞級建立目錄
function Ecms_eMoreMkdir($basepath,$path){
	if(empty($path))
	{
		return '';
	}
	if(file_exists($basepath.$path))
	{
		return $path;
	}
	$returnpath='';
	$r=explode('/',$path);
	$count=count($r);
	for($i=0;$i<$count;$i++)
	{
		if(empty($r[$i]))
		{
			continue;
		}
		if($returnpath)
		{
			$returnpath.='/'.$r[$i];
		}
		else
		{
			$returnpath.=$r[$i];
		}
		$createpath=$basepath.$returnpath;
		$mk=Ecms_eMkdir($createpath);
	}
	return $returnpath;
}

//取得文件內容(可鎖定)
function Ecms_ReadFiletext($filepath,$dolock=0){
	$filepath=trim($filepath);
	$htmlfp=@fopen($filepath,"r");
	if($dolock==1)
	{
		flock($htmlfp,LOCK_SH);
	}
	$string=@fread($htmlfp,@filesize($filepath));
	if($dolock==1)
	{
		flock($htmlfp,LOCK_UN); 
	}
	@fclose($htmlfp);
	return $string;
}

//寫文件(可鎖定)
function Ecms_WriteFiletext($filepath,$string,$dolock=0,$strip=0){
	global $public_r;
	if($strip==1)
	{
		$string=stripSlashes($string);
	}
	$fp=@fopen($filepath,"w");
	if($dolock==1)
	{
		flock($fp,LOCK_EX);
	}
	@fputs($fp,$string);
	if($dolock==1)
	{
		flock($fp,LOCK_UN);
	}
	@fclose($fp);
	if(empty($public_r['filechmod']))
	{
		@chmod($filepath,0777);
	}
}

//返回文件修改時間
function Ecms_GetFileEditTime($filepath){
	return file_exists($filepath)?intval(filemtime($filepath)):0;
}

//ID返回動態緩存目錄
function ePagenoGetPageCache($cpage){
	$r=array();
	if($cpage==1)//首頁
	{
		$r['esyspath']='empirecms';
		$r['cpath']='cindex';
	}
	elseif($cpage==2)//封面
	{
		$r['esyspath']='empirecms';
		$r['cpath']='cpage';
	}
	elseif($cpage==3)//列表
	{
		$r['esyspath']='empirecms';
		$r['cpath']='clist';
	}
	elseif($cpage==4)//內容
	{
		$r['esyspath']='empirecms';
		$r['cpath']='ctext';
	}
	elseif($cpage==5)//標題分類
	{
		$r['esyspath']='empirecms';
		$r['cpath']='cinfotype';
	}
	elseif($cpage==6)//TAGS
	{
		$r['esyspath']='empirecms';
		$r['cpath']='ctags';
	}
	elseif($cpage==10000)//ALLECMS
	{
		$r['esyspath']='empirecms';
		$r['cpath']='';
	}
	else
	{
		$r['esyspath']='';
		$r['cpath']='no';
	}
	return $r;
}

//返回緩存文件名
function Ecms_eCacheReturnFile($cachetype,$ids,$datepath,$path='empirecms'){
	global $ecms_config,$public_r;
	$filer['basepath']=$ecms_config['sets']['ecmscachepath'].$path.'/';
	$filer['cpath']=$datepath;
	$filer['cfile']=md5($cachetype.'!-'.$ids.'-,'.$public_r['ctimernd'].'-!'.$path).$ecms_config['sets']['ecmscachefiletype'];
	$filer['ctruefile']=$filer['basepath'].$filer['cpath'].'/'.$filer['cfile'];
	return $filer;
}

//輸出緩存
function Ecms_eCacheOut($cr,$usedo=0){
	$cachetime=abs($cr['cachetime'])*60;
	$filer=Ecms_eCacheReturnFile($cr['cachetype'],$cr['cacheids'],$cr['cachedatepath'],$cr['cachepath']);
	$cachefile=$filer['ctruefile'];
	$filetime=Ecms_GetFileEditTime($cachefile);
	if(!$filetime)
	{
		return 0;
	}
	$time=time();
	if($time-$filetime>$cachetime)
	{
		return 0;
	}
	$cr['cachelastedit']=(int)$cr['cachelastedit'];
	if($cr['cachelastedit']&&$cr['cachelastedit']>$filetime)
	{
		return 0;
	}
	if($cr['cachelasttime']>=$filetime)
	{
		return 0;
	}
	echo Ecms_ReadFiletext($cachefile);
	if($usedo==0)
	{
		db_close();
		$empire=null;
		exit();
	}
	elseif($usedo==1)
	{
		exit();
	}
	else
	{}
	return 1;
}

//寫入緩存
function Ecms_eCacheIn($cr,$cachetext){
	$filer=Ecms_eCacheReturnFile($cr['cachetype'],$cr['cacheids'],$cr['cachedatepath'],$cr['cachepath']);
	$cachefile=$filer['ctruefile'];
	Ecms_eMoreMkdir($filer['basepath'],$filer['cpath']);
	Ecms_WriteFiletext($cachefile,$cachetext,1);
	echo $cachetext;
}

//驗證是否啟用緩存
function Ecms_eCacheCheckOpen($cachetime){
	global $ecms_config,$public_r,$ecms_tofunr;
	if(empty($public_r['ctimeopen']))
	{
		return 0;
	}
	if($cachetime>0)
	{
		$open=1;
	}
	elseif($cachetime<0)
	{
		$open=1;
		$userid=(int)getcvar('mluserid');
		if($userid)
		{
			$open=0;
		}
	}
	else
	{
		$open=0;
	}
	if($public_r['ctimegids'])
	{
		$groupid=(int)getcvar('mlgroupid');
		if($groupid&&strstr(','.$public_r['ctimegids'].',',','.$groupid.','))
		{
			$open=0;
		}
	}
	if($public_r['ctimecids']&&$ecms_tofunr['cacheselfcid'])
	{
		$selfcid=(int)$ecms_tofunr['cacheselfcid'];
		if($selfcid&&strstr(','.$public_r['ctimecids'].',',','.$selfcid.','))
		{
			$open=0;
		}
	}
	return $open;
}

//設置更新緩存
function eDoUpCache($id,$tname,$ecms=0,$ck=0){
	global $empire,$dbtbpre,$public_r;
	if(empty($public_r['ctimeopen']))
	{
		return '';
	}
	$time=time();
	$uptime=$time-2;
	$addwhere='';
	$addwhere_index=' where fclastindex<'.$uptime;
	if($ck==1)
	{
		$addwhere=' and fclast<'.$uptime;
		$addwhere_index=' where fclastindex<'.$uptime;
	}
	if($ecms==1)//欄目
	{
		if(!$id)
		{
			return '';
		}
		$empire->query("update {$dbtbpre}enewsclass set fclast='$time' where classid in (".$id.")".$addwhere);
	}
	elseif($ecms==2)//標題分類
	{
		if(!$id)
		{
			return '';
		}
		$empire->query("update {$dbtbpre}enewsinfotype set fclast='$time' where typeid in (".$id.")".$addwhere);
	}
	elseif($ecms==3)//內容頁
	{
		if(!$id||!$tname)
		{
			return '';
		}
		$empire->query("update {$dbtbpre}ecms_".$tname." set lastdotime='$time' where id in (".$id.")");
	}
	elseif($ecms==4)//TAGS
	{
		if(!$id&&!$tname)
		{
			return '';
		}
		if($tname)
		{
			$tr=explode(',',$tname);
			$tcount=count($tr);
			$where='';
			$or='';
			for($ti=0;$ti<$tcount;$ti++)
			{
				$tr[$ti]=RepPostVar($tr[$ti]);
				if(!$tr[$ti])
				{
					continue;
				}
				$where.=$or."tagname='".$tr[$ti]."'";
				$or=' or ';
			}
			if(!$where)
			{
				return '';
			}
		}
		else
		{
			$where="tagid in (".$id.")";
		}
		$empire->query("update {$dbtbpre}enewstags set fclast='$time' where ".$where.$addwhere);
	}
	else//首頁
	{
		$empire->query("update {$dbtbpre}enewspublic_fc set fclastindex='$time'".$addwhere_index." limit 1");
	}
}

//設置更新緩存
function eUpCacheInfo($ecms,$classid,$id,$pid,$ttid,$tagid,$tagname,$oldclassid=0,$oldttid=0,$ck=0){
	global $empire,$dbtbpre,$public_r,$class_r;
	if(empty($public_r['ctimeopen']))
	{
		return '';
	}
	$ctimeaddre=$ecms==1?$public_r['ctimeaddre']:$public_r['ctimeqaddre'];
	if(!$ctimeaddre)
	{
		return '';
	}
	$classid=(int)$classid;
	$id=(int)$id;
	$pid=(int)$pid;
	$ttid=(int)$ttid;
	$oldclassid=(int)$oldclassid;
	$oldttid=(int)$oldttid;
	//首頁
	if($ctimeaddre==2||$ctimeaddre==4||$ctimeaddre==6||$ctimeaddre==7||$ctimeaddre==8)
	{
		eDoUpCache(0,'',0,$ck);
	}
	//欄目
	if($ctimeaddre!=2)
	{
		if(!empty($classid))
		{
			$cids='';
			if($ctimeaddre==1)//當前
			{
				$cids=$classid;
				if($oldclassid&&$oldclassid!=$classid)
				{
					$cids.=','.$oldclassid;
				}
			}
			else
			{
				$featherclass=$class_r[$classid]['featherclass'];
				if($ctimeaddre>=5)
				{
					if(empty($featherclass))
					{
						$featherclass='|';
					}
					$featherclass.=$classid.'|';
					if($oldclassid&&$oldclassid!=$classid)
					{
						$featherclass.=$oldclassid.'|';
					}
				}
				$cids=eReturnInFcids($featherclass);
			}
			if(empty($cids))
			{
				return '';
			}
			eDoUpCache($cids,'',1,$ck);
		}
	}
	//標題分類
	if($ctimeaddre>=7)
	{
		if(!empty($ttid))
		{
			if($oldttid&&$oldttid!=$ttid)
			{
				$ttid.=','.$oldttid;
			}
			eDoUpCache($ttid,'',2,$ck);
		}
	}
	//TAGS
	if($ctimeaddre>=8)
	{
		eDoUpCache('',$tagname,4,$ck);
	}
	//信息
	if($id||$pid)
	{
		$tbname=$class_r[$classid]['tbname'];
		if(!empty($tbname))
		{
			$ids='';
			$iddh='';
			if($id)
			{
				$ids.=$id;
				$iddh=',';
			}
			if($pid)
			{
				$ids.=$iddh.$pid;
				$iddh=',';
			}
			eDoUpCache($ids,$tbname,3,$ck);
		}
	}
}

?>