<?php
    include_once "php/lib/db.php";
    include_once "php/lib/other.php";
    include_once "php/lib/shop.php";

	//поддомен
	$subdomain = explode('.', $_SERVER['HTTP_HOST']);
		if($subdomain[0] !== '' && $subdomain[0] !== 'rustud') {
		$stmt=$pdo->prepare("SELECT * FROM pack_sub_domains WHERE name = ? LIMIT 1");
		$stmt->execute([$subdomain[0]]);
		if($stmt->rowCount() > 0) {

		} else {
			include $_SERVER['DOCUMENT_ROOT'].'/static/site_error/404.php';
			exit;
		}
	}

    //поддомен
    $sub_domian = explode('.', $_SERVER['HTTP_HOST']);
    $domian='';
    $stmt=$pdo->prepare("SELECT * FROM pack_sub_domains WHERE name = ? LIMIT 1");
    $stmt->execute([$sub_domian[0]]);
    if($stmt->rowCount() > 0) {
        foreach ($stmt as $pack_sub_domains) {
            $domian = $pack_sub_domains['name'].'.';
        }
    }

    $out = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

    $seen = [];
    $addUrl = function($loc, $lastmod = '', $changefreq = '', $priority = '') use (&$out, &$seen) {
        if(isset($seen[$loc])) return;
        $seen[$loc] = true;
        $out .= "
<url>
  <loc>".htmlspecialchars($loc, ENT_XML1, 'UTF-8')."</loc>";
        if($lastmod !== '') $out .= "
  <lastmod>".htmlspecialchars(substr((string)$lastmod, 0, 10), ENT_XML1, 'UTF-8')."</lastmod>";
        if($changefreq !== '') $out .= "
  <changefreq>".htmlspecialchars($changefreq, ENT_XML1, 'UTF-8')."</changefreq>";
        if($priority !== '') $out .= "
  <priority>".htmlspecialchars($priority, ENT_XML1, 'UTF-8')."</priority>";
        $out .= "
</url>";
    };


    //заказы
    $stmt=$pdo->query("SELECT * FROM tasks WHERE url != '' AND end_date > 0");
    if($stmt->rowCount() > 0) {
        foreach ($stmt as $docker) {
            $addUrl('https://'.$domian.'rustud.com/task/'.$docker['url'].'_'.$docker['id']);
        }
    }

    //статьи блога
    $stmt=$pdo->query("SELECT * FROM blog_articles");
    if($stmt->rowCount() > 0) {
        foreach ($stmt as $docker) {
            $addUrl('https://'.$domian.'rustud.com/blog/'.$docker['url'].'_'.$docker['id']);
        }
    }

    //статьи видов работ каталога
    $stmt=$pdo->query("SELECT * FROM admin_pages_static_work_catalog");
    if($stmt->rowCount() > 0) {
        foreach ($stmt as $docker) {
            $addUrl('https://'.$domian.'rustud.com/catalog/'.$docker['url']);
        }
    }

    //статьи каталога
    $stmt=$pdo->query("SELECT * FROM admin_pages_static");
    if($stmt->rowCount() > 0) {
        foreach ($stmt as $docker) {
            //получим маршрут вида работы
            $stmt=$pdo->query("SELECT * FROM admin_pages_static_work_catalog WHERE category = ".$docker['category']." LIMIT 1");
            if($stmt->rowCount() > 0) {
                foreach ($stmt as $docker2) {
                    $addUrl('https://'.$domian.'rustud.com/catalog/'.$docker2['url'].'/'.$docker['url'].'_'.$docker['id']);
                }
            } else {
                $stmt=$pdo->query("SELECT * FROM pack_categories WHERE id = ".$docker['category']." LIMIT 1");
                if($stmt->rowCount() > 0) {
                    foreach ($stmt as $docker2) {
                        $pppath = translit_path($docker2['name']);
                        $addUrl('https://'.$domian.'rustud.com/catalog/'.$pppath.'/'.$docker['url'].'_'.$docker['id']);
                    }
                }
            }
        }
    }


    if ($domian === '' && shop_table_exists($pdo, 'shop_products')) {
        $addUrl('https://rustud.com/shop/', date('Y-m-d'), 'daily', '0.8');
        if (shop_table_exists($pdo, 'shop_work_types')) {
            $stmt = $pdo->query("SELECT slug, updated_at FROM shop_work_types WHERE is_active = 1 AND slug != ''");
            foreach ($stmt as $type) $addUrl('https://rustud.com/shop/?work_type='.rawurlencode($type['slug']), $type['updated_at'] ?? '', 'weekly', '0.6');
        }
        $stmt = $pdo->query("SELECT id, slug, updated_at, published_at, created_at FROM shop_products WHERE status = 'published' ORDER BY id");
        foreach ($stmt as $product) $addUrl('https://rustud.com'.shop_product_url($product), $product['updated_at'] ?: ($product['published_at'] ?: $product['created_at']), 'weekly', '0.7');
    }

    $out .= '</urlset>';
    header('Content-Type: text/xml; charset=utf-8');
    echo $out;
?>