<?php
/**
 * Sitemap 入口（DP 站群优化版 v2.5 — 2026-05 更新）
 * 与 v2.0 唯一区别：type 白名单新增 'news'
 */
require '../../class/connect.php';
require '../../class/db_sql.php';
require '../../class/functions.php';
require '../../data/dbcache/class.php';
$site_r = dp_getConfig();
$topcid = dp_domainCid();
$siteid = dp_domainSid();
if (!isset($_GET['type']) && !isset($_GET['classid'])) {
    $_GET['type']    = 'class';
    $_GET['classid'] = dp_domainCid();
    $_GET['tbname']  = '';
    $_GET['page']    = 0;
    $_GET['pass']    = $site_r['sitemap_pass'];
}
if (!$siteid) {
    dp_404();
}
$avg_num = (int)$site_r['sitemap_max'];
if (!$avg_num) {
    $avg_num = 20000;
}

if (!isset($_GET['type']) && !isset($_GET['classid'])) {
    $_GET['type']    = 'class';
    $_GET['classid'] = $topcid;
    $_GET['tbname']  = '';
    $_GET['page']    = 0;
    $_GET['pass']    = $site_r['sitemap_pass'];
}

$get_classid = intval($_GET['classid']);
if ($get_classid != $topcid) {
    dp_404();
}

$pass = $_GET['pass'];
if ($pass != $site_r['sitemap_pass']) {
    dp_404();
}

$type   = trim($_GET['type']);
$page   = intval($_GET['page']);
$tbname = $_GET['tbname'];
if (!$type) {
    dp_404();
}

// 类型白名单：v2.5 新增 'news'
if (!in_array($type, ['class', 'tag', 'info', 'index', 'image', 'news'], true)) {
    dp_404();
}

require './lib/sitemap.php';

header("Content-Type: application/xml");

$xmlFile    = dp_sitemap_xmlfile();
$cache_time = (int)$site_r['sitemap_cachetime'];
if ($site_r['opencache'] && $cache_time) {
    $cachestr = dp_sitemap_LoadCache($xmlFile, $cache_time);
    if ($cachestr) {
        echo $cachestr;
        exit;
    }
}

$link   = db_connect();
$empire = new mysqlquery();

$config_r = dp_analysis($site_r, $topcid, $siteid);

if (dp_sitemap($type, $page) === false) {
    dp_404();
}

if (!file_exists($xmlFile)) {
    dp_404();
}

$string = @file_get_contents($xmlFile);
if ($string) {
    echo $string;
} else {
    dp_404();
}

db_close();
$empire = null;
