setTimezone(new DateTimeZone($timezone)); } return $date->format('l, F j, Y \a\t g:i A T'); } catch (Throwable $e) { return $scheduledAt; } } $attendeeId = resolve_attendee_id(); if ($attendeeId === null) { http_response_code(400); echo 'Invalid webinar access link.'; exit; } $attendee = null; $webinar = null; try { $stmt = db()->prepare('SELECT * FROM attendees WHERE id = ? AND deleted_at IS NULL'); $stmt->execute([$attendeeId]); $attendee = $stmt->fetch(PDO::FETCH_ASSOC); if ($attendee) { $stmt = db()->prepare('SELECT * FROM webinars WHERE id = ?'); $stmt->execute([(int) $attendee['webinar_id']]); $webinar = $stmt->fetch(PDO::FETCH_ASSOC); } } catch (PDOException $e) { error_log('Join page lookup failed: ' . $e->getMessage()); } if (!$attendee || !$webinar) { http_response_code(404); echo 'Registration not found.'; exit; } $participantName = trim((string) (($attendee['first_name'] ?? '') . ' ' . ($attendee['last_name'] ?? ''))); $participantName = $participantName !== '' ? $participantName : ((string) ($attendee['email'] ?? 'Guest')); $scheduledLabel = format_join_datetime($webinar['scheduled_at'] ?? null, $attendee['timezone'] ?? null); ?> Join Webinar | AppWizzy
Access confirmed

Welcome, !

Your registration is active. When the live room is available, this page is where you can connect attendees to the webinar experience.

Webinar
Scheduled time
Registered email
Timezone
Back to dashboard Open main site