TypeID = 0;
$this->dsql = $GLOBALS['dsql'];
$this->dtp = new DedeTagParse();
$this->dtp->SetRefObj($this);
$this->dtp->SetNameSpace("dede","{","}");
$this->dtp2 = new DedeTagParse();
$this->dtp2->SetNameSpace("field","[","]");
$this->TypeLink = new TypeLink(0);
$this->ChannelUnit = new ChannelUnit(-1);
$this->ftp = &$ftp;
$this->remoteDir = '';
//设置一些全局参数的值
foreach($GLOBALS['PubFields'] as $k=>$v)
{
$this->Fields[$k] = $v;
}
if($starttime==0)
{
$this->StartTime = 0;
}
else
{
$this->StartTime = GetMkTime($starttime);
}
$this->CountRecord();
$tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/list_spec.htm";
if(!file_exists($tempfile)||!is_file($tempfile))
{
echo "模板文件不存在,无法解析文档!";
exit();
}
$this->dtp->LoadTemplate($tempfile);
$this->TempInfos['tags'] = $this->dtp->CTags;
$this->TempInfos['source'] = $this->dtp->SourceString;
$ctag = $this->dtp->GetTag("page");
if(!is_object($ctag))
{
$this->PageSize = 20;
}
else
{
if($ctag->GetAtt("pagesize")!="")
{
$this->PageSize = $ctag->GetAtt("pagesize");
}
else
{
$this->PageSize = 20;
}
}
$this->TotalPage = ceil($this->TotalResult/$this->PageSize);
}
//php4构造函数
function SpecView($starttime=0)
{
$this->__construct($starttime);
}
//关闭相关资源
function Close()
{
}
/**
* 统计列表里的记录
*
* @access private
* @return void
*/
function CountRecord()
{
$this->TotalResult = -1;
if(isset($GLOBALS['TotalResult']))
{
$this->TotalResult = $GLOBALS['TotalResult'];
}
if(isset($GLOBALS['PageNo']))
{
$this->PageNo = $GLOBALS['PageNo'];
}
else
{
$this->PageNo = 1;
}
if($this->TotalResult==-1)
{
if($this->StartTime>0)
{
$timesql = " AND #@__archives.senddate>'".$this->StartTime."'";
}
else
{
$timesql = "";
}
$row = $this->dsql->GetOne("SELECT count(*) AS dd FROM #@__archives WHERE #@__archives.arcrank > -1 AND channel=-1 $timesql");
if(is_array($row))
{
$this->TotalResult = $row['dd'];
}
else
{
$this->TotalResult = 0;
}
}
}
/**
* 显示列表
*
* @access public
* @return void
*/
function Display()
{
if(isset($this->TypeLink->TypeInfos) && ($this->TypeLink->TypeInfos['ispart']==1
||$this->TypeLink->TypeInfos['ispart']==2))
{
$this->DisplayPartTemplets();
}
$this->ParseTempletsFirst();
foreach($this->dtp->CTags as $tagid=>$ctag)
{
if($ctag->GetName()=="list")
{
$limitstart = ($this->PageNo-1) * $this->PageSize;
$row = $this->PageSize;
if(trim($ctag->GetInnerText())=="")
{
$InnerText = GetSysTemplets("list_fulllist.htm");
}
else
{
$InnerText = trim($ctag->GetInnerText());
}
$this->dtp->Assign($tagid,
$this->GetArcList($limitstart,$row,
$ctag->GetAtt("col"),
$ctag->GetAtt("titlelen"),
$ctag->GetAtt("infolen"),
$ctag->GetAtt("imgwidth"),
$ctag->GetAtt("imgheight"),
$ctag->GetAtt("listtype"),
$ctag->GetAtt("orderby"),
$InnerText,
$ctag->GetAtt("tablewidth"))
);
}
else if($ctag->GetName()=="pagelist")
{
$list_len = trim($ctag->GetAtt("listsize"));
if($list_len=="")
{
$list_len = 3;
}
$this->dtp->Assign($tagid,$this->GetPageListDM($list_len));
}
}
$this->dtp->Display();
}
/**
* 开始创建列表
*
* @access public
* @param int $isremote 是否远程
* @return string
*/
function MakeHtml($isremote=0)
{
//初步给固定值的标记赋值
$this->ParseTempletsFirst();
$totalpage = ceil($this->TotalResult / $this->PageSize);
if($totalpage==0)
{
$totalpage = 1;
}
CreateDir($GLOBALS['cfg_special']);
$murl = "";
for($this->PageNo=1;$this->PageNo<=$totalpage;$this->PageNo++)
{
foreach($this->dtp->CTags as $tagid=>$ctag)
{
if($ctag->GetName()=="list")
{
$limitstart = ($this->PageNo-1) * $this->PageSize;
$row = $this->PageSize;
if(trim($ctag->GetInnerText())=="")
{
$InnerText = GetSysTemplets("spec_list.htm");
}
else
{
$InnerText = trim($ctag->GetInnerText());
}
$this->dtp->Assign($tagid,
$this->GetArcList($limitstart,$row,
$ctag->GetAtt("col"),
$ctag->GetAtt("titlelen"),
$ctag->GetAtt("infolen"),
$ctag->GetAtt("imgwidth"),
$ctag->GetAtt("imgheight"),
"spec",
$ctag->GetAtt("orderby"),
$InnerText,
$ctag->GetAtt("tablewidth"))
);
}
else if($ctag->GetName()=="pagelist")
{
$list_len = trim($ctag->GetAtt("listsize"));
if($list_len=="")
{
$list_len = 3;
}
$this->dtp->Assign($tagid,$this->GetPageListST($list_len));
}
}//End foreach
$makeFile = $GLOBALS['cfg_special']."/spec_".$this->PageNo.$GLOBALS['art_shortname'];
$murl = $makeFile;
$makeFile = $GLOBALS['cfg_basedir'].$makeFile;
$this->dtp->SaveTo($makeFile);
echo "成功创建:$murl
";
}
copy($GLOBALS['cfg_basedir'].$GLOBALS['cfg_special']."/spec_1".$GLOBALS['art_shortname'],$GLOBALS['cfg_basedir'].$GLOBALS['cfg_special']."/index.html");
$murl = $GLOBALS['cfg_special']."/index.html";
return $murl;
}
/**
* 解析模板,对固定的标记进行初始给值
*
* @access private
* @return void
*/
function ParseTempletsFirst()
{
MakeOneTag($this->dtp,$this);
}
/**
* 获取内容列表
*
* @access public
* @param int $limitstart 限制开始
* @param int $row 行数
* @param int $col 列数
* @param int $titlelen 标题长度
* @param int $infolen 描述长度
* @param int $imgwidth 图片宽度
* @param int $imgheight 图片高度
* @param string $listtype 列表类型
* @param string $orderby 排列顺序
* @param string $innertext 底层模板
* @param string $tablewidth 表格宽度
* @return string
*/
function GetArcList($limitstart=0,$row=10,$col=1,$titlelen=30,$infolen=250,
$imgwidth=120,$imgheight=90,$listtype="all",$orderby="default",$innertext="",$tablewidth="100")
{
$typeid=$this->TypeID;
if($row=="")
{
$row = 10;
}
if($limitstart=="")
{
$limitstart = 0;
}
if($titlelen=="")
{
$titlelen = 30;
}
if($infolen=="")
{
$infolen = 250;
}
if($imgwidth=="")
{
$imgwidth = 120;
}
if($imgheight=="")
{
$imgheight = 120;
}
if($listtype=="")
{
$listtype = "all";
}
if($orderby=="")
{
$orderby="default";
}
else
{
$orderby=strtolower($orderby);
}
$tablewidth = str_replace("%", "", $tablewidth);
if($tablewidth=="")
{
$tablewidth=100;
}
if($col=="")
{
$col=1;
}
$colWidth = ceil(100/$col);
$tablewidth = $tablewidth."%";
$colWidth = $colWidth."%";
$innertext = trim($innertext);
if($innertext=="")
{
$innertext = GetSysTemplets("spec_list.htm");
}
//按不同情况设定SQL条件
$orwhere = " arc.arcrank > -1 AND arc.channel = -1 ";
if($this->StartTime>0)
{
$orwhere .= " AND arc.senddate>'".$this->StartTime."'";
}
//排序方式
$ordersql = '';
if($orderby=='senddate')
{
$ordersql=" ORDER BY arc.senddate desc";
}
else if($orderby=='pubdate')
{
$ordersql=" ORDER BY arc.pubdate desc";
}
else if($orderby=='id')
{
$ordersql=" ORDER BY arc.id desc";
}
else
{
$ordersql=" ORDER BY arc.sortrank desc";
}
$query = "SELECT arc.*,tp.typedir,tp.typename,tp.isdefault,arc.money,
tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id
WHERE $orwhere $ordersql LIMIT $limitstart,$row ";
$this->dsql->SetQuery($query);
$this->dsql->Execute('al');
$artlist = '';
if($col>1)
{
$artlist = "
\r\n";
}
if($row = $this->dsql->GetArray("al"))
{
//处理一些特殊字段
$row["description"] = cn_substr($row["description"],$infolen);
$row["title"] = cn_substr($row["title"],$titlelen);
$row["id"] = $row["id"];
if($row['litpic'] == '-' || $row['litpic'] == '')
{
$row['litpic'] = $GLOBALS['cfg_cmspath'].'/static/defaultpic.gif';
}
if(!preg_match("/^http:\/\//", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y')
{
$row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];
}
$row['picname'] = $row['litpic'];
$row["arcurl"] = GetFileUrl($row["id"],$row["typeid"],$row["senddate"],$row["title"],
$row["ismake"],$row["arcrank"],$row["namerule"],$row["typedir"],$row["money"],$row['filename'],$row["moresite"],$row["siteurl"],$row["sitepath"]);
$row["typeurl"] = GetTypeUrl($row["typeid"],$row["typedir"],$row["isdefault"],$row["defaultname"],$row["ispart"],$row["namerule2"],$row["moresite"],$row["siteurl"],$row["sitepath"]);
$row["info"] = $row["description"];
$row["filename"] = $row["arcurl"];
$row["stime"] = GetDateMK($row["pubdate"]);
$row["textlink"] = "".$row["title"]."";
$row["typelink"] = "[".$row["typename"]."]";
$row["imglink"] = " | \r\n";
}
}//Loop Col
if($col>1)
{
$artlist .= "