findById($book_id); if (!$book || $book['user_id'] != $user_id) { $_SESSION['error'] = "Книга не найдена или у вас нет доступа"; redirect('books.php'); } $is_edit = true; } // Обработка формы $cover_error = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!verify_csrf_token($_POST['csrf_token'] ?? '')) { $_SESSION['error'] = "Ошибка безопасности"; redirect($is_edit ? "book_edit.php?id=$book_id" : 'book_edit.php'); } $title = trim($_POST['title'] ?? ''); $description = trim($_POST['description'] ?? ''); $genre = trim($_POST['genre'] ?? ''); if (empty($title)) { $_SESSION['error'] = "Название книги обязательно"; } else { $data = [ 'title' => $title, 'description' => $description, 'genre' => $genre, 'user_id' => $user_id ]; $data['published'] = isset($_POST['published']) ? 1 : 0; // Обработка загрузки обложки if (isset($_FILES['cover_image']) && $_FILES['cover_image']['error'] === UPLOAD_ERR_OK) { $cover_result = handleCoverUpload($_FILES['cover_image'], $book_id); if ($cover_result['success']) { $bookModel->updateCover($book_id, $cover_result['filename']); // Обновляем данные книги $book = $bookModel->findById($book_id); } else { $cover_error = $cover_result['error']; } } // Обработка удаления обложки if (isset($_POST['delete_cover']) && $_POST['delete_cover'] == '1') { $bookModel->deleteCover($book_id); $book = $bookModel->findById($book_id); } if ($is_edit) { $success = $bookModel->update($book_id, $data); $message = $success ? "Книга успешно обновлена" : "Ошибка при обновлении книги"; } else { $success = $bookModel->create($data); $message = $success ? "Книга успешно создана" : "Ошибка при создании книги"; if ($success) { $new_book_id = $pdo->lastInsertId(); redirect("book_edit.php?id=$new_book_id"); } } if ($success) { $_SESSION['success'] = $message; redirect('books.php'); } else { $_SESSION['error'] = $message; } } } $page_title = $is_edit ? "Редактирование книги" : "Создание новой книги"; include 'views/header.php'; ?>

Текущая обложка:

Обложка
Разрешены: JPG, PNG, GIF, WebP. Максимальный размер: 5MB. Рекомендуемый размер: 300×450 пикселей.

Публичная ссылка для чтения

Отправьте эту ссылку читателям для просмотра опубликованных глав:

Примечание: В публичном просмотре отображаются только главы со статусом "Опубликована"

Экспорт книги

Экспортируйте книгу в различные форматы:

📄 PDF 📝 DOCX 🌐 HTML 📄 TXT

Примечание: Экспортируются все главы книги (включая черновики)

Главы этой книги

📑 Все главы   ✏️ Добавить главу prepare("SELECT * FROM chapters WHERE book_id = ? ORDER BY sort_order, created_at"); $stmt->execute([$book_id]); $chapters = $stmt->fetchAll(); if ($chapters): ?>
Название Статус Слов Действия
Редактировать

В этой книге пока нет глав.

✏️ Добавить первую главу