<?php
require ('../class/connect.php');
require ('../class/db_sql.php');
require ('../class/functions.php');
require ('../class/t_functions.php');
require ('../data/dbcache/class.php');
require LoadLang('pub/fun.php');
$link = db_connect();
$empire = new mysqlquery();
$editor = 1;
$classid = RepPostStr($_GET['classid']); //MaXian：过滤获取
if (!is_numeric($classid)) {
    foreach ($class_r as $val) {
        foreach ($val as $val2) {
            if ($classid == $val['classpath']) {
                $classid = $val['classid'];
                break;
            }
        }
    }
}
if (empty($classid)) {
    printerror("ErrorUrl", "history.go(-1)", 1);
}
$search = '&classid=' . $classid;
$tbname = $class_r[$classid]['tbname'];
$mid = $class_r[$classid]['modid'];
if (empty($tbname) || empty($mid) || InfoIsInTable($tbname)) {
    printerror("ErrorUrl", "history.go(-1)", 1);
}
$cr = $empire->fetch1("select classid,classpagekey,intro,classimg,cgroupid,islist,classtempid,listdt,bdinfoid,repagenum,islast,infos,addsql,fclast from {$dbtbpre}enewsclass where classid='$classid'");
if (empty($cr['classid'])) {
    printerror("ErrorUrl", "history.go(-1)", 1);
}
if ($class_r[$classid]['islast'] && $cr['bdinfoid']) {
    printerror("ErrorUrl", "history.go(-1)", 1);
}
//moreport
if (Moreport_ReturnMustDt()) {
    $class_r[$classid]['listdt'] = 1;
    $cr['repagenum'] = 0;
    $cr['listdt'] = 1;
}
//是否支持动态页
/*if(empty($class_r[$classid]['listdt'])&&!$cr['repagenum']){
    $classurl=sys_ReturnBqClassname($cr, 9);
    Header("Location:$classurl");
    exit();
}*/
//权限
if ($cr['cgroupid']) {
    $mgroupid = (int)getcvar('mlgroupid');
    if (!strstr($cr['cgroupid'], ',' . $mgroupid . ',')) {
        printerror('NotLevelToClass', 'history.go(-1)', 1);
    }
}
//缓存
if ($public_r['ctimeopen']) {
    $public_r['usetotalnum'] = 0;
}
$ecms_tofunr = array();
$ecms_tofunr['cacheuse'] = 0;
$ecms_tofunr['cacheselfcid'] = $classid;
$ecms_tofunr['cachepath'] = 'empirecms';
//缓存
$GLOBALS['navclassid'] = $classid;
$url = ReturnClassLink($classid);
$pagetitle = $class_r[$classid]['classname'];
$pagekey = $cr['classpagekey'];
$pagedes = $cr['intro'];
$classimg = $cr['classimg'] ? $cr['classimg'] : $public_r['newsurl'] . 'e/data/images/notimg.gif';
//---封面式---
if (!$class_r[$classid]['islast'] && $cr['islist'] != 1) {
    /*  if(empty($cr['listdt'])||$cr['islist'] == 3){
        printerror("ErrorUrl", "history.go(-1)", 1);
    }*/
    //封面：缓存
    $ecms_tofunr['cachetype'] = 'classpage';
    $ecms_tofunr['cacheids'] = $classid;
    $ecms_tofunr['cachedatepath'] = 'cpage';
    $ecms_tofunr['cachetime'] = $public_r['ctimeclass'];
    $ecms_tofunr['cachelasttime'] = $public_r['ctimelast'];
    $ecms_tofunr['cachelastedit'] = $cr['fclast'];
    $ecms_tofunr['cacheopen'] = Ecms_eCacheCheckOpen($ecms_tofunr['cachetime']);
    if ($ecms_tofunr['cacheopen'] == 1) {
        $ecms_tofunr['cacheuse'] = Ecms_eCacheOut($ecms_tofunr, 0);
    }
    //封面：缓存
    if ($cr['islist'] == 2) {
        $classtemp = GetClassText($classid);
        $dttempname = 'classpage' . $classid;
    } else {
        if (empty($cr['classtempid'])) {
            printerror('ErrorUrl', '', 1);
        }
        $classtemp = GetClassTemp($cr['classtempid']);
        $dttempname = 'classtemp' . $cr['classtempid'];
    }
    $string = DtNewsBq($dttempname, $classtemp, 0);
    $string = str_replace('[!--newsnav--]', $url, $string); //位置导航
    $string = Class_ReplaceSvars($string, $url, $classid, $pagetitle, $pagekey, $pagedes, $classimg, $addr, 0);
    $string = str_replace('[!--page.stats--]', '', $string);
    //封面：缓存
    if ($ecms_tofunr['cacheopen'] == 1) {
        Ecms_eCacheIn($ecms_tofunr, stripSlashes($string));
    } else {
        echo stripSlashes($string);
    }
    //封面：缓存
    exit();
}
//---列表式---
$add = '';
//栏目
if ($class_r[$classid]['islast']) { //终极栏目
    $add.= "classid='$classid'";
    $have_class = 0;
} else {
    $add.= ReturnClass($class_r[$classid]['sonclass']);
    $have_class = 1;
}
if ($cr['addsql']) {
    $add.= ' and (' . $cr['addsql'] . ')';
}
//排序
if (empty($class_r[$classid]['reorder'])) {
    $addorder = "newstime desc";
} else {
    $addorder = $class_r[$classid]['reorder'];
}
//列表模板
$tempid = $class_r[$classid]['dtlisttempid'] ? $class_r[$classid]['dtlisttempid'] : $class_r[$classid]['listtempid'];
if (empty($tempid)) {
    printerror('ErrorUrl', '', 1);
}
$tempr = $empire->fetch1("select tempid,temptext,subnews,listvar,rownum,showdate,modid,subtitle,docode from " . GetTemptb("enewslisttemp") . " where tempid='$tempid'");
if (empty($tempr['tempid'])) {
    printerror('ErrorUrl', '', 1);
}
$PageUrl = $_SERVER['HTTP_X_REWRITE_URL'] ? $_SERVER['HTTP_X_REWRITE_URL'] : $_SERVER['REQUEST_URI'];
$page = (int)substr($_GET['page'], 6); // MaXian：分页获取
if ($page == 1 || strpos($PageUrl, '_0') > 0) { // MaXian：判断分页是1或者0就跳转 404
    header('HTTP/1.1 404 Not Found');
    header('status: 404 Not Found');
    printerror('ErrorUrl', 'history.go(-1)', 1);
}
$page = RepPIntvar($page) ? RepPIntvar($page) : 1;
$start = 0;
$line = $class_r[$classid]['lencord']; //每页显示记录数
$page_line = 10; //每页显示链接数
$offset = $page * $line - $line; //总偏移量
//列表：缓存
$ecms_tofunr['cachetype'] = 'classlist';
$ecms_tofunr['cacheids'] = $classid . ',' . $page;
$ecms_tofunr['cachedatepath'] = 'clist/' . $classid;
$ecms_tofunr['cachetime'] = $public_r['ctimelist'];
$ecms_tofunr['cachelasttime'] = $public_r['ctimelast'];
$ecms_tofunr['cachelastedit'] = $cr['fclast'];
$ecms_tofunr['cacheopen'] = Ecms_eCacheCheckOpen($ecms_tofunr['cachetime']);
if ($ecms_tofunr['cacheopen'] == 1) {
    $ecms_tofunr['cacheuse'] = Ecms_eCacheOut($ecms_tofunr, 0);
}
//列表：缓存
//系统模型
$ret_r = ReturnReplaceListF($mid);
//优化
$yhadd = '';
$yhid = $class_r[$classid]['yhid'];
$yhvar = 'qlist';
if ($yhid) {
    $yhadd = ReturnYhSql($yhid, $yhvar, 1);
}
//总数
$totalnum = (int)$_GET['totalnum'];
if (!$public_r['usetotalnum']) {
    $totalnum = 0;
}
if ($totalnum < 1) {
    if ($yhadd || $cr['addsql']) {
        $totalquery = "select count(*) as total from {$dbtbpre}ecms_" . $tbname . " where " . $yhadd . $add;
        $num = $empire->gettotal($totalquery);
    } else {
        $num = ReturnClassInfoNum($cr, 0);
    }
} else {
    $num = $totalnum;
}
if ($public_r['usetotalnum']) {
    $search.= '&totalnum=' . $num;
}
//checkpageno
MX_eCheckListPageNo($page - 1, $line, $num); // MaXian：验证页码是否有效
function MX_eCheckListPageNo($page, $line, $totalnum) { // MaXian：验证页码是否有效
    $page = (int)$page;
    $line = (int)$line;
    $totalnum = (int)$totalnum;
    if (!$page || !$line) {
        return '';
    }
    $totalpage = ceil($totalnum / $line);
    if ($page >= $totalpage) { // MaXian：分页不合法跳转404
        header('HTTP/1.1 404 Not Found');
        header('status: 404 Not Found');
        printerror('ErrorUrl', 'history.go(-1)', 1);
    }
}
$query = "select " . ReturnSqlListF($mid) . " from {$dbtbpre}ecms_" . $tbname . " where " . $yhadd . $add;
$query.= " order by " . ReturnSetTopSql('list') . $addorder . " limit $offset,$line";
$sql = $empire->query($query);
//伪静态
$pagefunr = eReturnRewriteClassUrl($classid, 0);
$pagefunr['repagenum'] = $cr['repagenum'];
$pagefunr['dolink'] = empty($class_r[$classid]['classurl']) ? $public_r['newsurl'] . $class_r[$classid]['classpath'] . '/' : $class_r[$classid]['classurl'] . '/';
$pagefunr['dofile'] = 'index';
$pagefunr['dotype'] = $class_r[$classid]['classtype'];
//分页
/*if($pagefunr['rewrite']==1||$pagefunr['repagenum']){
    $listpage=InfoUsePage($num,$line,$page_line,$start,$page,$search,$pagefunr);
}else{
    $listpage=page1($num,$line,$page_line,$start,$page,$search);
}*/
$listpage = MX_ListPage($num, $line, $page_line, $start, $page); // MaXian：自己加的分页
function MX_ListPage($num, $line, $page_line, $start, $page) { // MaXian：分页函数
    global $fun_r;
    if ($num <= $line) {
        return '';
    }
    $f = '_'; //伪静态分页分割符号
    $url = preg_replace('/_[0-9]+/', '', $_SERVER['HTTP_X_REWRITE_URL'] ? $_SERVER['HTTP_X_REWRITE_URL'] : $_SERVER['REQUEST_URI']);
    if (!strripos($url, '.')) {
        $url = $url . 'index.html';
    }
    $urlarr = explode('.', $url);
    $snum = 3; //最小页数
    $totalpage = ceil($num / $line); //取得总页数
    $firststr = '<a title="' . $fun_r['trecord'] . '">&nbsp;<b>' . $num . '</b> </a>&nbsp;&nbsp;';
    //上一页
    if ($page > 1) {
        $toppage = '<a href="' . substr($urlarr[0], 0, -5) . '">' . $fun_r['startpage'] . '</a>';
        $pagepr = $page - 1;
        if ($pagepr == 1) {
            $prepage = '<a href="' . substr($urlarr[0], 0, -5) . '">' . $fun_r['pripage'] . '</a>';
        } else {
            $prepage = '<a href="' . $urlarr[0] . $f . $pagepr . '.' . $urlarr[1] . '">' . $fun_r['pripage'] . '</a>';
        }
    }
    //下一页
    if ($page != $totalpage) {
        $pagenex = $page + 1;
        $nextpage = '<a href="' . $urlarr[0] . $f . $pagenex . '.' . $urlarr[1] . '">' . $fun_r['nextpage'] . '</a>';
        $lastpage = '<a href="' . $urlarr[0] . $f . $totalpage . '.' . $urlarr[1] . '">' . $fun_r['lastpage'] . '</a>';
    }
    $starti = $page - $snum < 0 ? 0 : $page - $snum;
    $no = 0;
    for ($i = $starti + 1;$i < $totalpage + 1 && $no < $page_line;$i++) {
        $no++;
        if ($page == $i) {
            $is_1 = "<b>";
            $is_2 = "</b>";
        } else {
            if ($i == 1) { //第一页不加page0
                $is_1 = '<a href="' . substr($urlarr[0], 0, -5) . '">';
                $is_2 = "</a>";
            } else {
                $is_1 = '<a href="' . $urlarr[0] . $f . $i . '.' . $urlarr[1] . '">';
                $is_2 = "</a>";
            }
        }
        $pagenum = $i;
        $returnstr.= $is_1 . $pagenum . $is_2;
    }
    $returnstr = $firststr . $toppage . $prepage . $returnstr . $nextpage . $lastpage;
    return $returnstr;
}
//页面支持标签
if ($public_r['dtcanbq']) {
    $tempr['temptext'] = DtNewsBq('list' . $tempid, $tempr['temptext'], 0);
} else {
    if ($public_r['searchtempvar']) {
        $tempr['temptext'] = ReplaceTempvar($tempr['temptext']);
    }
}
$listtemp = $tempr['temptext'];
$rownum = $tempr['rownum'];
if (empty($rownum)) {
    $rownum = 1;
}
$formatdate = $tempr['showdate'];
$subnews = $tempr['subnews'];
$subtitle = $tempr['subtitle'];
$docode = $tempr['docode'];
$modid = $tempr['modid'];
$listvar = str_replace('[!--news.url--]', $public_r['newsurl'], $tempr['listvar']);
//公共
$listtemp = str_replace('[!--newsnav--]', $url, $listtemp); //位置导航
$listtemp = Class_ReplaceSvars($listtemp, $url, $classid, $pagetitle, $pagekey, $pagedes, $classimg, $addr, 0);
$listtemp = str_replace('[!--page.stats--]', '', $listtemp);
$listtemp = str_replace('[!--show.page--]', $listpage, $listtemp);
$listtemp = str_replace('[!--show.listpage--]', $listpage, $listtemp);
$listtemp = str_replace('[!--list.pageno--]', $page + 1, $listtemp);
//取得列表模板
$list_exp = "[!--empirenews.listtemp--]";
$list_r = explode($list_exp, $listtemp);
$listtext = $list_r[1];
$no = $offset + 1;
$changerow = 1;
while ($r = $empire->fetch($sql)) {
    //替换列表变量
    $repvar = ReplaceListVars($no, $listvar, $subnews, $subtitle, $formatdate, $url, $have_class, $r, $ret_r, $docode);
    $listtext = str_replace("<!--list.var" . $changerow . "-->", $repvar, $listtext);
    $changerow+= 1;
    //超过行数
    if ($changerow > $rownum) {
        $changerow = 1;
        $string.= $listtext;
        $listtext = $list_r[1];
    }
    $no++;
}
//多余数据
if ($changerow <= $rownum && $listtext <> $list_r[1]) {
    $string.= $listtext;
}
$string = $list_r[0] . $string . $list_r[2];
//列表：缓存
if ($ecms_tofunr['cacheopen'] == 1) {
    Ecms_eCacheIn($ecms_tofunr, stripSlashes($string));
} else {
    echo stripSlashes($string);
}
//列表：缓存
db_close();
$empire = null;
?>