sourceSql = ''; $this->pageSize = 25; $this->queryTime = 0; $this->getValues = Array(); $this->randts = time(); $this->dsql = $GLOBALS['dsql']; $this->SetVar('ParseEnv','datalist'); $this->tpl = new DedeTemplate(); if($GLOBALS['cfg_tplcache']=='N') { $this->tpl->isCache = false; } if($tplfile!='') { $this->tpl->LoadTemplate($tplfile); } } //兼容PHP4 function MemberListview($tplfile='') { $this->__construct($tplfile); } /** * 设置SQL语句 * * @access public * @param string $sql SQL语句 * @return void */ function SetSource($sql) { $this->sourceSql = $sql; } /** * 设置模板 * 如果想要使用模板中指定的pagesize,必须在调用模板后才调用 SetSource($sql) * * @access public * @param string $tplfile 模板文件 * @return void */ function SetTemplate($tplfile) { $this->tpl->LoadTemplate($tplfile); } /** * 设置模板 * * @access public * @param string $tplfile 模板文件 * @return void */ function SetTemplet($tplfile) { $this->tpl->LoadTemplate($tplfile); } /** * 对config参数及get参数等进行预处理 * * @access private * @return void */ function PreLoad() { global $totalresult,$pageno; if(empty($pageno) || preg_match("/[^0-9]/", $pageno)) { $pageno = 1; } if(empty($totalresult) || preg_match("/[^0-9]/", $totalresult)) { $totalresult = 0; } $this->pageNO = $pageno; $this->totalResult = $totalresult; if(isset($this->tpl->tpCfgs['pagesize'])) { $this->pageSize = $this->tpl->tpCfgs['pagesize']; } $this->totalPage = ceil($this->totalResult/$this->pageSize); if($this->totalResult==0) { //$this->isQuery = true; //$this->dsql->Execute('mbdl',$this->sourceSql); //$this->totalResult = $this->dsql->GetTotalRow('mbdl'); $countQuery = preg_replace("/select[ \r\n\t](.*)[ \r\n\t]from/i","Select count(*) as dd From",$this->sourceSql); $row = $this->dsql->GetOne($countQuery); $row['dd'] = empty($row['dd']) ? 0 : $row['dd']; $this->totalResult = $row['dd']; $this->sourceSql .= " limit 0,".$this->pageSize; } else { $this->sourceSql .= " limit ".(($this->pageNO-1) * $this->pageSize).",".$this->pageSize; } } /** * 设置网址的Get参数键值 * * @access public * @param string $key 键 * @param string $value 值 * @return void */ function SetParameter($key, $value) { $this->getValues[$key] = $value; } /** * 设置/获取文档相关的各种变量 * * @access public * @param string $k 键 * @param string $v 值 * @return void */ function SetVar($k, $v) { global $_vars; if(!isset($_vars[$k])) $_vars[$k] = $v; } /** * 获取值 * * @param string $k * @return string */ function GetVar($k) { global $_vars; if(isset($_vars[$k])) return $_vars[$k]; else return ''; } /** * 获取当前页数据列表 * * @access public * @param string $atts 属性 * @param string $refObj 实例化对象 * @param string $fields 字段 * @return array */ function GetArcList($atts,$refObj='',$fields=array()) { $attlist = "titlelen=30,infolen=200,imgwidth=120,imgheight=90"; FillAtts($atts,$attlist); FillFields($atts,$fields,$refObj); extract($atts, EXTR_OVERWRITE); $rsArray = array(); //global $_vars; //$t1 = Exectime(); if(!$this->isQuery) { $this->dsql->Execute('mbdl',$this->sourceSql); } $i = 0; while($row = $this->dsql->GetArray('mbdl')) { $i++; if(!isset($row['description'])) $row['description'] = ''; if(!isset($row['color'])) $row['color'] = ''; if(!isset($row['pubdate'])) $row['pubdate'] = $row['senddate']; //处理一些特殊字段 $row['infos'] = cn_substr($row['description'],$infolen); $row['id'] = $row['id']; $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'].'/static/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'] = "".$row['typename'].""; $row['image'] = "".preg_replace("/[<]/", "", $row['title'])."'>"; $row['imglink'] = "".$row['image'].""; $row['fulltitle'] = $row['title']; $row['title'] = cn_substr($row['title'],$titlelen); if($row['color']!='') { $row['title'] = "".$row['title'].""; } if(preg_match('/b/', $row['flag'])) { $row['title'] = "".$row['title'].""; } //$row['title'] = "".$row['title'].""; $row['textlink'] = "".$row['title'].""; $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl']; $row['memberurl'] = $GLOBALS['cfg_memberurl']; $row['templeturl'] = $GLOBALS['cfg_templeturl']; $rsArray[$i] = $row; if($i >= $this->pageSize) { break; } } $this->dsql->FreeResult(); //echo "执行时间:".(Exectime() - $t1); return $rsArray; } /** * 获取分页导航列表 * * @access public * @param string $atts 属性 * @param string $refObj 实例化对象 * @param string $fields 字段 * @return string */ function GetPageList($atts,$refObj='',$fields=array()) { global $lang_pre_page,$lang_next_page,$lang_index_page,$lang_end_page,$lang_record_number,$lang_page,$lang_total; $prepage = $nextpage = $geturl= $hidenform = ''; $purl = $this->GetCurUrl(); $prepagenum = $this->pageNO-1; $nextpagenum = $this->pageNO+1; if(!isset($atts['listsize']) || preg_match("/[^0-9]/", $atts['listsize'])) { $atts['listsize'] = 5; } if(!isset($atts['listitem'])) { $atts['listitem'] = "info,index,end,pre,next,pageno"; } $totalpage = ceil($this->totalResult/$this->pageSize); //echo " {$totalpage}=={$this->totalResult}=={$this->pageSize}"; //无结果或只有一页的情况 if($totalpage<=1 && $this->totalResult > 0) { return "{$lang_total} 1 {$lang_page}/".$this->totalResult.$lang_record_number; } if($this->totalResult == 0) { return "{$lang_total} 0 {$lang_page}/".$this->totalResult.$lang_record_number; } $infos = "{$lang_total} {$totalpage} {$lang_page}/{$this->totalResult}{$lang_record_number} "; if($this->totalResult!=0) { $this->getValues['totalresult'] = $this->totalResult; } if(count($this->getValues)>0) { foreach($this->getValues as $key=>$value) { $value = urlencode($value); $geturl.="$key=$value"."&"; $hidenform.="\r\n"; } } $purl .= "?".$geturl; //获得上一页和下一页的链接 if($this->pageNO!=1) { $prepage.="$lang_pre_page \r\n"; $indexpage="$lang_index_page \r\n"; } else { $indexpage="$lang_index_page \r\n"; } if($this->pageNO!=$totalpage&&$totalpage>1) { $nextpage.="$lang_next_page \r\n"; $endpage="$lang_end_page \r\n"; } else { $endpage=" $lang_end_page \r\n"; } //获得数字链接 $listdd=""; $total_list = $atts['listsize'] * 2 + 1; if($this->pageNO>=$total_list) { $j=$this->pageNO-$atts['listsize']; $total_list=$this->pageNO+$atts['listsize']; if($total_list>$totalpage) { $total_list=$totalpage; } } else { $j=1; if($total_list>$totalpage) $total_list=$totalpage; } for($j;$j<=$total_list;$j++) { if($j==$this->pageNO) { $listdd.= "$j \r\n"; } else { $listdd.="".$j." \r\n"; } } $plist = "
\r\n"; //info,index,end,pre,next,pageno,form if(preg_match("/info/i",$atts['listitem'])) { $plist .= $infos; } if(preg_match("/index/i",$atts['listitem'])) { $plist .= $indexpage; } if(preg_match("/pre/i",$atts['listitem'])) { $plist .= $prepage; } if(preg_match("/pageno/i",$atts['listitem'])) { $plist .= $listdd; } if(preg_match("/next/i",$atts['listitem'])) { $plist .= $nextpage; } if(preg_match("/end/i",$atts['listitem'])) { $plist .= $endpage; } if(preg_match("/form/i",$atts['listitem'])) { $plist .="
$hidenform"; if($totalpage>$total_list) { $plist.="\r\n"; $plist.="\r\n"; } $plist .= "
\r\n"; } $plist .= "
\r\n"; return $plist; } /** * 获得当前网址 * * @access public * @return string */ function GetCurUrl() { if(!empty($_SERVER["REQUEST_URI"])) { $nowurl = $_SERVER["REQUEST_URI"]; $nowurls = explode("?",$nowurl); $nowurl = $nowurls[0]; } else { $nowurl = $_SERVER["PHP_SELF"]; } return $nowurl; } //关闭 function Close() { } /** * 显示数据 * * @access public * @return void */ function Display() { if($this->sourceSql != '') $this->PreLoad(); //在PHP4中,对象引用必须放在display之前,放在其它位置中无效 $this->tpl->SetObject($this); $this->tpl->Display(); } /** * 保存为HTML * * @access public * @param string $filename 文件名称 * @return string */ function SaveTo($filename) { $this->tpl->SaveTo($filename); } }//End Class