fix: publish toggle error alert and event visibility

- Add proper error handling to toggle_event_published.php with HTTP status codes
- Add try-catch block for database operations in toggle endpoint
- Update events.php query to only show published events (added published = 1 filter)
- Add updated_at timestamp update when toggling publish status
- Improve error messages for better debugging
This commit is contained in:
twotalesanimation
2025-12-04 21:56:57 +02:00
parent f522b84fc1
commit 32651ed433
2 changed files with 46 additions and 29 deletions

View File

@@ -8,37 +8,54 @@ header('Content-Type: application/json');
$event_id = $_POST['event_id'] ?? null; $event_id = $_POST['event_id'] ?? null;
if (!$event_id) { if (!$event_id) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Event ID is required']); echo json_encode(['status' => 'error', 'message' => 'Event ID is required']);
exit; exit;
} }
// Get current published status try {
$stmt = $conn->prepare("SELECT published FROM events WHERE event_id = ?"); // Get current published status
$stmt->bind_param("i", $event_id); $stmt = $conn->prepare("SELECT published FROM events WHERE event_id = ?");
$stmt->execute(); if (!$stmt) {
$result = $stmt->get_result(); throw new Exception("Prepare failed: " . $conn->error);
}
$stmt->bind_param("i", $event_id);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows === 0) { if ($result->num_rows === 0) {
echo json_encode(['status' => 'error', 'message' => 'Event not found']); http_response_code(404);
exit; echo json_encode(['status' => 'error', 'message' => 'Event not found']);
$stmt->close();
exit;
}
$event = $result->fetch_assoc();
$new_status = $event['published'] == 1 ? 0 : 1;
$stmt->close();
// Update published status
$update_stmt = $conn->prepare("UPDATE events SET published = ?, updated_at = NOW() WHERE event_id = ?");
if (!$update_stmt) {
throw new Exception("Prepare failed: " . $conn->error);
}
$update_stmt->bind_param("ii", $new_status, $event_id);
if ($update_stmt->execute()) {
http_response_code(200);
echo json_encode([
'status' => 'success',
'message' => $new_status == 1 ? 'Event published' : 'Event unpublished',
'published' => $new_status
]);
} else {
throw new Exception("Update failed: " . $update_stmt->error);
}
$update_stmt->close();
} catch (Exception $e) {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => 'Database error: ' . $e->getMessage()]);
} }
$event = $result->fetch_assoc();
$new_status = $event['published'] == 1 ? 0 : 1;
// Update published status
$update_stmt = $conn->prepare("UPDATE events SET published = ? WHERE event_id = ?");
$update_stmt->bind_param("ii", $new_status, $event_id);
if ($update_stmt->execute()) {
echo json_encode([
'status' => 'success',
'message' => $new_status == 1 ? 'Event published' : 'Event unpublished',
'published' => $new_status
]);
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to update event status']);
}
$stmt->close();
$update_stmt->close();

View File

@@ -90,8 +90,8 @@ include_once($rootPath . '/header.php');
</div> </div>
<?php <?php
// Query to retrieve upcoming events // Query to retrieve upcoming published events only
$stmt = $conn->prepare("SELECT event_id, date, time, name, image, description, feature, location, type, promo FROM events WHERE date > CURDATE() ORDER BY date ASC"); $stmt = $conn->prepare("SELECT event_id, date, time, name, image, description, feature, location, type, promo FROM events WHERE date > CURDATE() AND published = 1 ORDER BY date ASC");
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();