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| | |\ |<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); } } ?>