<?php
require_once 'includes/config.php';
require_once 'includes/stories.php';

// Récupération des paramètres
$storyId = $_GET['story'] ?? '';
$chapterId = $_GET['chapter'] ?? '';

if (!$storyId || !$chapterId) {
    header('Location: index.php');
    exit;
}

// Chargement du roman
$story = Stories::get($storyId);
if (!$story) {
    header('Location: index.php');
    exit;
}

// Recherche du chapitre
$currentChapter = null;
$currentIndex = -1;
foreach ($story['chapters'] as $index => $chapter) {
    if ($chapter['id'] === $chapterId) {
        $currentChapter = $chapter;
        $currentIndex = $index;
        break;
    }
}

if (!$currentChapter) {
    header('Location: roman.php?id=' . urlencode($storyId));
    exit;
}

// Fonction pour convertir le contenu Delta en HTML
function deltaToHtml($content) {
    if (empty($content)) return '';
    
    // Si le contenu est déjà en HTML (ancien format)
    if (is_string($content) && !isJson($content)) {
        return $content;
    }
    
    // Convertir la chaîne JSON en tableau si nécessaire
    if (is_string($content)) {
        $delta = json_decode($content, true);
    } else {
        $delta = $content;
    }
    
    if (!isset($delta['ops'])) return '';
    
    $html = '';
    foreach ($delta['ops'] as $op) {
        if (is_string($op['insert'])) {
            $text = htmlspecialchars($op['insert']);
            
            // Gérer les styles de texte
            if (isset($op['attributes'])) {
                if (!empty($op['attributes']['bold'])) {
                    $text = "<strong>{$text}</strong>";
                }
                if (!empty($op['attributes']['italic'])) {
                    $text = "<em>{$text}</em>";
                }
                if (!empty($op['attributes']['underline'])) {
                    $text = "<u>{$text}</u>";
                }
                // Ajouter d'autres styles si nécessaire
            }
            
            // Convertir les retours à la ligne en paragraphes
            if ($text === "\n") {
                $html .= "<br>";
            } else {
                $html .= $text;
            }
        } 
        // Gérer les images
            elseif (is_array($op['insert']) && isset($op['insert']['image'])) {
                $imageUrl = $op['insert']['image'];
                error_log('URL originale: ' . $imageUrl);
                // Retirer tous les "../" au début de l'URL
                $imageUrl = preg_replace('/^(?:\.\.\/)+/', '', $imageUrl);
                error_log('URL nettoyée: ' . $imageUrl);
                $html .= "<img src=\"{$imageUrl}\" alt=\"Image du chapitre\">";
            }
    }
    
    // Envelopper le contenu dans des balises p si nécessaire
    if (!empty($html)) {
        $paragraphs = explode("\n\n", $html);
        $html = '';
        foreach ($paragraphs as $p) {
            if (trim($p) !== '') {
                $html .= "<p>{$p}</p>";
            }
        }
    }
    
    return $html;
}

function isJson($string) {
    json_decode($string);
    return json_last_error() === JSON_ERROR_NONE;
}

// Récupération des chapitres précédent et suivant
$prevChapter = $currentIndex > 0 ? $story['chapters'][$currentIndex - 1] : null;
$nextChapter = $currentIndex < count($story['chapters']) - 1 ? $story['chapters'][$currentIndex + 1] : null;

$config = Config::load();
?>
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= htmlspecialchars($currentChapter['title']) ?> - <?= htmlspecialchars($story['title']) ?> - <?= htmlspecialchars($config['site']['name']) ?></title>
    
    <?php if (file_exists(__DIR__ . '/assets/images/site/favicon.png')): ?>
        <link rel="icon" type="image/png" href="assets/images/site/favicon.png">
    <?php endif; ?>
    
    <link rel="stylesheet" href="assets/css/public.css">
    
    <meta name="description" content="<?= htmlspecialchars($story['title']) ?> - <?= htmlspecialchars($currentChapter['title']) ?>">
</head>
<body>
    <!-- En-tête simple -->
    <header class="novel-header" style="height: 180px;">
        <h1><?= htmlspecialchars($currentChapter['title']) ?></h1>
    </header>

    <!-- Contenu principal -->
    <div class="novel-content">
        <div class="novel-description chapter-content">
            <?= deltaToHtml($currentChapter['content']) ?>
            
            <!-- Navigation entre chapitres -->
            <div class="chapter-navigation">
                <?php if ($prevChapter): ?>
                    <a href="?story=<?= urlencode($storyId) ?>&chapter=<?= urlencode($prevChapter['id']) ?>" 
                       class="chapter-nav prev-chapter">
                        &larr; <?= htmlspecialchars($prevChapter['title']) ?>
                    </a>
                <?php endif; ?>
                
                <?php if ($nextChapter): ?>
                    <a href="?story=<?= urlencode($storyId) ?>&chapter=<?= urlencode($nextChapter['id']) ?>" 
                       class="chapter-nav next-chapter">
                        <?= htmlspecialchars($nextChapter['title']) ?> &rarr;
                    </a>
                <?php endif; ?>
            </div>
        </div>

        <aside class="chapters-menu">
            <h2>Chapitres</h2>
            <ul class="chapters-list">
                <?php foreach ($story['chapters'] as $chapter): ?>
                    <li>
                        <a href="?story=<?= urlencode($storyId) ?>&chapter=<?= urlencode($chapter['id']) ?>"
                           class="<?= $chapter['id'] === $chapterId ? 'current-chapter' : '' ?>">
                            <?= htmlspecialchars($chapter['title']) ?>
                        </a>
                    </li>
                <?php endforeach; ?>
            </ul>
        </aside>
    </div>

    <div class="back-to-home">
        <a href="index.php">&larr; Retour à l'accueil</a> | <a href="roman.php?id=<?= urlencode($storyId) ?>">&larr; Retour au roman</a>
    </div>
</body>
</html>