prepare("INSERT INTO announcements (title, content, category, created_by) VALUES (?, ?, ?, ?)") ->execute([$title, $content, $category, $_SESSION['member_id']]); $success = "Announcement posted."; } else { $error = "Title and content are required."; } header("Location: index.php?msg=" . urlencode($success ?: $error)); exit(); } // Delete announcement if (isset($_GET['delete_announcement'])) { $pdo->prepare("DELETE FROM announcements WHERE id = ?")->execute([(int)$_GET['delete_announcement']]); header("Location: index.php"); exit(); } // Change member role if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'change_role') { $memberId = (int)$_POST['member_id']; $newRole = in_array($_POST['role'], ['member', 'admin']) ? $_POST['role'] : 'member'; // Prevent removing your own admin if ($memberId === (int)$_SESSION['member_id'] && $newRole !== 'admin') { $error = "You cannot remove your own admin role."; } else { $pdo->prepare("UPDATE members SET role = ? WHERE id = ?")->execute([$newRole, $memberId]); $success = "Role updated."; } header("Location: index.php?msg=" . urlencode($success ?: $error)); exit(); } // Approve photo submission if (isset($_GET['approve_photo'])) { $pdo->prepare("UPDATE gallery_submissions SET status = 'approved' WHERE id = ?")->execute([(int)$_GET['approve_photo']]); header("Location: index.php"); exit(); } // Reject/delete photo submission if (isset($_GET['delete_photo'])) { $stmt = $pdo->prepare("SELECT filename FROM gallery_submissions WHERE id = ?"); $stmt->execute([(int)$_GET['delete_photo']]); $row = $stmt->fetch(); if ($row) { $file = __DIR__ . '/../uploads/gallery_pending/' . $row['filename']; if (file_exists($file)) { unlink($file); } } $pdo->prepare("DELETE FROM gallery_submissions WHERE id = ?")->execute([(int)$_GET['delete_photo']]); header("Location: index.php"); exit(); } // Delete inquiry if (isset($_GET['delete_inquiry'])) { $pdo->prepare("DELETE FROM leadership_inquiries WHERE id = ?")->execute([(int)$_GET['delete_inquiry']]); header("Location: index.php"); exit(); } // Mark inquiry reviewed if (isset($_GET['review_inquiry'])) { $pdo->prepare("UPDATE leadership_inquiries SET reviewed = 1 WHERE id = ?")->execute([(int)$_GET['review_inquiry']]); header("Location: index.php"); exit(); } // Delete prayer request if (isset($_GET['delete_prayer'])) { $pdo->prepare("DELETE FROM prayer_requests WHERE id = ?")->execute([(int)$_GET['delete_prayer']]); header("Location: index.php"); exit(); } $msg = $_GET['msg'] ?? ''; // Fetch data $announcements = $pdo->query(" SELECT a.*, m.first_name, m.last_name FROM announcements a LEFT JOIN members m ON a.created_by = m.id ORDER BY a.created_at DESC ")->fetchAll(PDO::FETCH_ASSOC); $members = $pdo->query(" SELECT * FROM members ORDER BY last_name ASC, first_name ASC ")->fetchAll(PDO::FETCH_ASSOC); $prayers = $pdo->query(" SELECT * FROM prayer_requests ORDER BY created_at DESC ")->fetchAll(PDO::FETCH_ASSOC); $photoSubmissions = $pdo->query(" SELECT * FROM gallery_submissions WHERE status = 'pending' ORDER BY created_at DESC ")->fetchAll(PDO::FETCH_ASSOC); $inquiries = $pdo->query(" SELECT * FROM leadership_inquiries ORDER BY reviewed ASC, created_at DESC ")->fetchAll(PDO::FETCH_ASSOC); ?> Admin Panel | Knights of Columbus
arrow_back

ADMIN PANEL

Logout

Restricted Access

Administration

Announcements

No announcements yet.

Prayer Requests

No prayer requests.

""

•

delete

Photo Submissions

pending

No pending photo submissions.

Leadership Inquiries

Submitted via the Officers page. Review and follow up directly.

No inquiries yet.

Member Roles

Grant or revoke admin access. Admins can manage announcements, events, and member roles.

Name Membership # Email Current Role Change Role
(you)
—