<?php
// Oculta erros para não quebrar a estrutura do XML
ini_set('display_errors', 0);
error_reporting(0);

// Puxa a conexão do painel (O mesmo config.php que o get.php usa)
require_once 'config.php';
$pdo = getConexaoAtiva();
$pdo->exec("SET NAMES utf8mb4");

// Avisa aos aplicativos que este é um arquivo XML legítimo
header("Content-Type: text/xml; charset=utf-8");

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<tv generator-info-name="TOP IPTV" generator-info-url="http://seupainel.com">' . "\n";

// 1. Gera a lista de canais únicos que tem EPG
$canais = $pdo->query("SELECT DISTINCT channel_id FROM epg_data")->fetchAll(PDO::FETCH_COLUMN);

foreach($canais as $cid) {
    $nome = htmlspecialchars($cid, ENT_QUOTES | ENT_XML1, 'UTF-8');
    echo "  <channel id=\"{$nome}\">\n";
    echo "    <display-name>{$nome}</display-name>\n";
    echo "  </channel>\n";
}

// 2. Traz toda a programação ordenada por tempo
$programas = $pdo->query("SELECT * FROM epg_data ORDER BY start ASC")->fetchAll(PDO::FETCH_ASSOC);

foreach($programas as $p) {
    // Formata o horário exigido pelo padrão XMLTV: 20260427104434 -0300
    $start = date('YmdHis O', strtotime($p['start']));
    $stop = date('YmdHis O', strtotime($p['end']));
    $cid = htmlspecialchars($p['channel_id'], ENT_QUOTES | ENT_XML1, 'UTF-8');
    $title = htmlspecialchars($p['title'], ENT_QUOTES | ENT_XML1, 'UTF-8');
    $desc = htmlspecialchars($p['description'], ENT_QUOTES | ENT_XML1, 'UTF-8');
    
    echo "  <programme start=\"{$start}\" stop=\"{$stop}\" channel=\"{$cid}\">\n";
    echo "    <title lang=\"pt-BR\">{$title}</title>\n";
    echo "    <desc lang=\"pt-BR\">{$desc}</desc>\n";
    echo "  </programme>\n";
}

echo '</tv>';
?>