Esenjin 7dfd600936 amélioration de l'affichage des nouveaux chapitres
modification de la logique, la partie publique ne prend en compte que la date publication
2025-02-25 12:07:11 +01:00

76 lines
2.4 KiB
PHP

<?php
require_once '../../includes/config.php';
require_once '../../includes/auth.php';
require_once '../../includes/stories.php';
if (!Auth::check()) {
http_response_code(401);
exit(json_encode(['success' => false, 'error' => 'Non autorisé']));
}
$input = json_decode(file_get_contents('php://input'), true);
$storyId = $input['storyId'] ?? null;
$chapterId = $input['chapterId'] ?? null;
$title = $input['title'] ?? '';
$content = $input['content'] ?? '';
$draft = $input['draft'] ?? false;
try {
// Ajout de logs pour déboguer
error_log('Données reçues: ' . print_r($input, true));
$story = Stories::get($storyId);
if (!$story) {
throw new Exception('Roman non trouvé');
}
if ($chapterId) {
// Mise à jour d'un chapitre existant
$chapterUpdated = false;
foreach ($story['chapters'] as &$chapter) {
if ($chapter['id'] === $chapterId) {
$wasInDraft = $chapter['draft'] ?? false;
$chapter['title'] = $title;
$chapter['content'] = $content;
$chapter['draft'] = $draft;
$chapter['updated'] = date('Y-m-d');
// Si le chapitre passe de brouillon à publié, ajouter la date de publication
if ($wasInDraft && !$draft) {
$chapter['published'] = date('Y-m-d H:i:s');
// Marquer le roman comme ayant du nouveau contenu
$story['publicUpdated'] = date('Y-m-d H:i:s');
}
$chapterUpdated = true;
break;
}
}
if (!$chapterUpdated) {
throw new Exception('Chapitre non trouvé');
}
} else {
// Nouveau chapitre
$story['chapters'][] = [
'id' => uniqid(),
'title' => $title,
'content' => $content,
'draft' => $draft,
'created' => date('Y-m-d'),
'updated' => date('Y-m-d')
];
}
if (!Stories::save($story)) {
throw new Exception('Erreur lors de la sauvegarde du roman');
}
echo json_encode(['success' => true]);
} catch (Exception $e) {
error_log('Erreur dans save-chapter.php: ' . $e->getMessage());
http_response_code(500);
echo json_encode([
'success' => false,
'error' => $e->getMessage()
]);
}