<?php
declare(strict_types=1);

/**
 * XML çıktısını KESİNLİKLE kirletmemek için:
 * - display_errors = 0
 * - html_errors = 0
 * - output buffer temizliği
 * - warning/notice'leri yakalayıp log'a atma
 */

ini_set('display_errors', '0');
ini_set('html_errors', '0');
error_reporting(E_ALL);

// Her türlü PHP uyarısını yakala (ekrana basılmasın)
set_error_handler(function ($severity, $message, $file, $line) {
  // Log'a düşsün (server error_log)
  error_log("SITEMAP PHP ERROR: $message in $file:$line");
  return true; // PHP'nin kendi çıktısını engelle
});

ob_start();
require_once __DIR__ . '/configi.php';

// configi.php bir şey bastıysa sil
ob_clean();

header('Content-Type: application/xml; charset=UTF-8');

$baseUrl = 'https://kayzint.com';

$sql = "SELECT slug, updated_at, canonical_url
        FROM pages
        WHERE 1=1
        ORDER BY id ASC";

$rows = db()->query($sql)->fetchAll(PDO::FETCH_ASSOC);

echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
echo "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";

echo "  <url>\n";
echo "    <loc>{$baseUrl}/</loc>\n";
echo "    <changefreq>daily</changefreq>\n";
echo "    <priority>1.0</priority>\n";
echo "  </url>\n";

foreach ($rows as $r) {
  $slug = trim((string)($r['slug'] ?? ''), '/');
  if ($slug === '') continue;

  if (preg_match('~^(search|arama)($|/)~i', $slug)) continue;

  $loc = !empty($r['canonical_url'])
    ? (string)$r['canonical_url']
    : ($baseUrl . '/' . $slug);

  $loc = strtok($loc, '?');
  if (!preg_match('~^https?://~i', $loc)) continue;

  $lastmod = '';
  if (!empty($r['updated_at'])) {
    $ts = strtotime((string)$r['updated_at']);
    if ($ts) $lastmod = gmdate('Y-m-d', $ts);
  }

  echo "  <url>\n";
  echo "    <loc>" . htmlspecialchars($loc, ENT_QUOTES, 'UTF-8') . "</loc>\n";
  if ($lastmod) echo "    <lastmod>{$lastmod}</lastmod>\n";
  echo "    <changefreq>weekly</changefreq>\n";
  echo "    <priority>0.7</priority>\n";
  echo "  </url>\n";
}

echo "</urlset>\n";
