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