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

    <?
include_once M_ROOT.'./include/farcedit.cls.php';
include_once M_ROOT.'./include/parse.fun.php';
class cls_farchive{
	var $aid = 0;
	var $archive = array();
	var $channel = array();
	var $catalog = array();
	var $mpinfos = array();//分页检查之后的分页信息
	var $mpbodys = array();//分页检查之后得到的分页内容
	var $template = '';
	var $page = 1;
	function __construct(){
		$this->cls_archive();
	}
	function cls_archive(){
	}
	function init(){
		$this->aid = 0;
		$this->archive = array();
		$this->channel = array();
		$this->catalog = array();
		$this->mpinfos = array();
		$this->mpbodys = array();
		$this->template = '';
		$this->page = 1;
	}
	function arcid($aid){
		global $db,$tblprefix,$fcatalogs,$fchannels;
		$aid = max(0,intval($aid));
		if(!$aid) return false;
		if(!$this->archive = $db->fetch_one("SELECT * FROM {$tblprefix}farchives WHERE aid='$aid'")){
			$this->init();
			return false;
		}
		$this->aid = $this->archive['aid'];
		$this->channel = $fchannels[$this->archive['chid']];
		$this->catalog = read_cache('fcatalog',$this->archive['caid']);
		if($archive = $db->fetch_one("SELECT * FROM {$tblprefix}farchives_".$this->archive['chid']." WHERE aid='".$this->aid."'")){
			$this->archive = array_merge($this->archive, $archive);
			unset($archive);
		}
		arr_tag2atm($this->archive,'f');
		$this->archive['catalog'] = $fcatalogs[$this->archive['caid']]['title'];
		$this->archive['channle'] = $this->channel['cname'];
		return true;
	}
	function name_pre(){
		return date('dHis',$this->archive['createdate']).substr(md5($this->aid.$this->archive['createdate']),5,10);
	}
	function html_path($wri = 0){// htmldir/freeinfos/xxx/
		global $htmldir;
		$path = $htmldir.'/freeinfos/'.$this->channel['ename'].'/';
		$wri && mmkdir($path);
		return $path;
	}
	function transarr(){
		$temparr['mid'] = $this->archive['mid'];
		$temparr['aid'] = $this->aid;
		return $temparr;
	}
	function nreplace(&$content,$mode='b',&$sarr){
		$tmode = $mode == 'b' ? '' : $mode;
		$content = $tmode ? preg_replace("/\{".$tmode."\\$(.+?)\s+(.*?)\{\/".$tmode."\\$\\1\}/ies","\$this->".$mode."tagval('\\1','\\2',\$sarr)",$content) : preg_replace("/\{\\$(.+?)\}/ies","\$this->btagval('\\1',\$sarr)",$content);
	}
	function btagval($tname,&$sarr){
		global $btags,$debugtag;
		if(isset($sarr[$tname])){
			return str_tagcode($sarr[$tname]);
		}elseif(isset($this->archive[$tname])){
			return str_tagcode($this->archive[$tname]);
		}elseif(isset($btags[$tname])){
			return str_tagcode($btags[$tname]);
		}else return $debugtag ? "{ \$$tname}" : '';
	}
	function utagval($tname,$tstr,&$sarr){
		$temparr = array_merge($this->archive,$sarr);
		$result = utagval($tname,$tstr,$temparr);
		unset($temparr);
		return $result;
	}
	function ptagval($tname,$tstr,&$sarr){
		global $debugtag;
		$result = '';
		if(@!$this->mpinfos['ptname'] || $tname != $this->mpinfos['ptname']) return $debugtag ? "{p \$$tname$tstr{/p \$$tname}" : '';
		$ptag = fetch_tag_arr($tname,stripslashes($tstr));
		if(empty($ptag['tclass']) || !in_array($ptag['tclass'],array('normal','images','functions'))) return $debugtag ? "{p \$$tname$tstr{/p \$$tname}" : '';
		$this->mpinfos['length'] = empty($ptag['length']) ? 10 : $ptag['length'];
		$this->mpinfos['simple'] = empty($ptag['simple']) ? 0 : 1;
		$this->mpinfos['nowpage'] = empty($this->mpinfos['nowpage']) ? 1 : $this->mpinfos['nowpage'];
		if($ptag['tclass'] == 'normal'){
			if(!isset($ptag['tname']) || !isset($this->archive[$ptag['tname']])) return $debugtag ? "{p \$$tname$tstr{/p \$$tname}" : '';
			if(empty($this->mpbodys[$this->mpinfos['nowpage']]['body'])){
				$result = '';
			}else{
				include_once M_ROOT.'./include/parse/odeal.php';
				$midarr = array('body' => $this->mpbodys[$this->mpinfos['nowpage']]['body']);
				$result = odealtxt($ptag,$midarr,'p');
				unset($midarr);
			}
			$this->archive['mptitle'] = empty($this->mpbodys[$this->mpinfos['nowpage']]['title']) ? '' : $this->mpbodys[$this->mpinfos['nowpage']]['title'];
			$this->archive['mpnav'] = mpnav($this->mpinfos);
		}elseif(in_array($ptag['tclass'],array('images','functions'))){
			!empty($this->mpinfos['nowpage']) && $sarr['nowpage'] = $this->mpinfos['nowpage'];
			$sarr = array_merge($sarr,$this->archive);
			$m_list = new cls_list;
			$result = $m_list->parse($tname,$ptag,$sarr,'p');
			unset($m_list);
			$this->archive['mpnav'] = mpnav($this->mpinfos);
		}
		return $result;
	}
	function mpcheck(){
		global $db,$tblprefix;
		$this->mpinfos['pcount'] = $this->mpinfos['acount'] = 1;
		if(!preg_match("/\{p\\$(.+?)\s+(.*?)\{\/p\\$\\1\}/is",$this->template,$matches)) return;
		$this->mpinfos['ptname'] = $matches[1];
		$tag = fetch_tag_arr($matches[1],stripslashes($matches[2]));
		unset($matches);
		if(empty($tag['tclass']) || !in_array($tag['tclass'],array('normal','images','functions'))) return;

		$limits = empty($tag['limits']) ? 10 : intval($tag['limits']);
		load_parsefunc('mpnav');
		load_parsefunc($tag['tclass']);
		if($tag['tclass'] == 'normal'){
			if(empty($tag['tname']) || !isset($this->archive[$tag['tname']])) return;
			$bodysarr = preg_split("/\[#(.*?)#\]/is",$this->archive[$tag['tname']],-1,PREG_SPLIT_DELIM_CAPTURE);
			if(!empty($bodysarr)){
				$i = 0;
				foreach($bodysarr as $k => $v){
					if(($k%2==0) && !preg_match("/^[\s| | |\&nbsp;|<p>|<\/p>|<br \/>]*$/is",$v)){
						$i++;
						$this->mpbodys[$i]['body'] = $v;
						$this->mpbodys[$i]['title'] = !isset($bodysarr[$k-1]) ? '' : $bodysarr[$k-1];
					}
				}
				$this->mpinfos['pcount'] = $this->mpinfos['acount'] = $i;
			}
			unset($bodysarr);
		}elseif($tag['tclass'] == 'images'){
			if(!isset($tag['tname']) || !isset($this->archive[$tag['tname']])) return;
			$images = unserialize($this->archive[$tag['tname']]);
			if(!empty($images)){
				$this->mpinfos['acount'] = count($images);
				$this->mpinfos['pcount'] = ceil($this->mpinfos['acount'] / $limits);
			}
			unset($images);
		}elseif($tag['tclass'] == 'functions'){
			if($acount = functions_acount($tag,$this->archive)){
				!empty($tag['alimits']) && $acount = min($acount,$tag['alimits']);
				$this->mpinfos['acount'] = $acount;
				$this->mpinfos['pcount'] = ceil($acount / $limits);
			}
		}
		unset($tag);
	}
}
?>