IsError = FALSE;
$this->ArcID = $aid;
$this->PreNext = array();
$this->dsql = $dsql;
$query = "SELECT channel,typeid FROM `#@__arctiny` WHERE id='$aid' ";
$arr = $this->dsql->GetOne($query);
$envs['url_type'] = 2;
if (!is_array($arr)) {
$this->IsError = TRUE;
} else {
if ($arr['channel'] == 0) $arr['channel'] = 1;
$this->ChannelUnit = new ChannelUnit($arr['channel'], $aid);
$this->TypeLink = new TypeLink($arr['typeid']);
if ($this->ChannelUnit->ChannelInfos['issystem'] != -1) {
//如果当前文档不是系统模型,为自定义模型
$query = "SELECT arc.*,tp.reid,tp.typedir,ch.addtable,mb.uname,mb.face FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp on tp.id=arc.typeid LEFT JOIN `#@__channeltype` as ch on arc.channel = ch.id LEFT JOIN `#@__member` mb on arc.mid = mb.mid WHERE arc.id='$aid' ";
$this->Fields = $this->dsql->GetOne($query);
} else {
$this->Fields['title'] = '';
$this->Fields['money'] = $this->Fields['arcrank'] = 0;
$this->Fields['senddate'] = $this->Fields['pubdate'] = $this->Fields['mid'] = $this->Fields['adminid'] = 0;
$this->Fields['ismake'] = 1;
$this->Fields['filename'] = '';
}
if ($this->TypeLink->TypeInfos['corank'] > 0 && $this->Fields['arcrank'] == 0) {
$this->Fields['arcrank'] = $this->TypeLink->TypeInfos['corank'];
}
$this->Fields['tags'] = GetTags($aid);
$this->dtp = new DedeTagParse();
$this->dtp->SetRefObj($this);
$this->SplitPageField = $this->ChannelUnit->SplitPageField;
$this->SplitFields = '';
$this->TotalPage = 1;
$this->NameFirst = '';
$this->ShortName = 'html';
$this->FixedValues = '';
$this->TempSource = '';
$this->remoteDir = '';
if (empty($GLOBALS['pageno'])) {
$this->NowPage = 1;
} else {
$this->NowPage = $GLOBALS['pageno'];
}
//特殊的字段数据处理
$this->Fields['aid'] = $aid;
$this->Fields['id'] = $aid;
$this->Fields['position'] = $this->TypeLink->GetPositionLink(TRUE);
$this->Fields['typeid'] = $arr['typeid'];
//设置一些全局参数的值
foreach ($GLOBALS['PubFields'] as $k => $v) {
$this->Fields[$k] = $v;
}
//为了减少重复查询,这里直接把附加表查询记录放在$this->addTableRow中,在ParAddTable()不再查询
if ($this->ChannelUnit->ChannelInfos['addtable'] != '') {
if ($this->ChannelUnit->ChannelID < -1) {
$query = "SELECT tb.*,mb.uname,mb.face FROM `{$this->ChannelUnit->ChannelInfos['addtable']}` tb LEFT JOIN `#@__member` mb on tb.mid = mb.mid WHERE tb.`aid` = '$aid'";
} else {
$query = "SELECT * FROM `{$this->ChannelUnit->ChannelInfos['addtable']}` WHERE `aid` = '$aid'";
}
$this->addTableRow = $this->dsql->GetOne($query);
}
//issystem==-1表示自定义模型,自定义模型不支持redirecturl这类参数,因此限定文档普通模型才进行下面查询
if ($this->ChannelUnit->ChannelInfos['addtable'] != '' && $this->ChannelUnit->ChannelInfos['issystem'] != -1) {
if (is_array($this->addTableRow)) {
$this->Fields['redirecturl'] = $this->addTableRow['redirecturl'];
$this->Fields['templet'] = $this->addTableRow['templet'];
$this->Fields['userip'] = $this->addTableRow['userip'];
}
$this->Fields['templet'] = (empty($this->Fields['templet']) ? '' : trim($this->Fields['templet']));
$this->Fields['redirecturl'] = (empty($this->Fields['redirecturl']) ? '' : trim($this->Fields['redirecturl']));
$this->Fields['userip'] = (empty($this->Fields['userip']) ? '' : trim($this->Fields['userip']));
} else {
$this->Fields['templet'] = $this->Fields['redirecturl'] = '';
$this->Fields['uname'] = $this->addTableRow['uname'];
}
$this->Fields['face'] = empty($this->Fields['face'])? $GLOBALS['cfg_mainsite'].'/static/web/img/admin.png' : $this->Fields['face'];
} //!error
}
//php4构造函数
function Archives($aid)
{
$this->__construct($aid);
}
/**
* 解析附加表的文档
*
* @access public
* @return void
*/
function ParAddTable()
{
//读取附加表信息,并把附加表的资料经过编译处理后导入到$this->Fields中,以方便在模板中用“{dede:field name='fieldname'/}”标记统一调用
if ($this->ChannelUnit->ChannelInfos['addtable'] != '') {
$row = $this->addTableRow;
if ($this->ChannelUnit->ChannelInfos['issystem'] == -1) {
$this->Fields['title'] = $row['title'];
$this->Fields['senddate'] = $this->Fields['pubdate'] = $row['senddate'];
$this->Fields['mid'] = $this->Fields['adminid'] = $row['mid'];
$this->Fields['ismake'] = 1;
$this->Fields['arcrank'] = 0;
$this->Fields['money'] = 0;
$this->Fields['filename'] = '';
}
if (is_array($row)) {
foreach ($row as $k => $v) $row[strtolower($k)] = stripcslashes($v);
}
if (is_array($this->ChannelUnit->ChannelFields) && !empty($this->ChannelUnit->ChannelFields)) {
foreach ($this->ChannelUnit->ChannelFields as $k => $arr) {
if (isset($row[$k])) {
if (!empty($arr['rename'])) {
$nk = $arr['rename'];
} else {
$nk = $k;
}
$cobj = $this->GetCurTag($k);
if (is_object($cobj)) {
foreach ($this->dtp->CTags as $ctag) {
if ($ctag->GetTagName() == 'field' && $ctag->GetAtt('name') == $k) {
//带标识的专题节点
if ($ctag->GetAtt('noteid') != '') {
$this->Fields[$k.'_'.$ctag->GetAtt('noteid')] = $this->ChannelUnit->MakeField($k, $row[$k], $ctag);
}
//带类型的字段节点
else if ($ctag->GetAtt('type') != '') {
$this->Fields[$k.'_'.$ctag->GetAtt('type')] = $this->ChannelUnit->MakeField($k, $row[$k], $ctag);
}
//其它字段
else {
$this->Fields[$nk] = $this->ChannelUnit->MakeField($k, $row[$k], $ctag);
}
}
}
} else {
$this->Fields[$nk] = $row[$k];
}
if ($arr['type'] == 'htmltext' && $GLOBALS['cfg_keyword_replace'] == 'Y' && !empty($this->Fields['keywords'])) {
$this->Fields[$nk] = $this->ReplaceKeyword($this->Fields['keywords'], $this->Fields[$nk]);
}
}
} //End foreach
}
//设置全局环境变量
$this->Fields['typename'] = $this->TypeLink->TypeInfos['typename'];
@SetSysEnv($this->Fields['typeid'], $this->Fields['typename'], $this->Fields['id'], $this->Fields['title'], 'archives');
//文档模型正文图片注释自动为标题
$this->Fields['body'] = str_ireplace(array('alt=""','alt=\'\''),'',$this->Fields['body']);
$this->Fields['body'] = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU","",$this->Fields['body']);
$this->Fields['body'] = str_ireplace("Fields['title']."\" title=\"".$this->Fields['title']."\" ",$this->Fields['body']);
//图片模型正文图片注释自动为标题
if (isset($this->Fields['imgurls']) && is_array($this->Fields['imgurls'])) {
$this->Fields['imgurls'] = str_ireplace(array('alt=""','alt=\'\''),'',$this->Fields['imgurls']);
$this->Fields['imgurls'] = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU","",$this->Fields['imgurls']);
$this->Fields['imgurls'] = str_ireplace("
Fields['title']."\" title=\"".$this->Fields['title']."\"",$this->Fields['imgurls']);
}
//移除文档模型正文图片宽度和高度,适配自适应/响应式网站
$this->Fields['body'] = preg_replace("/style=\"width\:(.*)\"/","",$this->Fields['body']);
}
//完成附加表信息读取
unset($row);
//处理要分页显示的字段
$this->SplitTitles = array();
if ($this->SplitPageField != '' && $GLOBALS['cfg_arcsptitle'] = 'Y' && isset($this->Fields[$this->SplitPageField])) {
$this->SplitFields = explode("#p#", $this->Fields[$this->SplitPageField]);
$i = 1;
foreach ($this->SplitFields as $k => $v) {
$tmpv = cn_substr($v, 50);
$pos = strpos($tmpv, '#e#');
if ($pos > 0) {
$st = trim(cn_substr($tmpv, $pos));
if ($st == "" || $st == "副标题" || $st == "分页标题") {
$this->SplitFields[$k] = preg_replace("/^(.*)#e#/is", "", $v);
continue;
} else {
$this->SplitFields[$k] = preg_replace("/^(.*)#e#/is", "", $v);
$this->SplitTitles[$k] = $st;
}
} else {
continue;
}
$i++;
}
$this->TotalPage = count($this->SplitFields);
$this->Fields['totalpage'] = $this->TotalPage;
}
//处理默认缩略图等
if (isset($this->Fields['litpic'])) {
if ($this->Fields['litpic'] == '-' || $this->Fields['litpic'] == '') {
$this->Fields['litpic'] = $GLOBALS['cfg_cmspath'].'/static/web/img/thumbnail.jpg';
}
if (!preg_match("#^http:\/\/#i", $this->Fields['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y') {
$this->Fields['litpic'] = $GLOBALS['cfg_mainsite'].$this->Fields['litpic'];
}
$this->Fields['picname'] = $this->Fields['litpic'];
//模板里直接使用{dede:field name='image'/}获取缩略图
$this->Fields['image'] = (!preg_match('/jpg|gif|png/i', $this->Fields['picname']) ? '' : "
");
}
//处理投票选项
if (isset($this->Fields['voteid']) && !empty($this->Fields['voteid'])) {
$this->Fields['vote'] = '';
$voteid = $this->Fields['voteid'];
$this->Fields['vote'] = "";
if ($GLOBALS['cfg_multi_site'] == 'Y') {
$this->Fields['vote'] = "";
}
}
if (isset($this->Fields['goodpost']) && isset($this->Fields['badpost'])) {
//digg
if ($this->Fields['goodpost'] + $this->Fields['badpost'] == 0) {
$this->Fields['goodper'] = $this->Fields['badper'] = 0;
} else {
$this->Fields['goodper'] = number_format($this->Fields['goodpost'] / ($this->Fields['goodpost'] + $this->Fields['badpost']), 3) * 100;
$this->Fields['badper'] = 100 - $this->Fields['goodper'];
}
}
}
//获得当前字段参数
function GetCurTag($fieldname)
{
if (!isset($this->dtp->CTags)) {
return '';
}
foreach ($this->dtp->CTags as $ctag) {
if ($ctag->GetTagName() == 'field' && $ctag->GetAtt('name') == $fieldname) {
return $ctag;
} else {
continue;
}
}
return '';
}
/**
* 生成静态网页
*
* @access public
* @param int $isremote 是否远程
* @return string
*/
function MakeHtml($isremote = 0)
{
global $fileFirst, $cfg_basehost;
if ($this->IsError) {
return '';
}
$this->Fields["displaytype"] = "st";
//预编译$th
$this->LoadTemplet();
$this->ParAddTable();
$this->ParseTempletsFirst();
$this->Fields['senddate'] = empty($this->Fields['senddate']) ? '' : $this->Fields['senddate'];
$this->Fields['title'] = empty($this->Fields['title']) ? '' : $this->Fields['title'];
$this->Fields['arcrank'] = empty($this->Fields['arcrank']) ? 0 : $this->Fields['arcrank'];
$this->Fields['ismake'] = empty($this->Fields['ismake']) ? 0 : $this->Fields['ismake'];
$this->Fields['money'] = empty($this->Fields['money']) ? 0 : $this->Fields['money'];
$this->Fields['filename'] = empty($this->Fields['filename']) ? '' : $this->Fields['filename'];
//分析要创建的文件名称
$filename = GetFileNewName(
$this->ArcID,
$this->Fields['typeid'],
$this->Fields['senddate'],
$this->Fields['title'],
$this->Fields['ismake'],
$this->Fields['arcrank'],
$this->TypeLink->TypeInfos['namerule'],
$this->TypeLink->TypeInfos['typedir'],
$this->Fields['money'],
$this->Fields['filename']
);
$filenames = explode(".", $filename);
$this->ShortName = $filenames[count($filenames) - 1];
if ($this->ShortName == '') $this->ShortName = 'html';
$fileFirst = preg_replace("/\.".$this->ShortName."$/i", "", $filename);
$this->Fields['namehand'] = basename($fileFirst);
$filenames = explode("/", $filename);
$this->NameFirst = preg_replace("/\.".$this->ShortName."$/i", "", $filenames[count($filenames) - 1]);
if ($this->NameFirst == '') {
$this->NameFirst = $this->ArcID;
}
//获得当前文档的全名
$filenameFull = GetFileUrl(
$this->ArcID,
$this->Fields['typeid'],
$this->Fields["senddate"],
$this->Fields["title"],
$this->Fields["ismake"],
$this->Fields["arcrank"],
$this->TypeLink->TypeInfos['namerule'],
$this->TypeLink->TypeInfos['typedir'],
$this->Fields["money"],
$this->Fields['filename'],
$this->TypeLink->TypeInfos['moresite'],
$this->TypeLink->TypeInfos['siteurl'],
$this->TypeLink->TypeInfos['sitepath']
);
$this->Fields['arcurl'] = $this->Fields['fullname'] = $filenameFull;
//对于已设置不生成网页的文档直接返回网址
if (
$this->Fields['ismake'] == -1 || $this->Fields['arcrank'] != 0 || $this->Fields['money'] > 0 || ($this->Fields['typeid'] == 0 && $this->Fields['channel'] != -1)) {
return $this->GetTrueUrl($filename);
}
//循环生成网页文件
else {
$seoUrls = array();
for ($i = 1; $i <= $this->TotalPage; $i++) {
if ($this->TotalPage > 1) {
$this->Fields['tmptitle'] = (empty($this->Fields['tmptitle']) ? $this->Fields['title'] : $this->Fields['tmptitle']);
if ($i > 1) $this->Fields['title'] = $this->Fields['tmptitle']."($i)";
}
if ($i > 1) {
$TRUEfilename = $this->GetTruePath().$fileFirst."-".$i.".".$this->ShortName;
$URLFilename = $fileFirst."-".$i.".".$this->ShortName;
} else {
$TRUEfilename = $this->GetTruePath().$filename;
$URLFilename = $filename;
}
$seoUrls = array_merge($seoUrls, array($cfg_basehost.$URLFilename));
$this->ParseDMFields($i, 1);
$this->dtp->SaveTo($TRUEfilename);
}
}
$this->dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET ismake=1 WHERE id='".$this->ArcID."'");
return $this->GetTrueUrl($filename);
}
/**
* 获得真实连接路径
*
* @access public
* @param string $nurl 连接
* @return string
*/
function GetTrueUrl($nurl)
{
return GetFileUrl(
$this->Fields['id'],
$this->Fields['typeid'],
$this->Fields['senddate'],
$this->Fields['title'],
$this->Fields['ismake'],
$this->Fields['arcrank'],
$this->TypeLink->TypeInfos['namerule'],
$this->TypeLink->TypeInfos['typedir'],
$this->Fields['money'],
$this->Fields['filename'],
$this->TypeLink->TypeInfos['moresite'],
$this->TypeLink->TypeInfos['siteurl'],
$this->TypeLink->TypeInfos['sitepath']
);
}
/**
* 获得站点的真实根路径
*
* @access public
* @return string
*/
function GetTruePath()
{
$TRUEpath = $GLOBALS["cfg_basedir"];
return $TRUEpath;
}
/**
* 获得指定键值的字段
*
* @access public
* @param string $fname 键名称
* @param object $ctag 标记
* @return string
*/
function GetField($fname, $ctag)
{
//所有Field数组OR普通Field
if ($fname == 'array') {
return $this->Fields;
}
//指定了id的节点
else if ($ctag->GetAtt('noteid') != '') {
if (isset($this->Fields[$fname.'_'.$ctag->GetAtt('noteid')])) {
return $this->Fields[$fname.'_'.$ctag->GetAtt('noteid')];
}
}
//指定了type的节点
else if ($ctag->GetAtt('type') != '') {
if (isset($this->Fields[$fname.'_'.$ctag->GetAtt('type')])) {
return $this->Fields[$fname.'_'.$ctag->GetAtt('type')];
}
} else if (isset($this->Fields[$fname])) {
return $this->Fields[$fname];
}
return '';
}
/**
* 获得模板文件位置
*
* @access public
* @return string
*/
function GetTempletFile()
{
global $cfg_basedir, $cfg_templets_dir, $cfg_df_style;
$cid = $this->ChannelUnit->ChannelInfos['nid'];
if (!empty($this->Fields['templet'])) {
$filetag = MfTemplet($this->Fields['templet']);
if (!preg_match("#\/#", $filetag)) $filetag = $GLOBALS['cfg_df_style'].'/'.$filetag;
} else {
$filetag = MfTemplet($this->TypeLink->TypeInfos["temparticle"]);
}
$tid = $this->Fields['typeid'];
$filetag = str_replace('{cid}', $cid, $filetag);
$filetag = str_replace('{tid}', $tid, $filetag);
$tmpfile = $cfg_basedir.$cfg_templets_dir.'/'.$filetag;
if ($cid == 'spec') {
if (!empty($this->Fields['templet'])) {
$tmpfile = $cfg_basedir.$cfg_templets_dir.'/'.$filetag;
} else {
$tmpfile = $cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/article_spec.htm";
}
}
if (!file_exists($tmpfile)) {
$tmpfile = $cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/".($cid == 'spec' ? 'article_spec.htm' : 'article_default.htm');
}
if (!preg_match("#.htm$#", $tmpfile)) return FALSE;
return $tmpfile;
}
/**
* 动态输出结果
*
* @access public
* @return void
*/
function display()
{
global $htmltype;
if ($this->IsError) {
return '';
}
$this->Fields["displaytype"] = "dm";
if ($this->NowPage > 1) $this->Fields["title"] = $this->Fields["title"]."({$this->NowPage})";
//预编译
$this->LoadTemplet();
$this->ParAddTable();
$this->ParseTempletsFirst();
//跳转网址
$this->Fields['flag'] = empty($this->Fields['flag']) ? "" : $this->Fields['flag'];
if (preg_match("#j#", $this->Fields['flag']) && $this->Fields['redirecturl'] != '') {
if ($GLOBALS['cfg_jump_once'] == 'N') {
$pageHtml = "\r\n
正在前往文档:".$this->Fields['title']."
\r\n
文档描述:".$this->Fields['description']."
\r\n\r\n"; echo $pageHtml; } else { header("location:{$this->Fields['redirecturl']}"); } exit(); } $pageCount = $this->NowPage; $this->ParseDMFields($pageCount, 0); $this->dtp->display(); } /** * 载入模板 * * @access public * @return void */ function LoadTemplet() { if ($this->TempSource == '') { $tempfile = $this->GetTempletFile(); if (!file_exists($tempfile) || !is_file($tempfile)) { echo "文档id:{$this->Fields['id']},标题:{$this->Fields['title']},主题模板文件不存在,无法更新文档"; exit(); } $this->dtp->LoadTemplate($tempfile); $this->TempSource = $this->dtp->SourceString; } else { $this->dtp->LoadSource($this->TempSource); } } /** * 解析模板,对固定的标记进行初始给值 * * @access public * @return void */ function ParseTempletsFirst() { if (empty($this->Fields['keywords'])) { $this->Fields['keywords'] = ''; } if (empty($this->Fields['reid'])) { $this->Fields['reid'] = 0; } $GLOBALS['envs']['tags'] = $this->Fields['tags']; if (isset($this->TypeLink->TypeInfos['reid'])) { $GLOBALS['envs']['reid'] = $this->TypeLink->TypeInfos['reid']; } $GLOBALS['envs']['keyword'] = $this->Fields['keywords']; $GLOBALS['envs']['typeid'] = $this->Fields['typeid']; $GLOBALS['envs']['topid'] = GetTopid($this->Fields['typeid']); $GLOBALS['envs']['aid'] = $GLOBALS['envs']['id'] = $this->Fields['id']; $GLOBALS['envs']['adminid'] = $GLOBALS['envs']['mid'] = isset($this->Fields['mid']) ? $this->Fields['mid'] : 1; $GLOBALS['envs']['channelid'] = $this->TypeLink->TypeInfos['channeltype']; if ($this->Fields['reid'] > 0) { $GLOBALS['envs']['typeid'] = $this->Fields['reid']; } MakeOneTag($this->dtp, $this, 'N'); } /** * 解析模板,对文档里的变动进行赋值 * * @access public * @param string $pageNo 页码数 * @param string $ismake 是否生成 * @return string */ function ParseDMFields($pageNo, $ismake = 1) { $this->NowPage = $pageNo; $this->Fields['nowpage'] = $this->NowPage; if ($this->SplitPageField != '' && isset($this->Fields[$this->SplitPageField])) { $this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1]; if ($pageNo > 1) $this->Fields['description'] = trim(preg_replace("/[\r\n\t]/", ' ', cn_substr(html2text($this->Fields[$this->SplitPageField]), 200))); } //解析模板 if (is_array($this->dtp->CTags)) { foreach ($this->dtp->CTags as $i => $ctag) { if ($ctag->GetName() == 'field') { $this->dtp->Assign($i, $this->GetField($ctag->GetAtt('name'), $ctag)); } else if ($ctag->GetName() == 'pagebreak') { if ($ismake == 0) { $this->dtp->Assign($i, $this->GetPagebreakDM($this->TotalPage, $this->NowPage, $this->ArcID)); } else { $this->dtp->Assign($i, $this->GetPagebreak($this->TotalPage, $this->NowPage, $this->ArcID)); } } else if ($ctag->GetName() == 'pagetitle') { if ($ismake == 0) { $this->dtp->Assign($i, $this->GetPageTitlesDM($ctag->GetAtt("style"), $pageNo)); } else { $this->dtp->Assign($i, $this->GetPageTitlesST($ctag->GetAtt("style"), $pageNo)); } } else if ($ctag->GetName() == 'prenext') { $this->dtp->Assign($i, $this->GetPreNext($ctag->GetAtt('get'))); } //添加上一篇下一篇标签{dede:prenextdiy get='pre'}{/dede:prenextdiy}{dede:prenextdiy get='next'}{/dede:prenextdiy} else if ($ctag->GetName()=='prenextdiy') { $innertext = trim($ctag->GetInnerText()); if ($innertext) { $get = $ctag->GetAtt('get'); $diys['diy'] = $this->GetPreNext('diy'); $revalue = ''; $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace('field','[',']'); $dtp2->LoadSource($innertext); foreach($diys as $row) { foreach($dtp2->CTags as $tid=>$ctag2) { if (isset($row[$get][$ctag2->GetName()])) { $dtp2->Assign($tid,$row[$get][$ctag2->GetName()]); } } $revalue .= $dtp2->GetResult(); } if ($row[$get]['id']) $this->dtp->Assign($i,$revalue); } } else if ($ctag->GetName() == 'fieldlist') { $innertext = trim($ctag->GetInnerText()); if ($innertext == '') $innertext = GetSysTemplets('tag_fieldlist.htm'); $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace('field', '[', ']'); $dtp2->LoadSource($innertext); $oldSource = $dtp2->SourceString; $oldCtags = $dtp2->CTags; $res = ''; if (is_array($this->ChannelUnit->ChannelFields) && is_array($dtp2->CTags)) { foreach ($this->ChannelUnit->ChannelFields as $k => $v) { if (isset($v['autofield']) && empty($v['autofield'])) { continue; } $dtp2->SourceString = $oldSource; $dtp2->CTags = $oldCtags; $fname = $v['itemname']; foreach ($dtp2->CTags as $tid => $ctag2) { if ($ctag2->GetName() == 'name') { $dtp2->Assign($tid, $fname); } else if ($ctag2->GetName() == 'tagname') { $dtp2->Assign($tid, $k); } else if ($ctag2->GetName() == 'value') { if (isset($this->Fields[$k])) { $this->Fields[$k] = $this->ChannelUnit->MakeField($k, $this->Fields[$k], $ctag2); @$dtp2->Assign($tid, $this->Fields[$k]); } } } $res .= $dtp2->GetResult(); } } $this->dtp->Assign($i, $res); } //end case } //结束模板循环 } } /** * 关闭所占用的资源 * * @access public * @return void */ function Close() { $this->FixedValues = ''; $this->Fields = ''; } /** * 获取上一篇和下一篇链接 * * @access public * @param string $gtype pre为上一篇,preimg为上一篇图片,next为下一篇,nextimg为下一篇图片 * @return string */ function GetPreNext($gtype = '') { $rs = ''; if (count($this->PreNext) < 2) { $aid = $this->ArcID; $preR = $this->dsql->GetOne("SELECT id FROM `#@__arctiny` WHERE id<$aid And arcrank>-1 And typeid='{$this->Fields['typeid']}' ORDER BY id DESC"); $nextR = $this->dsql->GetOne("SELECT id FROM `#@__arctiny` WHERE id>$aid And arcrank>-1 And typeid='{$this->Fields['typeid']}' ORDER BY id ASC"); $next = (is_array($nextR) ? " WHERE arc.id={$nextR['id']} " : ' WHERE 1>2 '); $pre = (is_array($preR) ? " WHERE arc.id={$preR['id']} " : ' WHERE 1>2 '); $query = "SELECT arc.id,arc.title,arc.shorttitle,arc.typeid,arc.ismake,arc.senddate,arc.arcrank,arc.money,arc.filename,arc.litpic,t.typedir,t.typename,t.namerule,t.namerule2,t.ispart,t.moresite,t.siteurl,t.sitepath FROM `#@__archives` arc LEFT JOIN `#@__arctype` t on arc.typeid=t.id "; $nextRow = $this->dsql->GetOne($query.$next); $preRow = $this->dsql->GetOne($query.$pre); if (is_array($preRow)) { $mlink = GetFileUrl( $preRow['id'], $preRow['typeid'], $preRow['senddate'], $preRow['title'], $preRow['ismake'], $preRow['arcrank'], $preRow['namerule'], $preRow['typedir'], $preRow['money'], $preRow['filename'], $preRow['moresite'], $preRow['siteurl'], $preRow['sitepath'] ); $preRow['litpic'] = (empty($preRow['litpic'])) ? $GLOBALS['cfg_cmspath'].'/static/web/img/thumbnail.jpg' : $preRow['litpic']; $this->PreNext['diy']['pre']['id'] = $preRow['id']; $this->PreNext['diy']['pre']['arcurl'] = $mlink; $this->PreNext['diy']['pre']['title'] = $preRow['title']; $this->PreNext['diy']['pre']['litpic'] = $preRow['litpic']; $this->PreNext['diy']['pre']['pubdate'] = $preRow['senddate']; $this->PreNext['pre'] = "上一篇:{$preRow['title']}"; $this->PreNext['preimg'] = "