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->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 .= "