function GetDataList() { $timedd = "未知"; $starttime = ExecTime(); $DataListValue = ""; if($this->totalResult==0){ $query = preg_replace("/^(.*)[\s]from[\s]/is",'Select count(*) as dd From ',$this->sourceSql); $rowdm = $this->dsql->GetOne($query); $this->totalResult = $rowdm['dd']; } $this->sourceSql .= " limit ".(($this->nowPage-1)*$this->pageSize).",".$this->pageSize; $this->dsql->Query('dm',$this->sourceSql); //计算执行时间 $endtime = ExecTime(); $timedd=$endtime-$starttime; $this->queryTime = $timedd; $GLOBALS["limittime"] = $timedd; $GLOBALS["totalrecord"] = $this->totalResult; return $this->dsql; }
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; $t1 = ExecTime(); $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($orderby=="") $orderby="default"; 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_fulllist.htm"); //按不同情况设定SQL条件 $orwhere = $this->addSql; //排序方式 if($orderby=="senddate") $ordersql=" order by arc.senddate $orderWay"; elseif($orderby=="pubdate") $ordersql=" order by arc.pubdate $orderWay"; elseif($orderby=="id") $ordersql=" order by arc.ID $orderWay"; elseif($orderby=="hot"||$orderby=="click") $ordersql = " order by arc.click $orderWay"; elseif($orderby=="lastpost") $ordersql = " order by arc.lastpost $orderWay"; elseif($orderby=="postnum") $ordersql = " order by arc.postnum $orderWay"; elseif($orderby=="digg") $ordersql = " order by arc.digg $orderWay"; elseif($orderby=="diggtime") $ordersql = " order by arc.diggtime $orderWay"; else $ordersql=" order by arc.sortrank $orderWay"; //获得附加表的相关信息 //----------------------------- $addtable = $this->ChannelUnit->ChannelInfos['addtable']; $addfields = trim($this->ChannelUnit->ChannelInfos['listadd']); if($addtable!="" && $addfields!="") { $addJoin = " left join `$addtable` addt on addt.aid = arc.ID "; $addField = ""; $fields = explode(",",$addfields); foreach($fields as $k=>$v){ $addField .= ",addt.{$v}"; } }else { $addField = ""; $addJoin = ""; } $query = "Select arc.*, tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl $addField from `{$this->maintable}` arc left join #@__arctype tp on arc.typeid=tp.ID $addJoin where $orwhere $ordersql limit $limitstart,$row"; $this->dtp2->LoadSource($innertext); if(!is_array($this->dtp2->CTags)) return ''; $this->dsql->Execute("al",$query); $t2 = ExecTime(); $artlist = ""; if($col>1) $artlist = "<table width='$tablewidth' border='0' cellspacing='0' cellpadding='0'>\r\n"; $GLOBALS['autoindex'] = 0; for($i=0;$i<$row;$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 = $this->dsql->GetArray("al",MYSQL_ASSOC)) { $GLOBALS['autoindex']++; //处理一些特殊字段 //if() $row['id'] = $row['ID']; $row['arcurl'] = $this->GetArcUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],$row['arcrank'],$row['namerule'],$row['typedir'],$row['money']); $row['typeurl'] = $this->GetListUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],$row['namerule2'],"abc"); if($ismake==0 && $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['description'] = cn_substr($row['description'],$infolen); if($row['litpic']=="") $row['litpic'] = $GLOBALS['cfg_plus_dir']."/img/dfpic.gif"; $row['picname'] = $row['litpic']; $row['info'] = $row['description']; $row['filename'] = $row['arcurl']; $row['stime'] = GetDateMK($row['pubdate']); if($this->hasDmCache){ $row['areaidname'] = $row['areaid2name'] = $row['sectoridname'] = $row['sectorid2name'] =$row['smalltypeidname'] = ''; $row['areaidname'] = $this->areas[$row['areaid']]; $row['areaid2name'] = $this->areas[$row['areaid2']]; $row['sectoridname'] = $this->sectors[$row['sectorid']]; $row['sectorid2name'] = $this->sectors[$row['sectorid2']]; $row['smalltypeidname'] = $this->smalltypes[$row['smalltypeid']]; } $row['textlink'] = "<a href='".$row['filename']."' title='".str_replace("'","",$row['title'])."'>".$row['title']."</a>"; if($row['typeid'] != $this->Fields['ID']){ $row['typelink'] = "<a href='".$row['typeurl']."'>[".$row['typename']."]</a>"; }else{ $row['typelink']= ''; } $row['imglink'] = "<a href='".$row['filename']."'><img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".str_replace("'","",$row['title'])."'></a>"; $row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".str_replace("'","",$row['title'])."'>"; $row['phpurl'] = $GLOBALS['cfg_plus_dir']; $row['plusurl'] = $GLOBALS['cfg_plus_dir']; $row['templeturl'] = $GLOBALS['cfg_templets_dir']; $row['memberurl'] = $GLOBALS['cfg_member_dir']; $row['title'] = cn_substr($row['title'],$titlelen); 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>"; //编译附加表里的数据 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]); } foreach($this->dtp2->CTags as $k=>$ctag){ @$this->dtp2->Assign($k,$row[$ctag->GetName()]); } $artlist .= $this->dtp2->GetResult(); }//if hasRow 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"; $this->dsql->FreeResult("al"); //$t3 = ExecTime(); //echo ($t3-$t2)."<br>"; return $artlist; }
/** * 给块标记赋值 * * @param object $dtp 模板解析引擎 * @param object $refObj 实例化对象 * @param object $parfield * @return string */ function MakeOneTag(&$dtp, &$refObj, $parfield = 'Y') { global $cfg_disable_tags; $cfg_disable_tags = isset($cfg_disable_tags) ? $cfg_disable_tags : 'php'; $disable_tags = explode(',', $cfg_disable_tags); $alltags = array(); $dtp->setRefObj($refObj); //读取自由调用tag列表 $dh = dir(DEDEINC . '/taglib'); while ($filename = $dh->read()) { if (preg_match("/\\.lib\\./", $filename)) { $alltags[] = str_replace('.lib.php', '', $filename); } } $dh->Close(); //遍历tag元素 if (!is_array($dtp->CTags)) { return ''; } foreach ($dtp->CTags as $tagid => $ctag) { $tagname = $ctag->GetName(); if ($tagname == 'field' && $parfield == 'Y') { $vname = $ctag->GetAtt('name'); if ($vname == 'array' && isset($refObj->Fields)) { $dtp->Assign($tagid, $refObj->Fields); } else { if (isset($refObj->Fields[$vname])) { $dtp->Assign($tagid, $refObj->Fields[$vname]); } else { if ($ctag->GetAtt('noteid') != '') { if (isset($refObj->Fields[$vname . '_' . $ctag->GetAtt('noteid')])) { $dtp->Assign($tagid, $refObj->Fields[$vname . '_' . $ctag->GetAtt('noteid')]); } } } } continue; } //由于考虑兼容性,原来文章调用使用的标记别名统一保留,这些标记实际调用的解析文件为inc_arclist.php if (preg_match("/^(artlist|likeart|hotart|imglist|imginfolist|coolart|specart|autolist)\$/", $tagname)) { $tagname = 'arclist'; } if ($tagname == 'friendlink') { $tagname = 'flink'; } if (in_array($tagname, $alltags)) { if (in_array($tagname, $disable_tags)) { if (DEBUG_LEVEL) { echo 'DedeCMS Error:Tag disabled:"' . $tagname . '" <a href="http://help.dedecms.com/install-use/apply/2013/0711/2324.html" target="_blank">more...</a>!'; } continue; } if (DEBUG_LEVEL == TRUE) { $ttt1 = ExecTime(); } $filename = DEDEINC . '/taglib/' . $tagname . '.lib.php'; include_once $filename; $funcname = 'lib_' . $tagname; $dtp->Assign($tagid, $funcname($ctag, $refObj)); if (DEBUG_LEVEL == TRUE) { $queryTime = ExecTime() - $ttt1; echo '标签:' . $tagname . '载入花费时间:' . $queryTime . "<br />\r\n"; } } } }
function __construct($aid) { global $PubFields; $t1 = ExecTime(); $this->IsError = false; $this->dsql = new DedeSql(false); $this->ArcID = $aid; $this->MemberInfos = array(); $this->PreNext = array(); $this->TempletsFile = ''; $this->MainTable = ''; $this->fullurl = ''; //获取文档表信息 $fullsearchs = $this->dsql->GetOne("select c.ID as channelid,c.maintable,c.addtable,a.keywords,a.url from `#@__full_search` a left join #@__channeltype c on c.ID = a.channelid where a.aid='$aid'",MYSQL_ASSOC); if($fullsearchs['channelid']==-1) { $this->MainTable = '#@__archivesspec'; $this->AddTable = '#@__addonspec'; }else { if($fullsearchs['maintable']=='') $fullsearchs['maintable']='#@__archives'; $this->MainTable = $fullsearchs['maintable']; $this->AddTable = $fullsearchs['addtable']; } $query = "Select arc.*,sm.name as smalltypename,tp.reID,tp.typedir,tp.typename,am.uname from `{$this->MainTable}` arc left join #@__arctype tp on tp.ID=arc.typeid left join #@__smalltypes sm on sm.id=arc.smalltypeid left join #@__admin am on arc.adminID = am.ID where arc.ID='$aid'"; $row = $this->dsql->GetOne($query,MYSQL_ASSOC); //无法获取记录 if(!is_array($row)){ $this->IsError = true; return; } //把主表记录转换为Field foreach($row as $k=>$v) $this->Fields[$k] = $v; $this->Fields['keywords'] = $fullsearchs['keywords']; $this->fullurl = $fullsearchs['url']; unset($row); unset($fullsearchs); if($this->Fields['redirecturl']!="") return; //模板引擎与页面环境初始化 $this->ChannelUnit = new ChannelUnit($this->Fields['channel'],$aid); $this->TypeLink = new TypeLink($this->Fields['typeid']); $this->dtp = new DedeTagParse(); $this->SplitPageField = $this->ChannelUnit->SplitPageField; $this->SplitFields = ""; $this->TotalPage = 1; $this->NameFirst = ""; $this->ShortName = "html"; $this->FixedValues = ""; $this->TempSource = ""; $this->PartView = new PartView($this->Fields['typeid']); if(empty($GLOBALS["pageno"])) $this->NowPage = 1; else $this->NowPage = intval($GLOBALS["pageno"]); //特殊的字段Field数据处理 $this->Fields['aid'] = $aid; $this->Fields['id'] = $aid; $this->Fields['position'] = $this->TypeLink->GetPositionLink(true); //设置一些全局参数的值 foreach($PubFields as $k=>$v) $this->Fields[$k] = $v; if($this->Fields['litpic']=="") $this->Fields['litpic'] = $this->Fields["phpurl"]."/img/dfpic.gif"; //读取附加表信息,并把附加表的资料经过编译处理后导入到$this->Fields中,以方便在 //模板中用 {dede:field name='fieldname' /} 标记统一调用 if($this->AddTable!="") { $row = $this->dsql->GetOne("select * from ".trim($this->ChannelUnit->ChannelInfos["addtable"])." where aid=$aid "); if(is_array($row)) foreach($row as $k=>$v){ if(ereg("[A-Z]",$k)) $row[strtolower($k)] = $v; } foreach($this->ChannelUnit->ChannelFields as $k=>$arr) { if(isset($row[$k])) { if($arr["rename"]!="") $nk = $arr["rename"]; else $nk = $k; $this->Fields[$nk] = $this->ChannelUnit->MakeField($k,$row[$k]); if($arr['type']=='htmltext' && $GLOBALS['cfg_keyword_replace']=='Y'){ $this->Fields[$nk] = $this->ReplaceKeyword($this->Fields['keywords'],$this->Fields[$nk]); } } }//End foreach } 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($step != 'me'){ return preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$words, \$hrefs, '\\1', 'me')", $string); } if(is_array($words)){ $string = str_replace('\"', '"', $string); foreach($words as $k => $word){ if(empty($hrefs[$k])){ $string = preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$word, '', '\\1', 'me')", $string); }else{ $string = preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$word, \$hrefs[\$k], '\\1', 'me')", $string); } } return $pretext.$string; }else{ if($hrefs == ''){ $string = str_replace($words,'<strong><font color="#ff0000">'.$words.'</font></strong>',$string); }else{ if(strpos($string, $words) !== false){ $string = str_replace($words, '<a href="'.$hrefs.'" style="color:#ff0000;font-weight:bold;">'.$words.'</a>', $string); } } return $pretext.$string; } } $startRunMe = ExecTime(); ?>
$mkimg->Cut($cfg_basedir.$litpic,$imgwidth,$imgheight); break; case 4: $mkimg->BackFill($cfg_basedir.$litpic,$imgwidth,$imgheight,$backcolor1,$backcolor2,$backcolor3); break; } $dsql->ExecuteNoneQuery("update #@__archives set litpic='$litpic' where ID='$ID'"); $dsql->ExecuteNoneQuery("update #@__full_search set litpic='$litpic' where aid='$ID'"); } } //echo "update #@__archives set litpic=$litpic where ID=$ID"; echo $litpic."---ID:".$ID."<BR>"; } } $t2 = ExecTime(); $t2 = ($t2 - $t1); //返回提示信息 if($totalnum>0) $tjlen = ceil( ($tjnum/$totalnum) * 100 ); else $tjlen=100; $dvlen = $tjlen * 2; $tjsta = "<div style='width:200;height:15;border:1px solid #898989;text-align:left'><div style='width:$dvlen;height:15;background-color:#829D83'></div></div>"; $tjsta .= "<br/>本次用时:".number_format($t2,2)." 到达位置:".($startdd+$pagesize)."<br/>完成创建文件总数的:$tjlen %,继续执行任务..."; if($tjnum < $totalnum) { $nurl = "makeminiature_action.php?endid=$endid&startid=$startid&typeid=$typeid"; $nurl .= "&totalnum=$totalnum&startdd=".($startdd+$pagesize)."&pagesize=$pagesize"; $nurl .= "&seltime=$seltime&stime=".urlencode($stime)."&etime=".urlencode($etime); $nurl .="&isall=$isall&maketype=$maketype&imgwidth=$imgwidth&imgheight=$imgheight&backcolor1=$backcolor1&backcolor2=$backcolor2&backcolor3=$backcolor3";
/** * 设定模板文件 * * @access public * @param string $tmpfile 模板文件 * @return void */ function LoadTemplate($tmpfile) { if (!file_exists($tmpfile)) { echo " Template Not Found! "; exit; } $tmpfile = preg_replace("/[\\/]{1,}/", "/", $tmpfile); $tmpfiles = explode('/', $tmpfile); $tmpfileOnlyName = preg_replace("/(.*)\\//", "", $tmpfile); $this->templateFile = $tmpfile; $this->refDir = ''; for ($i = 0; $i < count($tmpfiles) - 1; $i++) { $this->refDir .= $tmpfiles[$i] . '/'; } if (!is_dir($this->cacheDir)) { $this->cacheDir = $this->refDir; } if ($this->cacheDir != '') { $this->cacheDir = $this->cacheDir . '/'; } if (isset($GLOBALS['_DEBUG_CACHE'])) { $this->cacheDir = $this->refDir; } $this->cacheFile = $this->cacheDir . preg_replace("/\\.(wml|html|htm|php)\$/", "_" . $this->GetEncodeStr($tmpfile) . '.inc', $tmpfileOnlyName); $this->configFile = $this->cacheDir . preg_replace("/\\.(wml|html|htm|php)\$/", "_" . $this->GetEncodeStr($tmpfile) . '_config.inc', $tmpfileOnlyName); //不开启缓存、当缓存文件不存在、及模板为更新的文件的时候才载入模板并进行解析 if ($this->isCache == FALSE || !file_exists($this->cacheFile) || filemtime($this->templateFile) > filemtime($this->cacheFile)) { $t1 = ExecTime(); //debug $fp = fopen($this->templateFile, 'r'); $this->sourceString = fread($fp, filesize($this->templateFile)); fclose($fp); $this->ParseTemplate(); //模板解析时间 //echo ExecTime() - $t1; } else { //如果存在config文件,则载入此文件,该文件用于保存 $this->tpCfgs的内容,以供扩展用途 //模板中用{tag:config name='' value=''/}来设定该值 if (file_exists($this->configFile)) { include $this->configFile; } } }
function GetDataList($innertext) { $timedd = "未知"; $starttime = ExecTime(); $DataListValue = ""; if($this->totalResult==0){ $query = preg_replace("/^(.*)[\s]from[\s]/is",'Select count(*) as dd From ',$this->sourceSql); $rowdm = $this->dsql->GetOne($query); $this->totalResult = $rowdm['dd']; } $this->sourceSql .= " limit ".(($this->nowPage-1)*$this->pageSize).",".$this->pageSize; $this->dsql->Query('dms',$this->sourceSql); //计算执行时间 $endtime = $this->ExecTime(); if($starttime!=""&&$endtime!=""){ $timedd=$endtime-$starttime; if($timedd<0) $timedd=$timedd*(-1.0); $timedd=substr($timedd,0,5); } $this->queryTime = $timedd; $GLOBALS["limittime"] = $timedd; $GLOBALS["totalrecord"] = $this->totalResult; //////////////////////////////////////// $dtp2 = new DedeTagParse(); $dtp2->TagStartWord="["; $dtp2->TagEndWord="]"; $dtp2->NameSpace="field"; $dtp2->CharToLow=FALSE; $dtp2->LoadSource($innertext); $fnum = 0; while($GLOBALS["row"] = $this->dsql->GetArray('dms')) { $fnum++; for($i=0;$i<=$dtp2->Count;$i++) { if(isset($GLOBALS["row"][$dtp2->CTags[$i]->TagName])) $dtp2->Assign($i,$GLOBALS["row"][$dtp2->CTags[$i]->TagName]); else $dtp2->Assign($i,""); } $DataListValue .= $dtp2->GetResult(); } $GLOBALS["row"] = ""; return $DataListValue; }
function GetRndName($url,$v) { global $threadnum; $this->MediaCount++; $mnum = $this->MediaCount; $timedir = strftime("%y%m%d",time()); //存放路径 $fullurl = preg_replace("/\/{1,}/","/",$this->Item["imgurl"]."/"); if(!is_dir($GLOBALS['cfg_basedir']."/$fullurl")) MkdirAll($GLOBALS['cfg_basedir']."/$fullurl",$GLOBALS['cfg_dir_purview']); $fullurl = $fullurl.$timedir."/"; if(!is_dir($GLOBALS['cfg_basedir']."/$fullurl")) MkdirAll($GLOBALS['cfg_basedir']."/$fullurl",$GLOBALS['cfg_dir_purview']); //文件名称 $timename = str_replace(".","",ExecTime()); $nthreadnum =(!empty($threadnum) ? $threadnum : 0); $filename = $timename.$nthreadnum.$mnum.mt_rand(1000,9999); //把适合的数字转为字母 $filename = dd2char($filename); //分配扩展名 $urls = explode(".",$url); if($v=="img"){ $shortname = ".jpg"; if(eregi("\.gif\?(.*)$",$url) || eregi("\.gif$",$url)) $shortname = ".gif"; else if(eregi("\.png\?(.*)$",$url) || eregi("\.png$",$url)) $shortname = ".png"; } else if($v=="embed") $shortname = ".swf"; else $shortname = ""; //----------------------------------------- $fullname = $fullurl.$filename.$shortname; return preg_replace("/\/{1,}/","/",$fullname); }
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; $t1 = ExecTime(); $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($orderby=="") $orderby="default"; 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_digglist.htm"); //按不同情况设定SQL条件 $orwhere = " arc.arcrank > -1 "; //排序方式 $ordersql = ""; if($orderby=="digg") $ordersql=" order by arc.digg $orderWay"; else $ordersql=" order by arc.diggtime $orderWay"; $this->dtp2->LoadSource($innertext); if(!is_array($this->dtp2->CTags)) return ''; $query = "Select arc.*, tp.typedir,tp.typename,tp.isdefault,tp.defaultname, tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl from `#@__full_search` arc left join #@__arctype tp on arc.typeid=tp.ID where $orwhere $ordersql limit $limitstart,$row "; $this->dsql->SetQuery($query); $this->dsql->Execute("alf"); //$t2 = ExecTime(); //echo $query."|"; //echo ($t2-$t1)."<br>"; $artlist = ""; $GLOBALS['autoindex'] = 0; while($row = $this->dsql->GetArray("alf")) { //处理一些特殊字段 $row['description'] = cn_substr($row['addinfos'],$infolen); $row['id'] = $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($this->dtp2->CTags as $k=>$ctag) { if(isset($row[$ctag->GetName()])) $this->dtp2->Assign($k,$row[$ctag->GetName()]); else $this->dtp2->Assign($k,''); } $GLOBALS['autoindex']++; $artlist .= $this->dtp2->GetResult(); }//Loop Line $this->dsql->FreeResult("alf"); //$t3 = ExecTime(); //echo ($t3-$t2)."<br>"; 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; }
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 Testlists(&$dourl) { $links = array(); //从RSS中获取网址 if ($this->lists['sourcetype'] == 'rss') { $dourl = $this->lists['rssurl']; $links = GetRssLinks($dourl); return $links; } //正常情况 if (isset($this->lists['url'][0][0])) { $dourl = $this->lists['url'][0][0]; } else { $dourl = ''; $this->errString = "配置中指定列表的网址错误!\r\n"; return $links; } $dhtml = new DedeHtml2(); $html = $this->DownOnePage($dourl); if ($html == '') { $this->errString = "读取网址: {$dourl} 时失败!\r\n"; return $links; } if (trim($this->lists['areastart']) != '' && trim($this->lists['areaend']) != '') { $areabody = $this->lists['areastart'] . '[var:区域]' . $this->lists['areaend']; $html = $this->GetHtmlArea('[var:区域]', $areabody, $html); } $t1 = ExecTime(); $dhtml->SetSource($html, $dourl, 'link'); foreach ($dhtml->Links as $s) { if ($this->lists['nothas'] != '') { if (eregi($this->lists['nothas'], $s['link'])) { continue; } } if ($this->lists['musthas'] != '') { if (!eregi($this->lists['musthas'], $s['link'])) { continue; } } $links[] = $s; } return $links; }
$imagebody = stripslashes($imagebody); $imgurls .= GetCurContentAlbum($imagebody, $copysource, $litpicname); if ($ddisfirst == 1 && $litpic == '' && !empty($litpicname)) { $litpic = $litpicname; $hasone = TRUE; } } /*--------------------- function _getformzip() 处理从ZIP中解压的图片 ---------------------*/ if ($formzip == 1) { include_once DEDEINC . "/zip.class.php"; include_once DEDEADMIN . "/file_class.php"; $zipfile = $cfg_basedir . str_replace($cfg_mainsite, '', $zipfile); $tmpzipdir = DEDEDATA . '/ziptmp/' . cn_substr(md5(ExecTime()), 16); $ntime = time(); if (file_exists($zipfile)) { @mkdir($tmpzipdir, $GLOBALS['cfg_dir_purview']); @chmod($tmpzipdir, $GLOBALS['cfg_dir_purview']); $z = new zip(); $z->ExtractAll($zipfile, $tmpzipdir); $fm = new FileManagement(); $imgs = array(); $fm->GetMatchFiles($tmpzipdir, "jpg|png|gif", $imgs); $i = 0; foreach ($imgs as $imgold) { $i++; $savepath = $cfg_image_dir . "/" . MyDate("Y-m", $ntime); CreateDir($savepath); $iurl = $savepath . "/" . MyDate("d", $ntime) . dd2char(MyDate("His", $ntime) . '-' . $adminid . "-{$i}" . mt_rand(1000, 9999));
/** * 获得一个单列的文档列表 * * @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; }
*/ require_once dirname(__FILE__) . "/config.php"; CheckPurview('sys_module'); require_once dirname(__FILE__) . "/../include/dedemodule.class.php"; require_once dirname(__FILE__) . "/../include/oxwindow.class.php"; if (empty($action)) { $action = ''; } $mdir = DEDEDATA . '/module'; if ($action == 'upload') { if (!is_uploaded_file($upfile)) { ShowMsg("貌似你什么都没有上传哦!", "javascript:;"); exit; } else { include_once dirname(__FILE__) . "/../include/zip.class.php"; $tmpfilename = $mdir . '/' . ExecTime() . mt_rand(10000, 50000) . '.tmp'; move_uploaded_file($upfile, $tmpfilename) or die("把上传的文件移动到{$tmpfilename}时失败,请检查{$mdir}目录是否有写入权限!"); //ZIP格式的文件 if ($filetype == 1) { $z = new zip(); $files = $z->get_List($tmpfilename); $dedefileindex = -1; //为了节省资源,系统仅以.xml作为扩展名识别ZIP包里了dede模块格式文件 if (is_array($files)) { for ($i = 0; $i < count($files); $i++) { if (preg_match("#\\.xml#i", $files[$i]['filename'])) { $dedefile = $files[$i]['filename']; $dedefileindex = $i; break; } }
$imagebody = stripslashes($imagebody); $imgurls .= GetCurContentAlbum($imagebody,$copysource,$litpicname); if($ddisfirst==1 && $litpic=="" && !empty($litpicname)) { $litpic = $litpicname; $hasone = true; } } if($formzip==1) { include_once(DEDEADMIN."/../include/zip.lib.php"); include_once(DEDEADMIN."/file_class.php"); $zipfile = $cfg_basedir.str_replace($cfg_mainsite,'',$zipfile); $tmpzipdir = DEDEADMIN.'/module/ziptmp/'.cn_substr(md5(ExecTime()),16); $ntime = time(); if(file_exists($zipfile)) { @mkdir($tmpzipdir,$GLOBALS['cfg_dir_purview']); @chmod($tmpzipdir,$GLOBALS['cfg_dir_purview']); $z = new zip(); $z->ExtractAll($zipfile,$tmpzipdir); $fm = new FileManagement(); $imgs = array(); $fm->GetMatchFiles($tmpzipdir,"jpg|png|gif",$imgs); $i = 0; foreach($imgs as $imgold) {
function Testlists(&$dourl) { $links = array(); //从RSS中获取网址 if ($this->lists['sourcetype'] == 'rss') { $dourl = $this->lists['rssurl']; $links = GetRssLinks($dourl); return $links; } //正常情况 if (isset($this->lists['url'][0][0])) { $dourl = $this->lists['url'][0][0]; } else { $dourl = ''; $this->errString = "配置中指定列表的网址错误!\r\n"; return $links; } $dhtml = new DedeHtml2(); $html = $this->DownOnePage($dourl); if ($html == '') { $this->errString = "读取网址: {$dourl} 时失败!\r\n"; return $links; } if (trim($this->lists['areastart']) != '' && trim($this->lists['areaend']) != '') { $areabody = $this->lists['areastart'] . '[var:区域]' . $this->lists['areaend']; $html = $this->GetHtmlArea('[var:区域]', $areabody, $html); } $t1 = ExecTime(); $dhtml->SetSource($html, $dourl, 'link'); $this->lists['musthas'] = str_replace('/', '\\/', $this->lists['musthas']); foreach ($dhtml->Links as $s) { if ($this->lists['nothas'] != '') { if (preg_match("#" . $this->lists['nothas'] . "#i", $s['link'])) { continue; } } if ($this->lists['musthas'] != '') { if (strstr($this->lists['musthas'], "|")) { $musthas = explode('|', $this->lists['musthas']); $musthas_a = $musthas[0]; $musthas_b = $musthas[1]; if (!preg_match("#" . $musthas_a . "#i", $s['link'])) { continue; } } else { if (!preg_match("#" . $this->lists['musthas'] . "#i", $s['link'])) { continue; } } if (strstr($musthas_b, ",")) { $musthas_b = str_replace('\\/', '/', $musthas_b); $urlchange = explode(',', $musthas_b); $urlchange_a = str_replace('/', '\\/', $urlchange[0]); $urlchange_a = "/" . $urlchange_a . "/"; $urlchange_b = $urlchange[1]; $s['link'] = preg_replace($urlchange_a, $urlchange_b, $s['link']); } } $links[] = $s; } return $links; }
/** * arclist解析函数 * * @access public * @param object $refObj 引用对象 * @param object $ctag 标签 * @param int $typeid 栏目ID * @param int $row 调用行数 * @param int $titlelen 字符串长度 * @param int $infolen 描述信息长度 * @param int $imgwidth 图片宽度 * @param int $imgheight 图片高度 * @param string $listtype 列表类型 * @param string $orderby 排列顺序 * @param string $keyword 关键词 * @param string $innertext 底层模板 * @param int $arcid 文档ID * @param string $idlist ID列表 * @param int $channelid 频道ID * @param string $limit 限制 * @param string $att 属性 * @param string $order 排序类型 * @param int $subday 天内 * @param string $noflag 属性标记 * @param string $tagid 标签id * @param string $pagesize 显示条数 * @param string $isweight 是否需要对检索出来的内容按照weight排序 * @return string */ function lib_arclistDone(&$refObj, &$ctag, $typeid = 0, $row = 10, $col = 1, $titlelen = 30, $infolen = 160, $imgwidth = 120, $imgheight = 90, $listtype = 'all', $orderby = 'default', $keyword = '', $innertext = '', $arcid = 0, $idlist = '', $channelid = 0, $limit = '', $att = '', $order = 'desc', $subday = 0, $noflag = '', $tagid = '', $pagesize = 0, $isweight = 'N') { global $dsql, $PubFields, $cfg_keyword_like, $cfg_index_cache, $_arclistEnv, $envs, $cfg_cache_type, $cfg_digg_update; $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); $pagesize = AttDef($pagesize, 0); $line = $row; $orderby = strtolower($orderby); $keyword = trim($keyword); $innertext = trim($innertext); $tablewidth = $ctag->GetAtt('tablewidth'); $writer = $ctag->GetAtt('writer'); if ($tablewidth == "") { $tablewidth = 100; } if (empty($col)) { $col = 1; } $colWidth = ceil(100 / $col); $tablewidth = $tablewidth . "%"; $colWidth = $colWidth . "%"; //记录属性,以便分页样式统一调用 $attarray = compact("row", "titlelen", 'infolen', 'imgwidth', 'imgheight', 'listtype', 'arcid', 'channelid', 'orderby', 'orderWay', 'subday', 'pagesize', 'orderby', 'keyword', 'tablewidth', 'col', 'colWidth'); if ($innertext == '') { $innertext = GetSysTemplets('part_arclist.htm'); } if (@$ctag->GetAtt('getall') == 1) { $getall = 1; } else { $getall = 0; } if ($att == '0') { $att = ''; } if ($att == '3') { $att = 'f'; } if ($att == '1') { $att = 'h'; } $orwheres = array(); $maintable = '#@__archives'; //按不同情况设定SQL条件 排序方式 if ($idlist == '') { if ($orderby == 'near' && $cfg_keyword_like == 'N') { $keyword = ''; } if ($writer == 'this') { $wmid = isset($refObj->Fields['mid']) ? $refObj->Fields['mid'] : 0; $orwheres[] = " arc.mid = '{$wmid}' "; } //时间限制(用于调用最近热门文章、热门评论之类),这里的时间只能计算到天,否则缓存功能将无效 if ($subday > 0) { $ntime = gmmktime(0, 0, 0, gmdate('m'), gmdate('d'), gmdate('Y')); $limitday = $ntime - $subday * 24 * 3600; $orwheres[] = " arc.senddate > {$limitday} "; } //关键字条件 if ($keyword != '') { $keyword = str_replace(',', '|', $keyword); $orwheres[] = " CONCAT(arc.title,arc.keywords) REGEXP '{$keyword}' "; } //文档属性 if (preg_match('/commend/i', $listtype)) { $orwheres[] = " FIND_IN_SET('c', arc.flag)>0 "; } if (preg_match('/image/i', $listtype)) { $orwheres[] = " FIND_IN_SET('p', arc.flag)>0 "; } if ($att != '') { $flags = explode(',', $att); for ($i = 0; isset($flags[$i]); $i++) { $orwheres[] = " FIND_IN_SET('{$flags[$i]}', arc.flag)>0 "; } } if (!empty($typeid) && $typeid != 'top') { //指定了多个栏目时,不再获取子类的id if (preg_match('#,#', $typeid)) { //指定了getall属性或主页模板例外 if ($getall == 1 || empty($refObj->Fields['typeid'])) { $typeids = explode(',', $typeid); foreach ($typeids as $ttid) { $typeidss[] = GetSonIds($ttid); } $typeidStr = join(',', $typeidss); $typeidss = explode(',', $typeidStr); $typeidssok = array_unique($typeidss); $typeid = join(',', $typeidssok); } $orwheres[] = " arc.typeid IN ({$typeid}) "; } else { //处理交叉栏目 $CrossID = ''; if ($ctag->GetAtt('cross') == '1') { $arr = $dsql->GetOne("SELECT `id`,`topid`,`cross`,`crossid`,`ispart`,`typename` FROM `#@__arctype` WHERE id='{$typeid}' "); if ($arr['cross'] == 0 || $arr['cross'] == 2 && trim($arr['crossid'] == '')) { $orwheres[] = ' arc.typeid IN (' . GetSonIds($typeid) . ')'; } else { $selquery = ''; if ($arr['cross'] == 1) { $selquery = "SELECT id,topid FROM `#@__arctype` WHERE typename LIKE '{$arr['typename']}' AND id<>'{$typeid}' AND topid<>'{$typeid}' "; } else { $arr['crossid'] = preg_replace('#[^0-9,]#', '', trim($arr['crossid'])); if ($arr['crossid'] != '') { $selquery = "SELECT id,topid FROM `#@__arctype` WHERE id IN('{$arr['crossid']}') AND id<>'{$typeid}' AND topid<>'{$typeid}' "; } } if ($selquery != '') { $dsql->SetQuery($selquery); $dsql->Execute(); while ($arr = $dsql->GetArray()) { $CrossID .= $CrossID == '' ? $arr['id'] : ',' . $arr['id']; } } } } if ($CrossID == '') { $orwheres[] = ' arc.typeid IN (' . GetSonIds($typeid) . ')'; } else { $orwheres[] = ' arc.typeid IN (' . GetSonIds($typeid) . ',' . $CrossID . ')'; } } } //频道ID if (preg_match('#spec#i', $listtype)) { $channelid == -1; } if (!empty($channelid)) { $orwheres[] = " And arc.channel = '{$channelid}' "; } if (!empty($noflag)) { if (!preg_match('#,#', $noflag)) { $orwheres[] = " FIND_IN_SET('{$noflag}', arc.flag)<1 "; } else { $noflags = explode(',', $noflag); foreach ($noflags as $noflag) { if (trim($noflag) == '') { continue; } $orwheres[] = " FIND_IN_SET('{$noflag}', arc.flag)<1 "; } } } $orwheres[] = ' arc.arcrank > -1 '; //由于这个条件会导致缓存功能失去意义,因此取消 //if($arcid!=0) $orwheres[] = " arc.id<>'$arcid' "; } //文档排序的方式 $ordersql = ''; if ($orderby == 'hot' || $orderby == 'click') { $ordersql = " ORDER BY arc.click {$orderWay}"; } else { if ($orderby == 'sortrank' || $orderby == 'pubdate') { $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 == 'scores') { $ordersql = " ORDER BY arc.scores {$orderWay}"; } else { if ($orderby == 'goodpost') { $ordersql = " order by arc.goodpost {$orderWay}"; } else { if ($orderby == 'badpost') { $ordersql = " order by arc.badpost {$orderWay}"; } else { if ($orderby == 'rand') { $ordersql = " ORDER BY rand()"; } else { $ordersql = " ORDER BY arc.sortrank {$orderWay}"; } } } } } } } } } //limit条件 $limit = trim(preg_replace('#limit#is', '', $limit)); if ($limit != '') { $limitsql = " LIMIT {$limit} "; $limitarr = explode(',', $limit); $line = isset($limitarr[1]) ? $limitarr[1] : $line; } else { $limitsql = " LIMIT 0,{$line} "; } $orwhere = ''; if (isset($orwheres[0])) { $orwhere = join(' And ', $orwheres); $orwhere = preg_replace("#^ And#is", '', $orwhere); $orwhere = preg_replace("#And[ ]{1,}And#is", 'And ', $orwhere); } if ($orwhere != '') { $orwhere = " WHERE {$orwhere} "; } //获取附加表信息 $addfield = trim($ctag->GetAtt('addfields')); $addfieldsSql = ''; $addfieldsSqlJoin = ''; if ($addfield != '' && !empty($channelid)) { $row = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='{$channelid}' "); if (isset($row['addtable']) && trim($row['addtable']) != '') { $addtable = trim($row['addtable']); $addfields = explode(',', $addfield); $row['addtable'] = trim($row['addtable']); $addfieldsSql = ",addf." . join(',addf.', $addfields); $addfieldsSqlJoin = " LEFT JOIN `{$addtable}` addf ON addf.aid = arc.id "; } } $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,\r\n tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath\r\n {$addfieldsSql}\r\n FROM `{$maintable}` arc LEFT JOIN `#@__arctype` tp on arc.typeid=tp.id\r\n {$addfieldsSqlJoin}\r\n {$orwhere} {$ordersql} {$limitsql}"; //统一hash $taghash = md5(serialize($ctag) . $typeid); $needSaveCache = true; //进行tagid的默认处理 if ($pagesize > 0) { $tagid = AttDef($tagid, 'tag' . $taghash); } if ($idlist != '' || $GLOBALS['_arclistEnv'] == 'index' || $cfg_index_cache == 0) { $needSaveCache = false; } else { $idlist = GetArclistCache($taghash); if ($idlist != '') { $needSaveCache = false; } //如果使用的是内容缓存,直接返回结果 if ($cfg_cache_type == 'content' && $idlist != '') { $idlist = $idlist == 0 ? '' : $idlist; return $idlist; } } //指定了id或使用缓存中的id if ($idlist != '') { $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,\r\n tp.moresite,tp.siteurl,tp.sitepath\r\n {$addfieldsSql}\r\n FROM `{$maintable}` arc left join `#@__arctype` tp on arc.typeid=tp.id\r\n {$addfieldsSqlJoin}\r\n WHERE arc.id in({$idlist}) {$ordersql} "; } // 好评差评缓存更新 if ($cfg_digg_update > 0) { if ($orderby == 'goodpost' || $orderby == 'badpost') { $t1 = ExecTime(); $postsql = "SELECT arc.id,arc.goodpost,arc.badpost,arc.scores\r\n\t\t\t\tFROM `{$maintable}` arc\r\n\t\t\t\t{$orwhere} {$ordersql} {$limitsql}"; if ($idlist != '') { $postsql = "SELECT arc.id,arc.goodpost,arc.badpost,arc.scores\r\n\t\t\t\t\t FROM `{$maintable}` arc \r\n\t\t\t\t WHERE arc.id in({$idlist}) {$ordersql} "; } $dsql->SetQuery($query); $dsql->Execute('lit'); while ($row = $dsql->GetArray('lit')) { $prefix = 'diggCache'; $key = 'aid-' . $row['id']; $cacherow = GetCache($prefix, $key); $setsql = array(); if (!empty($cacherow['scores']) && $cacherow['scores'] != $row['scores']) { $setsql[] = "scores = {$cacherow['scores']}"; } if (!empty($cacherow['goodpost']) && $cacherow['goodpost'] != $row['goodpost']) { $setsql[] = "goodpost = {$cacherow['goodpost']}"; } if (!empty($cacherow['badpost']) && $cacherow['badpost'] != $row['badpost']) { $setsql[] = "badpost = {$cacherow['badpost']}"; } $setsql = implode(',', $setsql); $sql = "UPDATE `{$maintable}` SET {$setsql} WHERE id='{$row['id']}'"; if (!empty($setsql)) { $dsql->ExecuteNoneQuery($sql); } } //echo ExecTime()-$t1; } } $dsql->SetQuery($query); $dsql->Execute('al'); //$row = $dsql->GetArray("al"); $artlist = ''; if ($pagesize > 0) { $artlist .= " <div id='{$tagid}'>\r\n"; } 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; $ids = array(); $orderWeight = array(); 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")) { $ids[] = $row['id']; //处理一些特殊字段 $row['info'] = $row['infos'] = cn_substr($row['description'], $infolen); $row['id'] = $row['id']; 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'], $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('#b#', $row['flag'])) { $row['title'] = "<strong>" . $row['title'] . "</strong>"; } //$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']; if (is_array($dtp2->CTags)) { foreach ($dtp2->CTags as $k => $ctag) { if ($ctag->GetName() == 'array') { //传递整个数组,在runphp模式中有特殊作用 $dtp2->Assign($k, $row); } else { if (isset($row[$ctag->GetName()])) { $dtp2->Assign($k, $row[$ctag->GetName()]); } else { $dtp2->Assign($k, ''); } } } $GLOBALS['autoindex']++; } if ($pagesize > 0) { if ($GLOBALS['autoindex'] <= $pagesize) { $liststr = $dtp2->GetResult(); $artlist .= $liststr . "\r\n"; } else { $artlist .= ""; $orderWeight[] = array('weight' => $row['weight'], 'arclist' => ''); } } else { $liststr = $dtp2->GetResult(); $artlist .= $liststr . "\r\n"; } $orderWeight[] = array('weight' => $row['weight'], 'arclist' => $liststr); } else { $artlist .= ''; } // 进行判断,如果启用排序则内容输出为重新排序后的内容 // var_dump($isweight=='y' && count($orderWeight) == $line); $isweight = strtolower($isweight); if ($isweight == 'y') { $artlist = ''; $orderWeight = list_sort_by($orderWeight, 'weight', 'asc'); foreach ($orderWeight as $vv) { $artlist .= $vv['arclist']; } } 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"); $idsstr = join(',', $ids); //分页特殊处理 if ($pagesize > 0) { $artlist .= " </div>\r\n"; $row = $dsql->GetOne("SELECT tagid FROM #@__arcmulti WHERE tagid='{$tagid}'"); $uptime = time(); $attstr = addslashes(serialize($attarray)); $innertext = addslashes($innertext); if (!is_array($row)) { $query = "\r\n INSERT INTO #@__arcmulti(tagid,uptime,innertext,pagesize,arcids,ordersql,addfieldsSql,addfieldsSqlJoin,attstr)\r\n VALUES('{$tagid}','{$uptime}','{$innertext}','{$pagesize}','{$idsstr}','{$ordersql}','{$addfieldsSql}','{$addfieldsSqlJoin}','{$attstr}');\r\n "; $dsql->ExecuteNoneQuery($query); } else { $query = "UPDATE `#@__arcmulti`\r\n SET\r\n uptime='{$uptime}',\r\n innertext='{$innertext}',\r\n pagesize='{$pagesize}',\r\n arcids='{$idsstr}',\r\n ordersql='{$ordersql}',\r\n addfieldsSql='{$addfieldsSql}',\r\n addfieldsSqlJoin='{$addfieldsSqlJoin}',\r\n attstr='{$attstr}'\r\n WHERE tagid='{$tagid}'\r\n "; $dsql->ExecuteNoneQuery($query); } } //保存ID缓存 if ($needSaveCache) { if ($idsstr == '') { $idsstr = '0'; } if ($cfg_cache_type == 'content' && $idsstr != '0') { $idsstr = addslashes($artlist); } $inquery = "INSERT INTO `#@__arccache`(`md5hash`,`uptime`,`cachedata`) VALUES ('" . $taghash . "','" . time() . "', '{$idsstr}'); "; $dsql->ExecuteNoneQuery("DELETE FROM `#@__arccache` WHERE md5hash='" . $taghash . "' "); $dsql->ExecuteNoneQuery($inquery); } return $artlist; }
/** * 获得一个单列的文档列表 * * @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 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; $t1 = ExecTime(); $getrow = ($row=="" ? 10 : $row); 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($orderby=="") $orderby="default"; 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_fulllist.htm"); $idlists = ''; $this->dsql->SetQuery("Select aid From #@__tag_list where tid='{$this->TagID}' And arcrank>-1 limit $limitstart,$getrow"); //echo "Select aid From #@__tag_list where tid='{$this->TagID}' And arcrank>-1 limit $limitstart,$getrow"; $this->dsql->Execute(); while($row=$this->dsql->GetArray()){ $idlists .= ($idlists=='' ? $row['aid'] : ','.$row['aid']); } if($idlists=='') return ''; //按不同情况设定SQL条件 $orwhere = " se.aid in($idlists) "; //排序方式 $ordersql = ""; if($orderby=="uptime") $ordersql = " order by se.uptime $orderWay"; else $ordersql=" order by se.aid $orderWay"; //---------------------------- $query = "Select se.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl from `#@__full_search` se left join `#@__arctype` tp on se.typeid=tp.ID where $orwhere $ordersql "; $this->dsql->SetQuery($query); $this->dsql->Execute('al'); echo $this->dsql->GetError(); $artlist = ""; if($col>1) $artlist = "<table width='$tablewidth' border='0' cellspacing='0' cellpadding='0'>\r\n"; $this->dtp2->LoadSource($innertext); if(!is_array($this->dtp2->CTags)) return ''; $GLOBALS['autoindex'] = 0; for($i=0;$i<$getrow;$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 = $this->dsql->GetArray('al',MYSQL_ASSOC)) { $GLOBALS['autoindex']++; //处理一些特殊字段 $row['id'] = $row['aid']; $row['arcurl'] = $row['url']; $row['typeurl'] = $this->GetListUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],$row['namerule2'],"abc"); if($ismake==0 && $GLOBALS['cfg_multi_site']=='Y') { if($row['litpic']==''){ $row['litpic'] = $GLOBALS['cfg_mainsite'].$GLOBALS['cfg_plus_dir']."/img/dfpic.gif"; } else if(!eregi("^http://",$row['picname'])){ $row['litpic'] = $row['siteurl'].$row['litpic']; } $row['picname'] = $row['litpic']; }else { if($row['litpic']=='') $row['litpic'] = $GLOBALS['cfg_plus_dir']."/img/dfpic.gif"; } $row['description'] = cnw_left($row['addinfos'],$infolen); $row['picname'] = $row['litpic']; $row['info'] = $row['description']; $row['filename'] = $row['arcurl']; $row['uptime'] = GetDateMK($row['uptime']); $row['typelink'] = "<a href='".$row['typeurl']."'>[".$row['typename']."]</a>"; $row['imglink'] = "<a href='".$row['filename']."'><img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".str_replace("'","",$row['title'])."'></a>"; $row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".str_replace("'","",$row['title'])."'>"; $row['title'] = cn_substr($row['title'],$titlelen); $row['textlink'] = "<a href='".$row['filename']."' title='".str_replace("'","",$row['title'])."'>".$row['title']."</a>"; foreach($this->dtp2->CTags as $k=>$ctag) { if(isset($row[$ctag->GetName()])) $this->dtp2->Assign($k,$row[$ctag->GetName()]); else $this->dtp2->Assign($k,""); } $artlist .= $this->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"; $this->dsql->FreeResult("al"); return $artlist; }
function Execute($id = "me", $sql = '') { global $dsql; if (!$dsql->isInit) { $this->Init($this->pconnect); } if ($dsql->isClose) { $this->Open(FALSE); $dsql->isClose = FALSE; } if (!empty($sql)) { $this->SetQuery($sql); } //SQL语句安全检查 if ($this->safeCheck) { CheckSql($this->queryString); } $t1 = ExecTime(); $this->result[$id] = mysql_query($this->queryString, $this->linkID); if ($this->recordLog) { $queryTime = ExecTime() - $t1; $this->RecordLog($queryTime); } if (!empty($this->result[$id]) && $this->result[$id] === FALSE) { $this->DisplayError(mysql_error() . " <br />Error sql: <font color='red'>" . $this->queryString . "</font>"); } }
exit; } else { if ($action == 'delenum') { $row = $dsql->GetOne("SELECT egroup FROM `#@__sys_enum` WHERE id = '{$id}' "); $dsql->ExecuteNoneQuery("DELETE FROM `#@__sys_enum` WHERE id='{$id}'; "); WriteEnumsCache($row['egroup']); ShowMsg("成功删除一个枚举!", $ENV_GOBACK_URL); exit; } else { if ($action == 'edit_save') { if (preg_match("#[^0-9a-z_-]#i", $egroup)) { ShowMsg("组名称不能有全角字符或特殊符号!", "-1"); exit; } $dsql->ExecuteNoneQuery("UPDATE `#@__stepselect` SET `itemname`='{$itemname}',`egroup`='{$egroup}' WHERE id='{$id}'; "); ShowMsg("成功修改一个分类!", "stepselect_main.php?" . ExecTime()); exit; } else { if ($action == 'addnew_save') { if (preg_match("#[^0-9a-z_-]#i", $egroup)) { ShowMsg("组名称不能有全角字符或特殊符号!", "-1"); exit; } $arr = $dsql->GetOne("SELECT * FROM `#@__stepselect` WHERE itemname LIKE '{$itemname}' OR egroup LIKE '{$egroup}' "); if (is_array($arr)) { ShowMsg("你指定的类别名称或组名称已经存在,不能使用!", "stepselect_main.php"); exit; } $dsql->ExecuteNoneQuery("INSERT INTO `#@__stepselect`(`itemname`,`egroup`,`issign`,`issystem`) VALUES('{$itemname}','{$egroup}','0','0'); "); WriteEnumsCache($egroup); ShowMsg("成功添加一个分类!", "stepselect_main.php?egroup={$egroup}");
* * 关于文章权限设置的说明 * 文章权限设置限制形式如下: * 如果指定了会员等级,那么必须到达这个等级才能浏览 * 如果指定了金币,浏览时会扣指点的点数,并保存记录到用户业务记录中 * 如果两者同时指定,那么必须同时满足两个条件 * * @version $Id: view.php 1 15:38 2010年7月8日Z tianya $ * @package DedeCMS.Site * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. * @license http://help.dedecms.com/usersguide/license.html * @link http://www.dedecms.com */ require_once dirname(__FILE__) . "/../include/common.inc.php"; require_once DEDEINC . '/arc.archives.class.php'; $t1 = ExecTime(); if (empty($okview)) { $okview = ''; } if (isset($arcID)) { $aid = $arcID; } if (!isset($dopost)) { $dopost = ''; } $arcID = $aid = isset($aid) && is_numeric($aid) ? $aid : 0; if ($aid == 0) { die(" Request Error! "); } $arc = new Archives($aid); if ($arc->IsError) {
function Execute($id = "me", $sql = '') { global $dsql; if ($dsql->isClose) { $this->Open(false); $dsql->isClose = false; } if (!empty($sql)) { $this->SetQuery($sql); } //SQL语句安全检查 if ($this->safeCheck) { CheckSql($this->queryString); } $t1 = ExecTime(); $this->result[$id] = mysql_query($this->queryString, $this->linkID); //$queryTime = ExecTime() - $t1; //查询性能测试 //if($queryTime > 0.05) { //echo $this->queryString."--{$queryTime}<hr />\r\n"; //} if ($this->result[$id] === false) { $this->DisplayError(mysql_error() . " <br />Error sql: <font color='red'>" . $this->queryString . "</font>"); } }