function LogicListAllSunType($ID,$maptype,$pd) { $fid = $ID; $mapString = ""; $pd = $pd + 15; if($maptype=="rss") $this->dsql->SetQuery("Select ID,typedir,isdefault,defaultname,typename,ispart,namerule2 From #@__arctype where reID='".$ID."' And ishidden<>1 And ispart<2 order by sortrank"); else $this->dsql->SetQuery("Select ID,typedir,isdefault,defaultname,typename,ispart,namerule2 From #@__arctype where reID='".$ID."' And ishidden<>1 order by sortrank"); $this->dsql->Execute($fid); $mapString .= "<div style='margin-left:{$pd}px'>"; while($row=$this->dsql->GetObject($fid)) { if($maptype=="site") $typelink = GetTypeUrl($row->ID,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2); else $typelink = $GLOBALS['cfg_plus_dir']."/rss/".$row->ID.".xml"; $lastLink = " <a href='$typelink'>".$row->typename."</a> "; $mapString .= $lastLink; $mok = $this->LogicListAllSunType($row->ID,$maptype,$pd); if(ereg("<a",$mok)){ //$mapString = str_replace($lastLink,"<div style='margin-left:{$pd}px'>$lastLink",$mapString); $mapString .= $mok; } } $mapString .= "</div>\r\n"; return $mapString; }
function lib_autochannel(&$ctag, &$refObj) { global $dsql; $attlist = 'partsort|0,typeid=-1'; FillAttsDefault($ctag->CAttribute->Items, $attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = trim($ctag->GetInnerText()); $topid = $typeid; $sortid = $partsort; if ($topid == '-1' || $topid == '') { $topid = isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : 0; } if (empty($sortid)) { $sortid = 1; } $getstart = $sortid - 1; $row = $dsql->GetOne("SELECT id,typename FROM `#@__arctype` WHERE reid='{$topid}' AND \n ispart<2 AND ishidden<>'1' ORDER BY sortrank asc limit {$getstart},1"); if (!is_array($row)) { return ''; } else { $typeid = $row['id']; } if (trim($innertext) == '') { $innertext = GetSysTemplets('part_autochannel.htm'); } $row = $dsql->GetOne("SELECT id,typedir,isdefault,defaultname,ispart,namerule2,typename,moresite,siteurl,sitepath \n FROM `#@__arctype` WHERE id='{$typeid}' "); if (!is_array($row)) { return ''; } $dtp = new DedeTagParse(); $dtp->SetNameSpace('field', '[', ']'); $dtp->LoadSource($innertext); if (!is_array($dtp->CTags)) { unset($dtp); return ''; } else { $row['typelink'] = GetTypeUrl($row['id'], MfTypedir($row['typedir']), $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['siteurl'], $row['sitepath']); foreach ($dtp->CTags as $tagid => $ctag) { if (isset($row[$ctag->GetName()])) { $dtp->Assign($tagid, $row[$ctag->GetName()]); } } $revalue = $dtp->GetResult(); unset($dtp); return $revalue; } }
function GetFileUrl( $aid,$typeid,$timetag,$title,$ismake=0,$rank=0, $namerule="",$artdir="",$money=0,$aburl=false,$siteurl="") { if($rank!=0||$ismake==-1||$typeid==0||$money>0) //动态文章 { if($GLOBALS['cfg_multi_site']=='Y') { $siteurl = $GLOBALS['cfg_basehost']; } return $siteurl.$GLOBALS['cfg_plus_dir']."/view.php?aid=$aid"; } else { $articleRule = $namerule; $articleDir = MfTypedir($artdir); if($namerule=="") $articleRule = $GLOBALS['cfg_df_namerule']; if($artdir=="") $articleDir = $GLOBALS['cfg_cmspath'].$GLOBALS['cfg_arcdir']; $dtime = GetDateMk($timetag); $articleRule = strtolower($articleRule); list($y,$m,$d) = explode("-",$dtime); $articleRule = str_replace("{typedir}",$articleDir,$articleRule); $articleRule = str_replace("{y}",$y,$articleRule); $articleRule = str_replace("{m}",$m,$articleRule); $articleRule = str_replace("{d}",$d,$articleRule); $articleRule = str_replace("{timestamp}",$timetag,$articleRule); $articleRule = str_replace("{aid}",$aid,$articleRule); $articleRule = str_replace("{cc}",dd2char($m.$d.$aid.$y),$articleRule); if(ereg('{p',$articleRule)){ $articleRule = str_replace("{pinyin}",GetPinyin($title)."_".$aid,$articleRule); $articleRule = str_replace("{py}",GetPinyin($title,1)."_".$aid,$articleRule); } $articleUrl = "/".ereg_replace("^/","",$articleRule); //是否强制使用绝对网址 if($aburl && $GLOBALS['cfg_multi_site']=='Y'){ if($siteurl=="") $siteurl = $GLOBALS["cfg_basehost"]; $articleUrl = $siteurl.$articleUrl; } return $articleUrl; } }
function LogicListAllSunType($id, $maptype) { $fid = $id; $mapString = ""; if ($maptype == "rss") { $this->dsql->SetQuery("Select id,typedir,isdefault,defaultname,typename,ispart,namerule2,moresite,siteurl,sitepath From #@__arctype where reid='" . $id . "' And ishidden<>1 And ispart<>2 order by sortrank"); } else { $this->dsql->SetQuery("Select id,typedir,isdefault,defaultname,typename,ispart,namerule2,moresite,siteurl,sitepath From #@__arctype where reid='" . $id . "' And ishidden<>1 order by sortrank"); } $this->dsql->Execute($fid); while ($row = $this->dsql->GetObject($fid)) { if ($maptype == "site") { $typelink = GetTypeUrl($row->id, MfTypedir($row->typedir), $row->isdefault, $row->defaultname, $row->ispart, $row->namerule2, $row->moresite, $row->siteurl, $row->sitepath); } else { $typelink = $GLOBALS['cfg_cmsurl'] . "/data/rss/" . $row->id . ".xml"; } $mapString .= "<li><a href='{$typelink}'>" . $row->typename . "</a></li>\n\t\t"; $mapString .= $this->LogicListAllSunType($row->id, $maptype); } return $mapString; }
/** * 获得一个单列的文档列表 * * @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 表格宽度 * @param string $ismake 是否编译 * @param string $orderWay 排序方式 * @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", $ismake = 1, $orderWay = 'desc') { global $cfg_list_son, $cfg_digg_update; $typeid = $this->TypeID; if ($row == '') { $row = 10; } if ($limitstart == '') { $limitstart = 0; } if ($titlelen == '') { $titlelen = 100; } if ($infolen == '') { $infolen = 250; } if ($imgwidth == '') { $imgwidth = 120; } if ($imgheight == '') { $imgheight = 120; } if ($listtype == '') { $listtype = 'all'; } if ($orderWay == '') { $orderWay = 'desc'; } 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('list_fulllist.htm'); } //排序方式 $ordersql = ''; if ($orderby == "senddate" || $orderby == "id") { $ordersql = " ORDER BY arc.id {$orderWay}"; } else { if ($orderby == "hot" || $orderby == "click") { $ordersql = " ORDER BY arc.click {$orderWay}"; } else { if ($orderby == "lastpost") { $ordersql = " ORDER BY arc.lastpost {$orderWay}"; } else { $ordersql = " ORDER BY arc.sortrank {$orderWay}"; } } } //获得附加表的相关信息 $addtable = $this->ChannelUnit->ChannelInfos['addtable']; if ($addtable != "") { $addJoin = " LEFT JOIN `{$addtable}` ON arc.id = " . $addtable . '.aid '; $addField = ''; $fields = explode(',', $this->ChannelUnit->ChannelInfos['listfields']); foreach ($fields as $k => $v) { $nfields[$v] = $k; } if (is_array($this->ChannelUnit->ChannelFields) && !empty($this->ChannelUnit->ChannelFields)) { foreach ($this->ChannelUnit->ChannelFields as $k => $arr) { if (isset($nfields[$k])) { if (!empty($arr['rename'])) { $addField .= ',' . $addtable . '.' . $k . ' as ' . $arr['rename']; } else { $addField .= ',' . $addtable . '.' . $k; } } } } } else { $addField = ''; $addJoin = ''; } //如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢) if (preg_match('/hot|click|lastpost/', $orderby)) { $query = "SELECT arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,\n tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\n {$addField}\n FROM `#@__archives` arc\n LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\n {$addJoin}\n WHERE {$this->addSql} {$ordersql} LIMIT {$limitstart},{$row}"; } else { $t1 = ExecTime(); $ids = array(); $query = "SELECT id FROM `#@__arctiny` arc WHERE {$this->addSql} {$ordersql} LIMIT {$limitstart},{$row} "; $this->dsql->SetQuery($query); $this->dsql->Execute(); while ($arr = $this->dsql->GetArray()) { $ids[] = $arr['id']; } $idstr = join(',', $ids); if ($idstr == '') { return ''; } else { $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,\n tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\n {$addField}\n FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\n {$addJoin}\n WHERE arc.id in({$idstr}) {$ordersql} "; } $t2 = ExecTime(); //echo $t2-$t1; } $this->dsql->SetQuery($query); $this->dsql->Execute('al'); $t2 = ExecTime(); //echo $t2-$t1; $artlist = ''; $this->dtp2->LoadSource($innertext); $GLOBALS['autoindex'] = 0; for ($i = 0; $i < $row; $i++) { if ($col > 1) { $artlist .= "<div>\r\n"; } for ($j = 0; $j < $col; $j++) { if ($row = $this->dsql->GetArray("al")) { $GLOBALS['autoindex']++; $ids[$row['id']] = $row['id']; //处理一些特殊字段 $row['infos'] = cn_substr($row['description'], $infolen); $row['id'] = $row['id']; if ($cfg_digg_update > 0) { $prefix = 'diggCache'; $key = 'aid-' . $row['id']; $cacherow = GetCache($prefix, $key); $row['goodpost'] = $cacherow['goodpost']; $row['badpost'] = $cacherow['badpost']; $row['scores'] = $cacherow['scores']; } if ($row['corank'] > 0 && $row['arcrank'] == 0) { $row['arcrank'] = $row['corank']; } $row['filename'] = $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'], MfTypedir($row['typedir']), $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['moresite'], $row['siteurl'], $row['sitepath']); if ($row['litpic'] == '-' || $row['litpic'] == '') { $row['litpic'] = $GLOBALS['cfg_cmspath'] . '/images/defaultpic.gif'; } if (!preg_match("/^http:\\/\\//i", $row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y') { $row['litpic'] = $GLOBALS['cfg_mainsite'] . $row['litpic']; } $row['picname'] = $row['litpic']; $row['stime'] = GetDateMK($row['pubdate']); $row['typelink'] = "<a href='" . $row['typeurl'] . "'>" . $row['typename'] . "</a>"; $row['image'] = "<img src='" . $row['picname'] . "' border='0' width='{$imgwidth}' height='{$imgheight}' alt='" . preg_replace("/['><]/", "", $row['title']) . "'>"; $row['imglink'] = "<a href='" . $row['filename'] . "'>" . $row['image'] . "</a>"; $row['fulltitle'] = $row['title']; $row['title'] = cn_substr($row['title'], $titlelen); if ($row['color'] != '') { $row['title'] = "<font color='" . $row['color'] . "'>" . $row['title'] . "</font>"; } if (preg_match('/c/', $row['flag'])) { $row['title'] = "<b>" . $row['title'] . "</b>"; } $row['textlink'] = "<a href='" . $row['filename'] . "'>" . $row['title'] . "</a>"; $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl']; $row['memberurl'] = $GLOBALS['cfg_memberurl']; $row['templeturl'] = $GLOBALS['cfg_templeturl']; //编译附加表里的数据 foreach ($row as $k => $v) { $row[strtolower($k)] = $v; } foreach ($this->ChannelUnit->ChannelFields as $k => $arr) { if (isset($row[$k])) { $row[$k] = $this->ChannelUnit->MakeField($k, $row[$k]); } } if (is_array($this->dtp2->CTags)) { foreach ($this->dtp2->CTags as $k => $ctag) { if ($ctag->GetName() == 'array') { //传递整个数组,在runphp模式中有特殊作用 $this->dtp2->Assign($k, $row); } else { if (isset($row[$ctag->GetName()])) { $this->dtp2->Assign($k, $row[$ctag->GetName()]); } else { $this->dtp2->Assign($k, ''); } } } } $artlist .= $this->dtp2->GetResult(); } //if hasRow } //Loop Col if ($col > 1) { $i += $col - 1; $artlist .= " </div>\r\n"; } } //Loop Line $t3 = ExecTime(); //echo ($t3-$t2); $this->dsql->FreeResult('al'); return $artlist; }
function GetListUrl($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2) { return GetTypeUrl($typeid,MfTypedir($typedir),$isdefault,$defaultname,$ispart,$namerule2); }
/** * 获得最差或最好的踩踩文章 * * @param array $atts * @param object $refObj * @param array $fields * @return array */ function GetSortArc($atts, $refObj = '', $fields = array()) { $arcrow = empty($atts['row']) ? 12 : $atts['row']; $order = empty($atts['order']) ? 'scores' : $atts['order']; $orderway = empty($atts['orderway']) ? 'desc' : $atts['orderway']; if (empty($arcrow)) { $arcrow = 12; } $query = "SELECT arc.*,tp.typedir,tp.typename,\n tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\n FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp ON tp.id = arc.typeid\n WHERE arc.arcrank>-1 ORDER BY arc.{$order} {$orderway} LIMIT 0,{$arcrow} "; $rsArray = array(); $cacheFile = DEDEDATA . '/cache/caicai_' . md5($query) . '.inc'; $needCache = false; if (file_exists($cacheFile) && filemtime($cacheFile) - time() < $this->arcCacheTime) { $fp = fopen($cacheFile, 'r'); $ids = fread($fp, filesize($cacheFile)); fclose($fp); $ids = trim($ids); if (!empty($ids)) { $query = "SELECT arc.*,tp.typedir,tp.typename,\n tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\n FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid\n WHERE arc.id in({$ids}) ORDER BY arc.{$order} {$orderway} "; } } else { $needCache = true; } $ids = array(); $i = 0; $this->dsql->Execute('cai', $query); while ($arr = $this->dsql->GetArray('cai')) { $i++; $ids[] = $arr['id']; $arr['filename'] = $arr['arcurl'] = GetFileUrl($arr['id'], $arr['typeid'], $arr['senddate'], $arr['title'], $arr['ismake'], $arr['arcrank'], $arr['namerule'], $arr['typedir'], $arr['money'], $arr['filename'], $arr['moresite'], $arr['siteurl'], $arr['sitepath']); $arr['typeurl'] = GetTypeUrl($arr['typeid'], MfTypedir($arr['typedir']), $arr['isdefault'], $arr['defaultname'], $arr['ispart'], $arr['namerule2'], $arr['moresite'], $arr['siteurl'], $arr['sitepath']); if ($arr['litpic'] == '') { $arr['litpic'] = '/images/defaultpic.gif'; } if (!preg_match("#^http:\\/\\/#", $arr['litpic'])) { $arr['picname'] = $arr['litpic'] = $GLOBALS['cfg_cmsurl'] . $arr['litpic']; } else { $arr['picname'] = $arr['litpic'] = $arr['litpic']; } $rsArray[$i] = $arr; } $this->dsql->FreeResult('cai'); //写入缓存 if ($needCache && count($ids) > 0) { $idsstr = join(',', $ids); file_put_contents($cacheFile, $idsstr); // $fp = fopen($cacheFile, 'w'); // fwrite($fp, $idsstr); // fclose($fp); } return $rsArray; }
function GetOneTypeUrl($typeinfos) { if (defined('DEDEMOB')) { return 'list.php?tid=' . $typeinfos['id']; } else { return GetTypeUrl($typeinfos['id'], MfTypedir($typeinfos['typedir']), $typeinfos['isdefault'], $typeinfos['defaultname'], $typeinfos['ispart'], $typeinfos['namerule2'], $typeinfos['moresite'], $typeinfos['siteurl'], $typeinfos['sitepath']); } }
/** * 获取某栏目的url * * @param array $typeinfos 栏目信息 * @return string */ function GetOneTypeUrlA($typeinfos) { return GetTypeUrl($typeinfos['id'], MfTypedir($typeinfos['typedir']), $typeinfos['isdefault'], $typeinfos['defaultname'], $typeinfos['ispart'], $typeinfos['namerule2'], $typeinfos['moresite'], $typeinfos['siteurl'], $typeinfos['sitepath']); }
} } if ($pageno == 0 && $mkpage == 1) { $dsql->ExecuteNoneQuery("Delete From `#@__arccache` "); } $reurl = ''; //更新数组所记录的栏目 if (!empty($tid)) { if (!isset($cfg_Cs[$tid])) { showmsg('没有该栏目数据, 可能缓存文件(/data/cache/inc_catalog_base.inc)没有更新, 请检查是否有写入权限'); exit; } if ($cfg_Cs[$tid][1] > 0) { require_once DEDEINC . "/arc.listview.class.php"; $lv = new ListView($tid); $position = MfTypedir($lv->Fields['typedir']); } else { require_once DEDEINC . "/arc.sglistview.class.php"; $lv = new SgListView($tid); } //$lv->CountRecord(); if ($lv->TypeLink->TypeInfos['ispart'] == 0 && $lv->TypeLink->TypeInfos['isdefault'] != -1) { $ntotalpage = $lv->TotalPage; } else { $ntotalpage = 1; } if ($cfg_remote_site == 'Y' && $isremote == "1") { if ($serviterm != "") { list($servurl, $servuser, $servpwd) = explode(',', $serviterm); $config = array('hostname' => $servurl, 'username' => $servuser, 'password' => $servpwd, 'debug' => 'TRUE'); } else {
/** * 获得一个单列的文档列表 * * @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 表格宽度 * @param string $ismake 是否编译 * @param string $orderWay 排序方式 * @return string */ function GetArcList($limitstart = 0, $row = 10, $col = 1, $titlelen = 30, $listtype = "all", $orderby = "default", $innertext = "", $tablewidth = "100", $ismake = 1, $orderWay = 'desc') { global $cfg_list_son; $typeid = $this->TypeID; if ($row == '') { $row = 10; } if ($limitstart == '') { $limitstart = 0; } if ($titlelen == '') { $titlelen = 100; } if ($listtype == '') { $listtype = "all"; } if ($orderby == '') { $orderby = 'id'; } else { $orderby = strtolower($orderby); } if ($orderWay == '') { $orderWay = 'desc'; } $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('list_sglist.htm'); } //排序方式 $ordersql = ''; if ($orderby == 'senddate' || $orderby == 'id') { $ordersql = " ORDER BY arc.aid {$orderWay}"; } else { if ($orderby == 'hot' || $orderby == 'click') { $ordersql = " ORDER BY arc.click {$orderWay}"; } else { $ordersql = " ORDER BY arc.aid {$orderWay}"; } } $addField = 'arc.' . join(',arc.', $this->ListFields); //如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢) if (preg_match('/hot|click/', $orderby) || $this->sAddTable) { $query = "SELECT tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,\n tp.ispart,tp.moresite,tp.siteurl,tp.sitepath,arc.aid,arc.aid AS id,arc.typeid,\n {$addField}\n FROM `{$this->AddTable}` arc\n LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\n WHERE {$this->addSql} {$ordersql} LIMIT {$limitstart},{$row}"; } else { $t1 = ExecTime(); $ids = array(); $nordersql = str_replace('.aid', '.id', $ordersql); $query = "SELECT id From `#@__arctiny` arc WHERE {$this->addSql} {$nordersql} LIMIT {$limitstart},{$row} "; $this->dsql->SetQuery($query); $this->dsql->Execute(); while ($arr = $this->dsql->GetArray()) { $ids[] = $arr['id']; } $idstr = join(',', $ids); if ($idstr == '') { return ''; } else { $query = "SELECT tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,\n tp.ispart,tp.moresite,tp.siteurl,tp.sitepath,arc.aid,arc.aid AS id,arc.typeid,\n {$addField}\n FROM `{$this->AddTable}` arc LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id\n WHERE arc.aid IN({$idstr}) AND arc.arcrank >-1 {$ordersql} "; } $t2 = ExecTime(); //echo $t2-$t1; } $this->dsql->SetQuery($query); $this->dsql->Execute('al'); $t2 = ExecTime(); //echo $t2-$t1; $artlist = ''; $this->dtp2->LoadSource($innertext); $GLOBALS['autoindex'] = 0; for ($i = 0; $i < $row; $i++) { if ($col > 1) { $artlist .= "<div>\r\n"; } for ($j = 0; $j < $col; $j++) { if ($row = $this->dsql->GetArray("al")) { $GLOBALS['autoindex']++; $ids[$row['aid']] = $row['id'] = $row['aid']; //处理一些特殊字段 $row['ismake'] = 1; $row['money'] = 0; $row['arcrank'] = 0; $row['filename'] = ''; $row['filename'] = $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'], MfTypedir($row['typedir']), $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['moresite'], $row['siteurl'], $row['sitepath']); if ($row['litpic'] == '-' || $row['litpic'] == '') { $row['litpic'] = $GLOBALS['cfg_cmspath'] . '/images/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['pubdate'] = $row['senddate']; $row['stime'] = GetDateMK($row['pubdate']); $row['typelink'] = "<a href='" . $row['typeurl'] . "'>" . $row['typename'] . "</a>"; $row['fulltitle'] = $row['title']; $row['title'] = cn_substr($row['title'], $titlelen); if (preg_match('/b/', $row['flag'])) { $row['title'] = "<b>" . $row['title'] . "</b>"; } $row['textlink'] = "<a href='" . $row['filename'] . "'>" . $row['title'] . "</a>"; $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl']; $row['memberurl'] = $GLOBALS['cfg_memberurl']; $row['templeturl'] = $GLOBALS['cfg_templeturl']; //编译附加表里的数据 foreach ($row as $k => $v) { $row[strtolower($k)] = $v; } foreach ($this->ChannelUnit->ChannelFields as $k => $arr) { if (isset($row[$k])) { $row[$k] = $this->ChannelUnit->MakeField($k, $row[$k]); } } if (is_array($this->dtp2->CTags)) { foreach ($this->dtp2->CTags as $k => $ctag) { if ($ctag->GetName() == 'array') { //传递整个数组,在runphp模式中有特殊作用 $this->dtp2->Assign($k, $row); } else { if (isset($row[$ctag->GetName()])) { $this->dtp2->Assign($k, $row[$ctag->GetName()]); } else { $this->dtp2->Assign($k, ''); } } } } $artlist .= $this->dtp2->GetResult(); } //if hasRow } //Loop Col if ($col > 1) { $i += $col - 1; $artlist .= " </div>\r\n"; } } //Loop Line $t3 = ExecTime(); //echo ($t3-$t2); $this->dsql->FreeResult('al'); return $artlist; }
function SpGetArcList($dsql,$typeid=0,$row=10,$col=1,$titlelen=30,$infolen=160, $imgwidth=120,$imgheight=90,$listtype="all",$orderby="default",$keyword="",$innertext="", $tablewidth="100",$arcid=0,$idlist="",$channelid=0,$limit="",$att=0,$order="desc",$subday=0) { global $PubFields; $row = AttDef($row,10); $titlelen = AttDef($titlelen,30); $infolen = AttDef($infolen,160); $imgwidth = AttDef($imgwidth,120); $imgheight = AttDef($imgheight,120); $listtype = AttDef($listtype,"all"); $arcid = AttDef($arcid,0); $channelid = AttDef($channelid,0); $orderby = AttDef($orderby,"default"); $orderWay = AttDef($order,"desc"); $subday = AttDef($subday,0); $line = $row; $orderby=strtolower($orderby); $tablewidth = str_replace("%","",$tablewidth); if($tablewidth=="") $tablewidth=100; if($col=="") $col = 1; $colWidth = ceil(100/$col); $tablewidth = $tablewidth."%"; $colWidth = $colWidth."%"; $keyword = trim($keyword); $innertext = trim($innertext); if($innertext=="") $innertext = GetSysTemplets("part_arclist.htm"); //按不同情况设定SQL条件 排序方式 $orwhere = " arc.arcrank > -1 "; //时间限制(用于调用最近热门文章、热门评论之类) if($subday>0){ $limitday = time() - ($oneday * 24 * 3600); $orwhere .= " And arc.senddate > $limitday "; } //文档的自定义属性 if($att!="") $orwhere .= "And arcatt='$att' "; //文档的频道模型 if($channelid>0 && !eregi("spec",$listtype)) $orwhere .= " And arc.channel = '$channelid' "; //是否为推荐文档 if(eregi("commend",$listtype)) $orwhere .= " And arc.iscommend > 10 "; //是否为带缩略图图片文档 if(eregi("image",$listtype)) $orwhere .= " And arc.litpic <> '' "; //是否为专题文档 if(eregi("spec",$listtype) || $channelid==-1) $orwhere .= " And arc.channel = -1 "; //是否指定相近ID if($arcid!=0) $orwhere .= " And arc.ID<>'$arcid' "; //文档排序的方式 $ordersql = ""; if($orderby=="hot"||$orderby=="click") $ordersql = " order by arc.click $orderWay"; else if($orderby=="pubdate") $ordersq = " order by arc.pubdate $orderWay"; else if($orderby=="sortrank") $ordersq = " order by arc.sortrank $orderWay"; else if($orderby=="id") $ordersql = " order by arc.ID $orderWay"; else if($orderby=="near") $ordersql = " order by ABS(arc.ID - ".$arcid.")"; else if($orderby=="lastpost") $ordersql = " order by arc.lastpost $orderWay"; else if($orderby=="postnum") $ordersql = " order by arc.postnum $orderWay"; else $ordersql=" order by arc.senddate $orderWay"; //类别ID的条件,如果用 "," 分开,可以指定特定类目 //------------------------------ if($typeid!=0) { $reids = explode(",",$typeid); $ridnum = count($reids); if($ridnum>1){ $tpsql = ""; for($i=0;$i<$ridnum;$i++){ if($tpsql=="") $tpsql .= " And (".TypeGetSunID($reids[$i],$dsql,'arc'); else $tpsql .= " Or ".TypeGetSunID($reids[$i],$dsql,'arc'); } $tpsql .= ") "; $orwhere .= $tpsql; unset($tpsql); } else{ $orwhere .= " And ".TypeGetSunID($typeid,$dsql,'arc'); } unset($reids); } //指定的文档ID列表 //---------------------------------- if($idlist!="") { $reids = explode(",",$idlist); $ridnum = count($reids); $idlistSql = ""; for($i=0;$i<$ridnum;$i++){ if($idlistSql=="") $idlistSql .= " And ( arc.ID='".$reids[$i]."' "; else $idlistSql .= " Or arc.ID='".$reids[$i]."' "; } $idlistSql .= ") "; $orwhere .= $idlistSql; unset($idlistSql); unset($reids); $row = $ridnum; } //关键字条件 if($keyword!="") { $keywords = explode(",",$keyword); $ridnum = count($keywords); $orwhere .= " And (arc.keywords like '%".trim($keywords[0])." %' "; for($i=1;$i<$ridnum;$i++){ if($keywords[$i]!="") $orwhere .= " Or arc.keywords like '%".trim($keywords[$i])." %' "; } $orwhere .= ")"; unset($keywords); } $limit = trim(eregi_replace("limit","",$limit)); if($limit!="") $limitsql = " limit $limit "; else $limitsql = " limit 0,$line "; ////////////// $query = "Select arc.ID,arc.title,arc.iscommend,arc.color,arc.typeid,arc.ismake, arc.description,arc.pubdate,arc.senddate,arc.arcrank,arc.click,arc.money, arc.litpic,tp.typedir,tp.typename,tp.isdefault, tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl from #@__archives arc left join #@__arctype tp on arc.typeid=tp.ID where $orwhere $ordersql $limitsql"; $dsql->SetQuery($query); $dsql->Execute("al"); $artlist = ""; if($col>1) $artlist = "<table width='$tablewidth' border='0' cellspacing='0' cellpadding='0'>\r\n"; $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace("field","[","]"); $dtp2->LoadString($innertext); $GLOBALS['autoindex'] = 0; for($i=0;$i<$line;$i++) { if($col>1) $artlist .= "<tr>\r\n"; for($j=0;$j<$col;$j++) { if($col>1) $artlist .= " <td width='$colWidth'>\r\n"; if($row = $dsql->GetArray("al")) { //处理一些特殊字段 $row['description'] = cn_substr($row['description'],$infolen); $row['id'] = $row['ID']; file_put_contents("c:/ttt.txt",$row['id']); if($row['litpic']=="") $row['litpic'] = $PubFields['templeturl']."/img/default.gif"; $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'],true,$row['siteurl']); $row['typeurl'] = GetTypeUrl($row['typeid'],MfTypedir($row['typedir']),$row['isdefault'],$row['defaultname'],$row['ispart'],$row['namerule2'],$row['siteurl']); $row['info'] = $row['description']; $row['filename'] = $row['arcurl']; $row['stime'] = GetDateMK($row['pubdate']); $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>"; $row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".ereg_replace("['><]","",$row['title'])."'>"; $row['imglink'] = "<a href='".$row['filename']."'>".$row['image']."</a>"; $row['title'] = cn_substr($row['title'],$titlelen); $row['textlink'] = "<a href='".$row['filename']."'>".$row['title']."</a>"; if($row['color']!="") $row['title'] = "<font color='".$row['color']."'>".$row['title']."</font>"; if($row['iscommend']==5||$row['iscommend']==16) $row['title'] = "<b>".$row['title']."</b>"; $row['phpurl'] = $PubFields['phpurl']; $row['templeturl'] = $PubFields['templeturl']; if(is_array($dtp2->CTags)){ foreach($dtp2->CTags as $k=>$ctag){ if(isset($row[$ctag->GetName()])) $dtp2->Assign($k,$row[$ctag->GetName()]); else $dtp2->Assign($k,""); } $GLOBALS['autoindex']++; } $artlist .= $dtp2->GetResult()."\r\n"; }//if hasRow else{ $artlist .= ""; } if($col>1) $artlist .= " </td>\r\n"; }//Loop Col if($col>1) $i += $col - 1; if($col>1) $artlist .= " </tr>\r\n"; }//Loop Line if($col>1) $artlist .= " </table>\r\n"; $dsql->FreeResult("al"); return $artlist; }
function SpGetFullList(&$dsql,$typeid=0,$channelid=0,$row=10,$titlelen=30,$infolen=160, $keyword='',$innertext='',$idlist='',$limitv='',$ismember=0,$orderby='',$imgwidth=120,$imgheight=120) { global $cfg_maxsearch,$cfg_al_cachetime; $row = AttDef($row,10); $line = $row; $titlelen = AttDef($titlelen,30); $infolen = AttDef($infolen,160); $channelid = AttDef($channelid,0); $ismember = AttDef($ismember,0); $limitv = AttDef($limitv,''); $keyword = trim($keyword); $typeid = AttDef($typeid,''); $innertext = trim($innertext); $imgwidth = AttDef($imgwidth,120); $imgheight = AttDef($imgheight,120); $orderby = trim($orderby); if($innertext=="") $innertext = GetSysTemplets("part_arclist.htm"); if(empty($idlist)) $idlist = ''; else $idlist = ereg_replace("[^,0-9]","",$idlist); $orwhere = ''; $mintime = time() - ($cfg_al_cachetime * 3600); //指定的文档ID列表,通常是专题和相关文章,使用了idlist将不启用后面任何条件 $idlist = trim($idlist); if($idlist!='') { $orwhere .= " arcf.aid in ($idlist) And arcf.arcrank > -1 "; } //没使用idlist才启用这些条件 else { //按不同情况设定SQL条件 排序方式 $orwhere .= " arcf.arcrank > -1 "; //文档的频道模型 if(!empty($channelid)) $orwhere .= " And arcf.channelid = '$channelid' "; //是否为会员文档 if($ismember==1) $orwhere .= " And arcf.memberid>0 "; //指定栏目条件,如果用 "," 分开,可以指定特定类目 if(!empty($typeid) && empty($idlist)) { $reids = explode(",",$typeid); $ridnum = count($reids); if($ridnum>1){ $tpsql = ""; for($i=0;$i<$ridnum;$i++) { $sonids = TypeGetSunID($reids[$i],$dsql,'arc',0,true); $tpsql .= ($tpsql=='' ? $sonids : ','.$sonids); } $tpsql = " And arcf.typeid in ($tpsql) "; $orwhere .= $tpsql; unset($tpsql); }else{ $sonids = TypeGetSunID($typeid,$dsql,'arc',0,true); if(ereg(',',$sonids)) $orwhere .= " And arcf.typeid in ($sonids) "; else $orwhere .= " And arcf.typeid=$sonids "; } unset($reids); } //指定了关键字条件 if($keyword!="") { $keywords = explode(",",$keyword); $ridnum = count($keywords); $rstr = trim($keywords[0]); if($ridnum>4) $ridnum = 4; for($i=1;$i < $ridnum;$i++){ $keywords[$i] = trim($keywords[$i]); if($keywords[$i]!="") $rstr .= "|".$keywords[$i]; } if($rstr!="") $orwhere .= " And CONCAT(arcf.title,arcf.keywords) REGEXP '$rstr' "; unset($keywords); } }//没使用idlist才启用这些条件 //文档排序的方式 $ordersql = ""; if($orderby=='rand') $ordersql = " order by rand()"; else if($orderby=='click'||$orderby=='hot') $ordersql = " order by arcf.click desc"; else if($orderby=='digg') $ordersql = " order by arcf.digg desc"; else if($orderby=='diggtime') $ordersql = " order by arcf.diggtime desc"; else $ordersql=" order by arcf.aid desc"; //返回结果条数 if(!empty($limit)) $limitsql = " limit $limitv "; else $limitsql = " limit 0,$line "; //载入底层模板 $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace("field","[","]"); $dtp2->LoadString($innertext); if(!is_array($dtp2->CTags)) return ''; //执行SQL查询 $query = "Select arcf.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl from `#@__full_search` arcf left join `#@__arctype` tp on arcf.typeid=tp.ID where $orwhere $ordersql $limitsql "; $md5hash = md5($query); $artlist = ''; $ids = ''; $needup = false; if($idlist=='' && $cfg_al_cachetime>0) { $ids = SpGetArclistDateCacheF($dsql,$md5hash); if($ids=='-1') $needup = true; else if($ids!='') { $query = "Select arcf.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl from `#@__full_search` arcf left join `#@__arctype` tp on arcf.typeid=tp.ID where arcf.aid in($ids) $ordersql $limitsql "; }else { return ''; } } $nids = array(); $t1 = ExecTime(); $dsql->SetQuery($query); $dsql->Execute("alf"); $GLOBALS['autoindex'] = 0; while($row = $dsql->GetArray("alf")) { //处理一些特殊字段 $row['description'] = cn_substr($row['addinfos'],$infolen); $nids[] = $row['id'] = $row['aid']; if(!isset($row['picname'])) $row['picname'] = ''; if($row['url']=='') $row['url'] = $GLOBALS['cfg_phpurl'].'/view.php?aid='.$row['aid']; $row['filename'] = $row['arcurl'] = $row['url']; $row['typeurl'] = GetTypeUrl($row['typeid'],MfTypedir($row['typedir']),$row['isdefault'],$row['defaultname'],$row['ispart'],$row['namerule2'],$row['siteurl']); if($row['litpic']=="") $row['litpic'] = $GLOBALS['PubFields']['templeturl']."/img/default.gif"; $row['picname'] = $row['litpic']; if($GLOBALS['cfg_multi_site']=='Y') { if($row['siteurl']=="") $row['siteurl'] = $GLOBALS['cfg_mainsite']; if(!eregi("^http://",$row['picname'])){ $row['litpic'] = $row['siteurl'].$row['litpic']; $row['picname'] = $row['litpic']; } } $row['stime'] = GetDateMK($row['uptime']); $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>"; $row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".ereg_replace("['><]","",$row['title'])."' />"; $row['imglink'] = "<a href='".$row['arcurl']."'>".$row['image']."</a>"; $row['fulltitle'] = $row['title']; $row['title'] = cn_substr($row['title'],$titlelen); $row['textlink'] = "<a href='".$row['arcurl']."'>".$row['title']."</a>"; foreach($dtp2->CTags as $k=>$ctag) { if(isset($row[$ctag->GetName()])){ $dtp2->Assign($k,$row[$ctag->GetName()]); } else $dtp2->Assign($k,''); } $GLOBALS['autoindex']++; $artlist .= $dtp2->GetResult(); }//Loop Line $dsql->FreeResult("alf"); if($needup) { $ids = join(',',$nids); $inquery = "INSERT INTO `#@__arccache_full`(`md5hash`,`uptime`,`cachedata`) VALUES ('".$md5hash."', '".time()."', '$ids'); "; $dsql->ExecuteNoneQuery("Delete From `#@__arccache_full` where md5hash='".$md5hash."' or uptime < $mintime "); $dsql->ExecuteNoneQuery($inquery); } $t2 = ExecTime(); //echo "<hr>".($t2-$t1)." $query<hr>"; return $artlist; }
/** * 获得要创建的文件名称规则 * * @access public * @param int $typeid 栏目ID * @param string $wname * @param string $typedir 栏目目录 * @param string $defaultname 默认名称 * @param string $namerule2 栏目规则 * @return string */ function GetMakeFileRule($typeid, $wname, $typedir, $defaultname, $namerule2) { $typedir = MfTypedir($typedir); if ($wname == 'index') { return $typedir . '/' . $defaultname; } else { $namerule2 = str_replace('{tid}', $typeid, $namerule2); $namerule2 = str_replace('{typedir}', $typedir, $namerule2); return $namerule2; } }
function SpGetArcList(&$dsql,$templets,$typeid=0,$row=10,$col=1,$titlelen=30,$infolen=160, $imgwidth=120,$imgheight=90,$listtype="all",$orderby="default",$keyword="",$innertext="", $tablewidth="100",$arcid=0,$idlist="",$channelid=0,$limitv="",$att="",$order="desc", $subday=0,$ismember=0,$maintable='#@__archives',$ctag='',$isUpCache=true) { global $PubFields,$cfg_keyword_like,$cfg_arc_all,$cfg_needsontype,$cfg_maxsearch,$cfg_al_cachetime; $row = AttDef($row,10); $titlelen = AttDef($titlelen,30); $infolen = AttDef($infolen,160); $imgwidth = AttDef($imgwidth,120); $imgheight = AttDef($imgheight,120); $listtype = AttDef($listtype,"all"); $arcid = AttDef($arcid,0); //$att = AttDef($att,0); $channelid = AttDef($channelid,0); $ismember = AttDef($ismember,0); $orderby = AttDef($orderby,"default"); $orderWay = AttDef($order,"desc"); $maintable = AttDef($maintable,"#@__archives"); $subday = AttDef($subday,0); $line = $row; $orderby=strtolower($orderby); $tablewidth = str_replace("%","",$tablewidth); if($tablewidth=="") $tablewidth=100; if($col=="") $col = 1; $colWidth = ceil(100/$col); $tablewidth = $tablewidth."%"; $colWidth = $colWidth."%"; $keyword = trim($keyword); $innertext = trim($innertext); if($innertext=="") $innertext = GetSysTemplets("part_arclist.htm"); if(!empty($idlist) && ereg("[^0-9,]",$idlist)) $idlist = ''; $mintime = time() - ($cfg_al_cachetime * 3600); $orwhere = ''; //对于文章列表等地方的调用,限定为最新文档 $idlist = ereg_replace("[^,0-9]","",$idlist); if($idlist!='') $orwhere .= " arc.ID in ($idlist) And "; $t1 = ExecTime(); //按不同情况设定SQL条件 排序方式 $orwhere .= " arc.arcrank > -1 "; $addField = ""; $addJoin = ""; $channelinfos = ''; //获取主表 if(eregi('spec',$listtype)) $channelid = -1; if(!empty($typeid)) $reids = explode(',',$typeid); if(!empty($channelid)) { $channelinfos = $dsql->GetOne("Select ID,maintable,addtable,listadd From `#@__channeltype` where ID='$channelid' "); $maintable = $channelinfos['maintable']; }else if(!empty($typeid)) { $channelinfos = $dsql->GetOne("select c.ID,c.maintable,c.addtable,c.listadd from `#@__arctype` a left join #@__channeltype c on c.ID=a.channeltype where a.ID='".$reids[0]."' "); if(is_array($channelinfos)) { $maintable = $channelinfos['maintable']; $channelid = $channelinfos['ID']; } } if(trim($maintable)=='') $maintable = "#@__archives"; //时间限制(用于调用最近热门文章、热门评论之类) if($subday>0){ $limitvday = time() - ($subday * 24 * 3600); $orwhere .= " And arc.senddate > $limitvday "; } //文档的自定义属性 if($att!="") $orwhere .= " And arc.arcatt='$att' "; //文档的频道模型 if(!empty($channelid) && !eregi("spec",$listtype)) $orwhere .= " And arc.channel = '$channelid' "; //echo $orwhere.$channelid ; //是否为推荐文档 if(eregi("commend",$listtype)) $orwhere .= " And arc.iscommend > 10 "; //是否为带缩略图图片文档 if(eregi("image",$listtype)) $orwhere .= " And arc.litpic <> '' "; //是否为专题文档 if(eregi("spec",$listtype) || $channelid==-1) $orwhere .= " And arc.channel = -1 "; //是否指定相近ID if($arcid!=0) $orwhere .= " And arc.ID<>'$arcid' "; //是否为会员文档 if($ismember==1) $orwhere .= " And arc.memberid>0 "; if($cfg_keyword_like=='N'){ $keyword=""; } //类别ID的条件,如果用 "," 分开,可以指定特定类目 //------------------------------ if(!empty($typeid)) { $ridnum = count($reids); if($ridnum>1) { $sonids = ''; for($i=0;$i<$ridnum;$i++){ $sonids .= ($sonids=='' ? TypeGetSunID($reids[$i],$dsql,'arc',0,true) : ','.TypeGetSunID($reids[$i],$dsql,'arc',0,true)); } $orwhere .= " And arc.typeid in ($sonids) "; }else{ $sonids = TypeGetSunID($typeid,$dsql,'arc',0,true); $orwhere .= " And arc.typeid in ($sonids) "; } unset($reids); } //关键字条件 if($keyword!='') { $keywords = explode(",",$keyword); $ridnum = count($keywords); $rstr = trim($keywords[0]); if($ridnum>4) $ridnum = 4; for($i=0;$i<$ridnum;$i++){ $keywords[$i] = trim($keywords[$i]); if($keywords[$i]!="") $rstr .= "|".$keywords[$i]; } if($rstr!="") $orwhere .= " And CONCAT(arc.title,arc.keywords) REGEXP '$rstr' "; unset($keywords); } //获得附加表的相关信息 //----------------------------- if(is_array($channelinfos)) { $channelinfos['listadd'] = trim($channelinfos['listadd']); if($cfg_arc_all=='Y' && is_array($channelinfos) && $channelinfos['listadd']!='') { $addField = ''; $fields = explode(',',$channelinfos['listadd']); foreach($fields as $v) $addField .= ",addt.{$v}"; if($addField!='') $addJoin = " left join `{$channelinfos['addtable']}` addt on addt.aid = arc.ID "; } } //文档排序的方式 $ordersql = ""; if($orderby=='hot'||$orderby=='click') $ordersql = " order by arc.click $orderWay"; else if($orderby=='pubdate') $ordersql = " order by arc.pubdate $orderWay"; else if($orderby=='sortrank') $ordersql = " order by arc.sortrank $orderWay"; else if($orderby=='id') $ordersql = " order by arc.ID $orderWay"; else if($orderby=='near') $ordersql = " order by ABS(arc.ID - ".$arcid.")"; else if($orderby=='lastpost') $ordersql = " order by arc.lastpost $orderWay"; else if($orderby=='postnum') $ordersql = " order by arc.postnum $orderWay"; else if($orderby=='digg') $ordersql = " order by arc.digg $orderWay"; else if($orderby=='diggtime') $ordersql = " order by arc.diggtime $orderWay"; else if($orderby=='rand') $ordersql = " order by rand()"; else $ordersql=" order by arc.ID $orderWay"; if(!empty($limitv)) $limitvsql = " limit $limitv "; else $limitvsql = " limit 0,$line "; ////////////// $query = "Select arc.ID,arc.title,arc.iscommend,arc.color,arc.typeid,arc.channel, arc.ismake,arc.description,arc.pubdate,arc.senddate,arc.arcrank,arc.click,arc.digg,arc.diggtime, arc.money,arc.litpic,arc.writer,arc.shorttitle,arc.memberid,arc.postnum,arc.lastpost, tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl{$addField} from `$maintable` arc left join `#@__arctype` tp on arc.typeid=tp.ID $addJoin where $orwhere $ordersql $limitvsql "; //echo $query; //exit(); $md5hash = md5($query); $ids = ''; $needup = false; if($idlist=='' && $isUpCache && $cfg_al_cachetime>0) { $ids = SpGetArclistDateCache($dsql,$md5hash); if($ids=='-1') $needup = true; else if($ids!='') { $query = "Select arc.ID,arc.title,arc.iscommend,arc.color,arc.typeid,arc.channel, arc.ismake,arc.description,arc.pubdate,arc.senddate,arc.arcrank,arc.click,arc.digg,arc.diggtime, arc.money,arc.litpic,arc.writer,arc.shorttitle,arc.memberid,arc.postnum,arc.lastpost, tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl{$addField} from `$maintable` arc left join `#@__arctype` tp on arc.typeid=tp.ID $addJoin where arc.ID in($ids) $ordersql "; }else { return ''; } } $artlist = ""; $dsql->SetQuery($query); $dsql->Execute("al"); $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace("field","[","]"); $dtp2->LoadString($innertext); $nids = array(); if($col>1) $artlist = "<table width='$tablewidth' border='0' cellspacing='0' cellpadding='0'>\r\n"; $GLOBALS['autoindex'] = 0; for($i=0;$i<$line;$i++) { if($col>1) $artlist .= "<tr>\r\n"; for($j=0;$j<$col;$j++) { if($col>1) $artlist .= " <td width='$colWidth'>\r\n"; if($row = $dsql->GetArray("al",MYSQL_ASSOC)) { //处理一些特殊字段 $row['description'] = cn_substr($row['description'],$infolen); $nids[] = $row['id'] = $row['ID']; $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'], $row['title'],$row['ismake'],$row['arcrank'],$row['namerule'], $row['typedir'],$row['money'],true,$row['siteurl']); $row['typeurl'] = GetTypeUrl($row['typeid'],MfTypedir($row['typedir']),$row['isdefault'],$row['defaultname'],$row['ispart'],$row['namerule2'],$row['siteurl']); if($row['litpic']=="") $row['litpic'] = $PubFields['templeturl']."/img/default.gif"; $row['picname'] = $row['litpic']; if($GLOBALS['cfg_multi_site']=='Y'){ if($row['siteurl']=="") $row['siteurl'] = $GLOBALS['cfg_mainsite']; if(!eregi("^http://",$row['picname'])){ $row['litpic'] = $row['siteurl'].$row['litpic']; $row['picname'] = $row['litpic']; } } $row['info'] = $row['description']; $row['filename'] = $row['arcurl']; $row['stime'] = GetDateMK($row['pubdate']); $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>"; $row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".ereg_replace("['><]","",$row['title'])."'>"; $row['imglink'] = "<a href='".$row['filename']."'>".$row['image']."</a>"; $row['title'] = cn_substr($row['title'],$titlelen); $row['textlink'] = "<a href='".$row['filename']."'>".$row['title']."</a>"; if($row['color']!="") $row['title'] = "<font color='".$row['color']."'>".$row['title']."</font>"; if($row['iscommend']==5||$row['iscommend']==16) $row['title'] = "<b>".$row['title']."</b>"; $row['phpurl'] = $PubFields['phpurl']; $row['templeturl'] = $PubFields['templeturl']; foreach($dtp2->CTags as $k=>$ctag){ @$dtp2->Assign($k,$row[$ctag->GetName()]); } $GLOBALS['autoindex']++; $artlist .= $dtp2->GetResult(); }//if hasRow else{ $artlist .= ''; } if($col>1) $artlist .= " </td>\r\n"; }//Loop Col if($col>1) $i += $col - 1; if($col>1) $artlist .= " </tr>\r\n"; }//Loop Line if($col>1) $artlist .= " </table>\r\n"; $dsql->FreeResult("al"); if($needup) { $ids = join(',',$nids); $inquery = "INSERT INTO `#@__arccache`(`md5hash`,`uptime`,`cachedata`) VALUES ('".$md5hash."', '".time()."', '$ids'); "; $dsql->ExecuteNoneQuery("Delete From `#@__arccache` where md5hash='".$md5hash."' or uptime < $mintime "); $dsql->ExecuteNoneQuery($inquery); } $t2 = ExecTime(); //echo ($t2-$t1).$query; //$debug = trim($artlist).'<li>'.($t2-$t1)." $query</li>"; return trim($artlist); }
function GetOneType($typeid,$innertext=""){ $row = $this->dsql->GetOne("Select ID,typedir,isdefault,defaultname,ispart,namerule2,typename,moresite,siterefer,siteurl,sitepath From #@__arctype where ID='$typeid'"); if(!is_array($row)) return ""; if(trim($innertext)=="") $innertext = GetSysTemplets("part_type_list.htm"); $dtp = new DedeTagParse(); $dtp->SetNameSpace("field","[","]"); $dtp->LoadSource($innertext); if(!is_array($dtp->CTags)){ unset($dtp); return ""; } else{ $row['typelink'] = GetTypeUrl($row['ID'],MfTypedir($row['typedir']),$row['isdefault'], $row['defaultname'],$row['ispart'],$row['namerule2'],$row['siteurl']); foreach($dtp->CTags as $tagid=>$ctag){ if(isset($row[$ctag->GetName()])){ $dtp->Assign($tagid,$row[$ctag->GetName()]); } } $revalue = $dtp->GetResult(); unset($dtp); return $revalue; } }