<?php
// public/article.php

require_once __DIR__ . '/../includes/config.php';

$slug = $_GET['slug'] ?? '';

if (empty($slug)) {
    die("Chyba: Chybí parametr slug.");
}

// Cesta k Markdown souboru
$markdownFile = PATH_CONTENT . $slug . '.md';

if (!file_exists($markdownFile)) {
    die("Chyba: Článek nenalezen v " . $markdownFile);
}

// Načtení obsahu
$markdownContent = file_get_contents($markdownFile);

/**
 * Jednoduchý převodník Markdown na HTML
 * Zpracovává: Nadpisy, tučné/kurzíva, odkazy, seznamy, bloky kódu, inline kód
 */
function markdownToHtml($text) {
    // 1. Kódové bloky (``` ... ```) - PŘEDNOSTNÍ ZPRACOVÁNÍ
    // Použijeme callback pro bezpečné zpracování všech bloků
    $text = preg_replace_callback('/```(\w*)\n(.*?)```/s', function($matches) {
        $lang = $matches[1];
        $code = htmlspecialchars($matches[2]); // Důležité: chrání před XSS a chybami v HTML
        // Vrátíme kód s třídou pro Prism.js
        return "\n<pre><code class=\"language-" . htmlspecialchars($lang) . "\">" . $code . "</code></pre>\n";
    }, $text);

    // 2. Inline kód (` ... `)
    $text = preg_replace('/`([^`]+)`/', '<code>$1</code>', $text);

    // 3. Nadpisy H1 - H6
    $text = preg_replace('/^# (.*$)/m', '<h1>$1</h1>', $text);
    $text = preg_replace('/^## (.*$)/m', '<h2>$1</h2>', $text);
    $text = preg_replace('/^### (.*$)/m', '<h3>$1</h3>', $text);
    $text = preg_replace('/^#### (.*$)/m', '<h4>$1</h4>', $text);
    $text = preg_replace('/^##### (.*$)/m', '<h5>$1</h5>', $text);
    $text = preg_replace('/^###### (.*$)/m', '<h6>$1</h6>', $text);

    // 4. Tučné a kurzíva
    $text = preg_replace('/\*\*(.*?)\*\*/', '<strong>$1</strong>', $text);
    $text = preg_replace('/\*(.*?)\*/', '<em>$1</em>', $text);

    // 5. Odkazy [text](url)
    $text = preg_replace('/\[(.*?)\]\((.*?)\)/', '<a href="$2" target="_blank">$1</a>', $text);

    // 6. Seznamy (- položka)
    // Nejdřív nahradíme jednotlivé položky
    $text = preg_replace('/^- (.*$)/m', '<li>$1</li>', $text);
    // Pak obalíme souvislé bloky <li> do <ul>
    $text = preg_replace('/(<li>.*<\/li>\n?)+/', '<ul>$0</ul>', $text);

    // 7. Horizontální čára
    $text = preg_replace('/^---$/m', '<hr>', $text);

    // 8. Odstranění prázdných řádků a převod na <p>
    // Oddělíme bloky textu prázdnými řádky
    $blocks = preg_split('/\n\s*\n/', $text);
    $htmlBlocks = [];
    
    foreach ($blocks as $block) {
        $block = trim($block);
        if (empty($block)) continue;
        
        // Pokud blok již obsahuje HTML tagy (h1, pre, ul, hr), necháme ho tak
        if (preg_match('/^(<h[1-6]|<pre|<ul|<hr)/', $block)) {
            $htmlBlocks[] = $block;
        } else {
            // Jinak obalíme do <p>
            // Nahradíme jednotlivé nové řádky v textu za <br>
            $block = nl2br($block);
            $htmlBlocks[] = '<p>' . $block . '</p>';
        }
    }

    return implode("\n", $htmlBlocks);
}

// Převod
$htmlContent = markdownToHtml($markdownContent);

// Získání titulku z prvního řádku (pro <title> a <h1>)
$title = $slug;
if (preg_match('/^# (.*$)/m', $markdownContent, $matches)) {
    $title = $matches[1];
}

// Datum (z prvního řádku > Datum: ...)
$date = date('Y-m-d');
if (preg_match('/> Datum: (.*$)/m', $markdownContent, $dateMatches)) {
    $date = $dateMatches[1];
}

// Obsah stránky
$content = '
    <article>
        <h1 class="article-title">' . htmlspecialchars($title) . '</h1>
        <span class="article-date">' . htmlspecialchars($date) . '</span>
        <div class="content-body">
            ' . $htmlContent . '
        </div>
    </article>
';

$pageTitle = $title . ' - EndeavourOS CZ';
require PATH_TEMPLATES . 'base.php';
?>