prepare('SELECT * FROM novena_groups WHERE id = ?'); $group->execute([$gid]); $group = $group->fetch(); if (!$group) { header('Location: ' . BASE_URL . '/admin/'); exit; } // Ownership check if (!has_role('admin') && (int)$group['user_id'] !== $uid) { header('Location: ' . BASE_URL . '/admin/'); exit; } $is_dm = ($group['mystery_set'] === 'chaplet'); // Handle delete of a single day session if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_day_id'])) { $did = (int)$_POST['delete_day_id']; $pdo->prepare('DELETE FROM sessions WHERE id = ? AND novena_group_id = ?')->execute([$did, $gid]); $remaining = (int)$pdo->query("SELECT COUNT(*) FROM sessions WHERE novena_group_id = {$gid}")->fetchColumn(); if ($remaining < 1) { $pdo->prepare('DELETE FROM novena_groups WHERE id = ?')->execute([$gid]); header('Location: ' . BASE_URL . '/admin/'); exit; } header('Location: ' . BASE_URL . '/admin/novena_group.php?id=' . $gid . '&deleted=1'); exit; } // Handle group-level metadata edit $save_error = ''; $save_success = false; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save_group'])) { $g_name = trim($_POST['g_name'] ?? ''); $g_photo = trim($_POST['g_photo'] ?? '') ?: null; $g_public = isset($_POST['is_public']) ? 1 : 0; if ($is_dm) { // Divine Mercy: keep mystery_set as 'chaplet', no subject fields $g_mystery = 'chaplet'; $g_subject = null; $g_pronoun = null; $g_dates = null; } else { $g_mystery = trim($_POST['g_mystery'] ?? ''); $g_subject = trim($_POST['g_subject'] ?? '') ?: null; $g_pronoun = trim($_POST['g_pronoun'] ?? '') ?: null; $g_dates = trim($_POST['g_dates'] ?? '') ?: null; } $valid_mysteries = ['sorrowful', 'joyful', 'glorious', 'luminous', 'by_day_of_week', 'chaplet']; if ($g_name === '') { $save_error = 'Name is required.'; } elseif (!in_array($g_mystery, $valid_mysteries, true)) { $save_error = 'Invalid mystery set.'; } else { $pdo->prepare(' UPDATE novena_groups SET name = ?, mystery_set = ?, subject_name = ?, subject_pronoun = ?, subject_dates = ?, photo_path = COALESCE(?, photo_path), is_public = ? WHERE id = ? ')->execute([$g_name, $g_mystery, $g_subject, $g_pronoun, $g_dates, $g_photo, $g_public, $gid]); $pdo->prepare(' UPDATE sessions SET mystery_set = ?, subject_name = ?, subject_pronoun = ?, subject_dates = ?, photo_path = COALESCE(?, photo_path), name = CONCAT(?, CONCAT(\' — Day \', novena_day)), is_public = ? WHERE novena_group_id = ? ')->execute([$g_mystery, $g_subject, $g_pronoun, $g_dates, $g_photo, $g_name, $g_public, $gid]); $save_success = true; // Reload group $grp_stmt = $pdo->prepare('SELECT * FROM novena_groups WHERE id = ?'); $grp_stmt->execute([$gid]); $group = $grp_stmt->fetch(); } } $days = $pdo->prepare('SELECT * FROM sessions WHERE novena_group_id = ? ORDER BY novena_day'); $days->execute([$gid]); $days = $days->fetchAll(); $mystery_labels = [ 'sorrowful' => 'Sorrowful Mysteries', 'joyful' => 'Joyful Mysteries', 'glorious' => 'Glorious Mysteries', 'luminous' => 'Luminous Mysteries', 'by_day_of_week' => 'By Day of Week', 'chaplet' => 'Chaplet of Divine Mercy', ]; ?> <?= htmlspecialchars($group['name']) ?> — <?= htmlspecialchars($site_name) ?>

Day deleted successfully.
✓ Novena updated. Changes applied to all 9 day sessions.

Novena Details

Used as the base name for all 9 days.

Current photo

Days ( of 9)

>
Day Mysteries Actions
Day missing' ?> Present