From fe7ebfad4da736be549ad72e579ac5847b1a9b74 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 25 Mar 2026 16:36:31 +0000 Subject: [PATCH] 12345 --- admin.php | 99 +++++- assets/pasted-20260325-163454-1eca4df8.png | Bin 0 -> 79007 bytes includes/webinar_email.php | 176 +++++++++++ mail/mail.log | 351 +++++++++++++++++++++ register.php | Bin 12542 -> 7265 bytes resend_webinar_email.php | 73 +++++ 6 files changed, 697 insertions(+), 2 deletions(-) create mode 100644 assets/pasted-20260325-163454-1eca4df8.png create mode 100644 includes/webinar_email.php create mode 100644 resend_webinar_email.php diff --git a/admin.php b/admin.php index 7298848..d23b7fb 100644 --- a/admin.php +++ b/admin.php @@ -2,6 +2,7 @@ session_start(); require_once 'db/config.php'; require_once 'includes/admin_auth.php'; +require_once 'includes/webinar_email.php'; admin_require_login(); @@ -30,7 +31,7 @@ $records_per_page = 15; $page = isset($_GET['page']) && is_numeric($_GET['page']) ? max(1, (int) $_GET['page']) : 1; $selected_webinar_id = isset($_GET['webinar_id']) && is_numeric($_GET['webinar_id']) ? max(0, (int) $_GET['webinar_id']) : 0; -$webinars = $pdo->query('SELECT id, title, scheduled_at FROM webinars ORDER BY scheduled_at DESC, id DESC')->fetchAll(PDO::FETCH_ASSOC); +$webinars = $pdo->query('SELECT id, title, description, presenter, scheduled_at FROM webinars ORDER BY scheduled_at DESC, id DESC')->fetchAll(PDO::FETCH_ASSOC); $where_parts = ['a.deleted_at IS NULL']; $params = []; @@ -113,6 +114,17 @@ foreach ($webinars as $webinar) { } } +$preview_webinar = $selected_webinar ?? ($webinars[0] ?? null); +$preview_email_payload = null; +$preview_scope_note = null; + +if ($preview_webinar) { + $preview_email_payload = webinar_build_email_payload('there', $preview_webinar, true); + $preview_scope_note = $selected_webinar + ? 'This preview matches the correction email for the selected webinar.' + : 'Preview shows the correction email template for the most recent webinar. When "All webinars" is selected, each attendee still receives the version for their own webinar.'; +} + $chart_labels = json_encode(array_column($chart_data, 'registration_day')); $chart_values = json_encode(array_column($chart_data, 'user_count')); $export_link = 'export_csv.php' . ($selected_webinar_id > 0 ? '?webinar_id=' . urlencode((string) $selected_webinar_id) : ''); @@ -314,6 +326,50 @@ $export_link = 'export_csv.php' . ($selected_webinar_id > 0 ? '?webinar_id=' . u border-radius: 16px; margin-top: 1.2rem; } + .email-preview-card { + margin-bottom: 1.5rem; + } + .email-preview-badges { + display: flex; + gap: 0.55rem; + flex-wrap: wrap; + } + .email-preview-meta { + display: grid; + gap: 0.45rem; + margin-bottom: 1rem; + color: var(--text-soft); + } + .email-preview-frame-wrap { + overflow: hidden; + border-radius: 20px; + border: 1px solid var(--line); + background: rgba(255, 255, 255, 0.08); + } + .email-preview-frame { + width: 100%; + min-height: 920px; + border: 0; + background: #ffffff; + } + .email-text-details { + margin-top: 1rem; + } + .email-text-details summary { + cursor: pointer; + font-weight: 700; + color: var(--text-main); + } + .email-text-preview { + margin: 0.85rem 0 0; + padding: 1rem; + border-radius: 16px; + border: 1px solid var(--line); + background: rgba(221, 226, 253, 0.08); + color: var(--text-soft); + white-space: pre-wrap; + word-break: break-word; + } code { color: var(--accent-soft, #bbc8fb); } @@ -328,6 +384,9 @@ $export_link = 'export_csv.php' . ($selected_webinar_id > 0 ? '?webinar_id=' . u .form-control { min-width: 210px; } + .email-preview-frame { + min-height: 760px; + } } @@ -360,13 +419,49 @@ $export_link = 'export_csv.php' . ($selected_webinar_id > 0 ? '?webinar_id=' . u Reset -
+
Download CSV +
+ + +
View site Log out +
Sends the corrected webinar time, Google Meet link, Google Calendar button, and .ics file to all active attendees.
+ + + +
Total registrations
diff --git a/assets/pasted-20260325-163454-1eca4df8.png b/assets/pasted-20260325-163454-1eca4df8.png new file mode 100644 index 0000000000000000000000000000000000000000..34716618b2b673333464cfeae68ea6d7edf2ce8e GIT binary patch literal 79007 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 literal 0 HcmV?d00001 diff --git a/includes/webinar_email.php b/includes/webinar_email.php new file mode 100644 index 0000000..c4efc7f --- /dev/null +++ b/includes/webinar_email.php @@ -0,0 +1,176 @@ +We updated the webinar timing to reflect U.S. daylight saving time. Please use the corrected schedule and links below.

'; + $noteHtml = '

If you already saved the older calendar event, please remove it and add the updated one from this email.

'; + $headline = 'Updated Webinar Details'; + $introText = 'We updated the webinar timing to reflect U.S. daylight saving time. Please use the corrected schedule and links below.'; + $noteText = 'If you already saved the older calendar event, please remove it and add the updated one from this email.'; + } else { + $subject = "Confirmation: You're Registered for {$eventTitle}"; + $introHtml = '

Thank you for registering for the ' . $safeTitle . ' webinar.

We are excited to have you join us for this professional vibe-coding session.

'; + $noteHtml = '

Your webinar link is below, and you can add the corrected event to your calendar right now.

'; + $headline = "You're Registered!"; + $introText = 'Thank you for registering for the ' . $eventTitle . ' webinar. We are excited to have you join us for this professional vibe-coding session.'; + $noteText = 'Your webinar link is below, and you can add the corrected event to your calendar right now.'; + } + + $bodyHtml = << + + + + + {$safeTitle} + + + + + + +
+ + + + + + + + + + +
+ AppWizzy Logo +

{$headline}

+
+

Hello {$safeFirstName},

+ {$introHtml} +
+

Webinar details

+

{$safeDateLong} | {$safeBerlinLabel} | {$safeNewYorkLabel} | {$safeLosAngelesLabel}

+
+

Join the live session here:

+

{$safeJoinUrl}

+ {$noteHtml} +

+ Join Webinar + Add to Google Calendar +

+

+ Download calendar file (.ics) +

+

You'll learn the fastest way to go from an idea to a working app you own, running on your server, with your database, using real frameworks.

+
+

© 2026 AppWizzy. All rights reserved.

+

You can visit our website for more information.

+
+
+ + +HTML; + + $textBody = implode(" + +", [ + 'Hello ' . (trim($firstName) !== '' ? trim($firstName) : 'there') . ',', + $introText, + 'Webinar details: ' . $schedule['date_long'] . ' | ' . $schedule['berlin_label'] . ' | ' . $schedule['new_york_label'] . ' | ' . $schedule['los_angeles_label'], + 'Join webinar: ' . $joinUrl, + $noteText, + 'Add to Google Calendar: ' . $googleLink, + 'Download calendar file (.ics): ' . $outlookLink, + ]); + + return [ + 'subject' => $subject, + 'html' => $bodyHtml, + 'text' => $textBody, + 'schedule' => $schedule, + 'google_link' => $googleLink, + 'outlook_link' => $outlookLink, + 'join_url' => $joinUrl, + 'event_title' => $eventTitle, + ]; +} diff --git a/mail/mail.log b/mail/mail.log index 3b8563d..82e8ffd 100644 --- a/mail/mail.log +++ b/mail/mail.log @@ -33677,3 +33677,354 @@ CLIENT -> SERVER: . SERVER -> CLIENT: 250 Ok 0100019d1ba46d9e-2657f32b-c66e-4498-80c2-1f0e6199d3e7-000000 CLIENT -> SERVER: QUIT SERVER -> CLIENT: 221 Bye +SERVER -> CLIENT: 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-8G5AYW8II Gml5Eqe0G82LibJ6JrqC +CLIENT -> SERVER: EHLO vm-39074.dev.flatlogic.app +SERVER -> CLIENT: 250-email-smtp.amazonaws.com +250-8BITMIME +250-STARTTLS +250-AUTH PLAIN LOGIN +250 Ok +CLIENT -> SERVER: STARTTLS +SERVER -> CLIENT: 220 Ready to start TLS +CLIENT -> SERVER: EHLO vm-39074.dev.flatlogic.app +SERVER -> CLIENT: 250-email-smtp.amazonaws.com +250-8BITMIME +250-AUTH PLAIN LOGIN +250 Ok +CLIENT -> SERVER: AUTH LOGIN +SERVER -> CLIENT: 334 VXNlcm5hbWU6 +CLIENT -> SERVER: [credentials hidden]SERVER -> CLIENT: 334 UGFzc3dvcmQ6 +CLIENT -> SERVER: [credentials hidden]SERVER -> CLIENT: 235 Authentication successful. +CLIENT -> SERVER: MAIL FROM: +SERVER -> CLIENT: 250 Ok +CLIENT -> SERVER: RCPT TO: +SERVER -> CLIENT: 250 Ok +CLIENT -> SERVER: DATA +SERVER -> CLIENT: 354 End data with . +CLIENT -> SERVER: Date: Wed, 25 Mar 2026 16:33:41 +0000 +CLIENT -> SERVER: To: builderbotflores@gmail.com +CLIENT -> SERVER: From: Flatlogic Team Customer Success +CLIENT -> SERVER: Reply-To: support@flatlogic.com +CLIENT -> SERVER: Subject: Updated webinar time and join link for Building Scalable Apps with AppWizzy +CLIENT -> SERVER: Message-ID: <1KrYtg462hV7kUhIEH6Do0l2rTywHWHSm9Gz7yu4@vm-39074.dev.flatlogic.app> +CLIENT -> SERVER: X-Mailer: PHPMailer 6.6.3 (https://github.com/PHPMailer/PHPMailer) +CLIENT -> SERVER: MIME-Version: 1.0 +CLIENT -> SERVER: Content-Type: multipart/alternative; +CLIENT -> SERVER: boundary="b1_1KrYtg462hV7kUhIEH6Do0l2rTywHWHSm9Gz7yu4" +CLIENT -> SERVER: Content-Transfer-Encoding: 8bit +CLIENT -> SERVER: +CLIENT -> SERVER: This is a multi-part message in MIME format. +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_1KrYtg462hV7kUhIEH6Do0l2rTywHWHSm9Gz7yu4 +CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii +CLIENT -> SERVER: +CLIENT -> SERVER: Hello Flores, +CLIENT -> SERVER: +CLIENT -> SERVER: We updated the webinar timing to reflect U.S. daylight saving time. Please use the corrected schedule and links below. +CLIENT -> SERVER: +CLIENT -> SERVER: Webinar details: Wednesday, March 25, 2026 | 6PM CET | 1PM EDT | 10AM PDT +CLIENT -> SERVER: +CLIENT -> SERVER: Join webinar: https://meet.google.com/ohs-ayvx-dqg +CLIENT -> SERVER: +CLIENT -> SERVER: If you already saved the older calendar event, please remove it and add the updated one from this email. +CLIENT -> SERVER: +CLIENT -> SERVER: Add to Google Calendar: https://www.google.com/calendar/render?action=TEMPLATE&text=Building+Scalable+Apps+with+AppWizzy&dates=20260325T170000Z/20260325T180000Z&details=Professional+Vibe-Coding+Webinar%0A%0AJoin+us+on+Wednesday%2C+March+25%2C+2026+at+6PM+CET+%7C+1PM+EDT+%7C+10AM+PDT.%0A%0AGoogle+Meet+link%3A+https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%0A%0AThe+fastest+way+to+go+from+an+idea+to+a+working+app+you+own%2C+running+on+your+server%2C+with+your+database%2C+using+real+frameworks.&location=https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg&ctz=UTC +CLIENT -> SERVER: +CLIENT -> SERVER: Download calendar file (.ics): data:text/calendar;charset=utf-8,BEGIN%3AVCALENDAR%0AVERSION%3A2.0%0APRODID%3A-%2F%2FFlatlogic%2F%2FBuilding%20Scalable%20Apps%20with%20AppWizzy%2F%2FEN%0ABEGIN%3AVEVENT%0AURL%3Ahttp%3A%2F%2Fvm-39074.dev.flatlogic.app%0ADTSTART%3A20260325T170000Z%0ADTEND%3A20260325T180000Z%0ASUMMARY%3ABuilding%20Scalable%20Apps%20with%20AppWizzy%0ADESCRIPTION%3AProfessional%20Vibe-Coding%20Webinar%5Cn%5CnJoin%20us%20on%20Wednesday%2C%20March%2025%2C%202026%20at%206PM%20CET%20%7C%201PM%20EDT%20%7C%2010AM%20PDT.%5Cn%5CnGoogle%20Meet%20link%3A%20https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%5Cn%5CnThe%20fastest%20way%20to%20go%20from%20an%20idea%20to%20a%20working%20app%20you%20own%2C%20running%20on%20your%20server%2C%20with%20your%20database%2C%20using%20real%20frameworks.%0ALOCATION%3Ahttps%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%0AEND%3AVEVENT%0AEND%3AVCALENDAR +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_1KrYtg462hV7kUhIEH6Do0l2rTywHWHSm9Gz7yu4 +CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: Building Scalable Apps with AppWizzy +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER:
+CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER:
+CLIENT -> SERVER: AppWizzy Logo +CLIENT -> SERVER:

Updated Webinar Details

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Hello Flores,

+CLIENT -> SERVER:

We updated the webinar timing to reflect U.S. daylight saving time. Please use the corrected schedule and links below.

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Webinar details

+CLIENT -> SERVER:

Wednesday, March 25, 2026 | 6PM CET | 1PM EDT | 10AM PDT

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Join the live session here:

+CLIENT -> SERVER:

https://meet.google.com/ohs-ayvx-dqg

+CLIENT -> SERVER:

If you already saved the older calendar event, please remove it and add the updated one from this email.

+CLIENT -> SERVER:

+CLIENT -> SERVER: Join Webinar +CLIENT -> SERVER: Add to Google Calendar +CLIENT -> SERVER:

+CLIENT -> SERVER:

+CLIENT -> SERVER: Download calendar file (.ics) +CLIENT -> SERVER:

+CLIENT -> SERVER:

You'll learn the fastest way to go from an idea to a working app you own, running on your server, with your database, using real frameworks.

+CLIENT -> SERVER:
+CLIENT -> SERVER:

© 2026 AppWizzy. All rights reserved.

+CLIENT -> SERVER:

You can visit our website for more information.

+CLIENT -> SERVER:
+CLIENT -> SERVER:
+CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_1KrYtg462hV7kUhIEH6Do0l2rTywHWHSm9Gz7yu4-- +CLIENT -> SERVER: +CLIENT -> SERVER: . +SERVER -> CLIENT: 250 Ok 0100019d25d83f3f-598e01c6-5430-4f5d-8189-3b733f243fbd-000000 +CLIENT -> SERVER: QUIT +SERVER -> CLIENT: 221 Bye +SERVER -> CLIENT: 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-8G5AYW8II ecwRSm3nfW7Dw92OjHWx +CLIENT -> SERVER: EHLO vm-39074.dev.flatlogic.app +SERVER -> CLIENT: 250-email-smtp.amazonaws.com +250-8BITMIME +250-STARTTLS +250-AUTH PLAIN LOGIN +250 Ok +CLIENT -> SERVER: STARTTLS +SERVER -> CLIENT: 220 Ready to start TLS +CLIENT -> SERVER: EHLO vm-39074.dev.flatlogic.app +SERVER -> CLIENT: 250-email-smtp.amazonaws.com +250-8BITMIME +250-AUTH PLAIN LOGIN +250 Ok +CLIENT -> SERVER: AUTH LOGIN +SERVER -> CLIENT: 334 VXNlcm5hbWU6 +CLIENT -> SERVER: [credentials hidden]SERVER -> CLIENT: 334 UGFzc3dvcmQ6 +CLIENT -> SERVER: [credentials hidden]SERVER -> CLIENT: 235 Authentication successful. +CLIENT -> SERVER: MAIL FROM: +SERVER -> CLIENT: 250 Ok +CLIENT -> SERVER: RCPT TO: +SERVER -> CLIENT: 250 Ok +CLIENT -> SERVER: DATA +SERVER -> CLIENT: 354 End data with . +CLIENT -> SERVER: Date: Wed, 25 Mar 2026 16:33:55 +0000 +CLIENT -> SERVER: To: builderbotflores@gmail.com +CLIENT -> SERVER: From: Flatlogic Team Customer Success +CLIENT -> SERVER: Reply-To: support@flatlogic.com +CLIENT -> SERVER: Subject: Updated webinar time and join link for Building Scalable Apps with AppWizzy +CLIENT -> SERVER: Message-ID: +CLIENT -> SERVER: X-Mailer: PHPMailer 6.6.3 (https://github.com/PHPMailer/PHPMailer) +CLIENT -> SERVER: MIME-Version: 1.0 +CLIENT -> SERVER: Content-Type: multipart/alternative; +CLIENT -> SERVER: boundary="b1_da4z0Cdtq1JEP2XQWT7HU7BwytoBYggMc9NHWRgD0" +CLIENT -> SERVER: Content-Transfer-Encoding: 8bit +CLIENT -> SERVER: +CLIENT -> SERVER: This is a multi-part message in MIME format. +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_da4z0Cdtq1JEP2XQWT7HU7BwytoBYggMc9NHWRgD0 +CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii +CLIENT -> SERVER: +CLIENT -> SERVER: Hello Flores, +CLIENT -> SERVER: +CLIENT -> SERVER: We updated the webinar timing to reflect U.S. daylight saving time. Please use the corrected schedule and links below. +CLIENT -> SERVER: +CLIENT -> SERVER: Webinar details: Wednesday, March 25, 2026 | 6PM CET | 1PM EDT | 10AM PDT +CLIENT -> SERVER: +CLIENT -> SERVER: Join webinar: https://meet.google.com/ohs-ayvx-dqg +CLIENT -> SERVER: +CLIENT -> SERVER: If you already saved the older calendar event, please remove it and add the updated one from this email. +CLIENT -> SERVER: +CLIENT -> SERVER: Add to Google Calendar: https://www.google.com/calendar/render?action=TEMPLATE&text=Building+Scalable+Apps+with+AppWizzy&dates=20260325T170000Z/20260325T180000Z&details=Professional+Vibe-Coding+Webinar%0A%0AJoin+us+on+Wednesday%2C+March+25%2C+2026+at+6PM+CET+%7C+1PM+EDT+%7C+10AM+PDT.%0A%0AGoogle+Meet+link%3A+https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%0A%0AThe+fastest+way+to+go+from+an+idea+to+a+working+app+you+own%2C+running+on+your+server%2C+with+your+database%2C+using+real+frameworks.&location=https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg&ctz=UTC +CLIENT -> SERVER: +CLIENT -> SERVER: Download calendar file (.ics): data:text/calendar;charset=utf-8,BEGIN%3AVCALENDAR%0AVERSION%3A2.0%0APRODID%3A-%2F%2FFlatlogic%2F%2FBuilding%20Scalable%20Apps%20with%20AppWizzy%2F%2FEN%0ABEGIN%3AVEVENT%0AURL%3Ahttp%3A%2F%2Fvm-39074.dev.flatlogic.app%0ADTSTART%3A20260325T170000Z%0ADTEND%3A20260325T180000Z%0ASUMMARY%3ABuilding%20Scalable%20Apps%20with%20AppWizzy%0ADESCRIPTION%3AProfessional%20Vibe-Coding%20Webinar%5Cn%5CnJoin%20us%20on%20Wednesday%2C%20March%2025%2C%202026%20at%206PM%20CET%20%7C%201PM%20EDT%20%7C%2010AM%20PDT.%5Cn%5CnGoogle%20Meet%20link%3A%20https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%5Cn%5CnThe%20fastest%20way%20to%20go%20from%20an%20idea%20to%20a%20working%20app%20you%20own%2C%20running%20on%20your%20server%2C%20with%20your%20database%2C%20using%20real%20frameworks.%0ALOCATION%3Ahttps%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%0AEND%3AVEVENT%0AEND%3AVCALENDAR +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_da4z0Cdtq1JEP2XQWT7HU7BwytoBYggMc9NHWRgD0 +CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: Building Scalable Apps with AppWizzy +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER:
+CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER:
+CLIENT -> SERVER: AppWizzy Logo +CLIENT -> SERVER:

Updated Webinar Details

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Hello Flores,

+CLIENT -> SERVER:

We updated the webinar timing to reflect U.S. daylight saving time. Please use the corrected schedule and links below.

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Webinar details

+CLIENT -> SERVER:

Wednesday, March 25, 2026 | 6PM CET | 1PM EDT | 10AM PDT

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Join the live session here:

+CLIENT -> SERVER:

https://meet.google.com/ohs-ayvx-dqg

+CLIENT -> SERVER:

If you already saved the older calendar event, please remove it and add the updated one from this email.

+CLIENT -> SERVER:

+CLIENT -> SERVER: Join Webinar +CLIENT -> SERVER: Add to Google Calendar +CLIENT -> SERVER:

+CLIENT -> SERVER:

+CLIENT -> SERVER: Download calendar file (.ics) +CLIENT -> SERVER:

+CLIENT -> SERVER:

You'll learn the fastest way to go from an idea to a working app you own, running on your server, with your database, using real frameworks.

+CLIENT -> SERVER:
+CLIENT -> SERVER:

© 2026 AppWizzy. All rights reserved.

+CLIENT -> SERVER:

You can visit our website for more information.

+CLIENT -> SERVER:
+CLIENT -> SERVER:
+CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_da4z0Cdtq1JEP2XQWT7HU7BwytoBYggMc9NHWRgD0-- +CLIENT -> SERVER: +CLIENT -> SERVER: . +SERVER -> CLIENT: 250 Ok 0100019d25d87450-e128af55-2ecd-4b71-a4c2-cca740e0fc0f-000000 +CLIENT -> SERVER: QUIT +SERVER -> CLIENT: 221 Bye +SERVER -> CLIENT: 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-FZY12I9II sSFAlJVyj7Iv2WiFNoBz +CLIENT -> SERVER: EHLO vm-39074.dev.flatlogic.app +SERVER -> CLIENT: 250-email-smtp.amazonaws.com +250-8BITMIME +250-STARTTLS +250-AUTH PLAIN LOGIN +250 Ok +CLIENT -> SERVER: STARTTLS +SERVER -> CLIENT: 220 Ready to start TLS +CLIENT -> SERVER: EHLO vm-39074.dev.flatlogic.app +SERVER -> CLIENT: 250-email-smtp.amazonaws.com +250-8BITMIME +250-AUTH PLAIN LOGIN +250 Ok +CLIENT -> SERVER: AUTH LOGIN +SERVER -> CLIENT: 334 VXNlcm5hbWU6 +CLIENT -> SERVER: [credentials hidden]SERVER -> CLIENT: 334 UGFzc3dvcmQ6 +CLIENT -> SERVER: [credentials hidden]SERVER -> CLIENT: 235 Authentication successful. +CLIENT -> SERVER: MAIL FROM: +SERVER -> CLIENT: 250 Ok +CLIENT -> SERVER: RCPT TO: +SERVER -> CLIENT: 250 Ok +CLIENT -> SERVER: DATA +SERVER -> CLIENT: 354 End data with . +CLIENT -> SERVER: Date: Wed, 25 Mar 2026 16:35:06 +0000 +CLIENT -> SERVER: To: builderbotflores@gmail.com +CLIENT -> SERVER: From: Flatlogic Team Customer Success +CLIENT -> SERVER: Reply-To: support@flatlogic.com +CLIENT -> SERVER: Subject: Updated webinar time and join link for Building Scalable Apps with AppWizzy +CLIENT -> SERVER: Message-ID: +CLIENT -> SERVER: X-Mailer: PHPMailer 6.6.3 (https://github.com/PHPMailer/PHPMailer) +CLIENT -> SERVER: MIME-Version: 1.0 +CLIENT -> SERVER: Content-Type: multipart/alternative; +CLIENT -> SERVER: boundary="b1_kd1sH1vN1RrI0zprqVYbU9XC5kYE4DiAV5h2M" +CLIENT -> SERVER: Content-Transfer-Encoding: 8bit +CLIENT -> SERVER: +CLIENT -> SERVER: This is a multi-part message in MIME format. +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_kd1sH1vN1RrI0zprqVYbU9XC5kYE4DiAV5h2M +CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii +CLIENT -> SERVER: +CLIENT -> SERVER: Hello Flores, +CLIENT -> SERVER: +CLIENT -> SERVER: We updated the webinar timing to reflect U.S. daylight saving time. Please use the corrected schedule and links below. +CLIENT -> SERVER: +CLIENT -> SERVER: Webinar details: Wednesday, March 25, 2026 | 6PM CET | 1PM EDT | 10AM PDT +CLIENT -> SERVER: +CLIENT -> SERVER: Join webinar: https://meet.google.com/ohs-ayvx-dqg +CLIENT -> SERVER: +CLIENT -> SERVER: If you already saved the older calendar event, please remove it and add the updated one from this email. +CLIENT -> SERVER: +CLIENT -> SERVER: Add to Google Calendar: https://www.google.com/calendar/render?action=TEMPLATE&text=Building+Scalable+Apps+with+AppWizzy&dates=20260325T170000Z/20260325T180000Z&details=Professional+Vibe-Coding+Webinar%0A%0AJoin+us+on+Wednesday%2C+March+25%2C+2026+at+6PM+CET+%7C+1PM+EDT+%7C+10AM+PDT.%0A%0AGoogle+Meet+link%3A+https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%0A%0AThe+fastest+way+to+go+from+an+idea+to+a+working+app+you+own%2C+running+on+your+server%2C+with+your+database%2C+using+real+frameworks.&location=https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg&ctz=UTC +CLIENT -> SERVER: +CLIENT -> SERVER: Download calendar file (.ics): data:text/calendar;charset=utf-8,BEGIN%3AVCALENDAR%0AVERSION%3A2.0%0APRODID%3A-%2F%2FFlatlogic%2F%2FBuilding%20Scalable%20Apps%20with%20AppWizzy%2F%2FEN%0ABEGIN%3AVEVENT%0AURL%3Ahttp%3A%2F%2Fvm-39074.dev.flatlogic.app%0ADTSTART%3A20260325T170000Z%0ADTEND%3A20260325T180000Z%0ASUMMARY%3ABuilding%20Scalable%20Apps%20with%20AppWizzy%0ADESCRIPTION%3AProfessional%20Vibe-Coding%20Webinar%5Cn%5CnJoin%20us%20on%20Wednesday%2C%20March%2025%2C%202026%20at%206PM%20CET%20%7C%201PM%20EDT%20%7C%2010AM%20PDT.%5Cn%5CnGoogle%20Meet%20link%3A%20https%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%5Cn%5CnThe%20fastest%20way%20to%20go%20from%20an%20idea%20to%20a%20working%20app%20you%20own%2C%20running%20on%20your%20server%2C%20with%20your%20database%2C%20using%20real%20frameworks.%0ALOCATION%3Ahttps%3A%2F%2Fmeet.google.com%2Fohs-ayvx-dqg%0AEND%3AVEVENT%0AEND%3AVCALENDAR +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_kd1sH1vN1RrI0zprqVYbU9XC5kYE4DiAV5h2M +CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: Building Scalable Apps with AppWizzy +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER:
+CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER:
+CLIENT -> SERVER: AppWizzy Logo +CLIENT -> SERVER:

Updated Webinar Details

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Hello Flores,

+CLIENT -> SERVER:

We updated the webinar timing to reflect U.S. daylight saving time. Please use the corrected schedule and links below.

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Webinar details

+CLIENT -> SERVER:

Wednesday, March 25, 2026 | 6PM CET | 1PM EDT | 10AM PDT

+CLIENT -> SERVER:
+CLIENT -> SERVER:

Join the live session here:

+CLIENT -> SERVER:

https://meet.google.com/ohs-ayvx-dqg

+CLIENT -> SERVER:

If you already saved the older calendar event, please remove it and add the updated one from this email.

+CLIENT -> SERVER:

+CLIENT -> SERVER: Join Webinar +CLIENT -> SERVER: Add to Google Calendar +CLIENT -> SERVER:

+CLIENT -> SERVER:

+CLIENT -> SERVER: Download calendar file (.ics) +CLIENT -> SERVER:

+CLIENT -> SERVER:

You'll learn the fastest way to go from an idea to a working app you own, running on your server, with your database, using real frameworks.

+CLIENT -> SERVER:
+CLIENT -> SERVER:

© 2026 AppWizzy. All rights reserved.

+CLIENT -> SERVER:

You can visit our website for more information.

+CLIENT -> SERVER:
+CLIENT -> SERVER:
+CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: +CLIENT -> SERVER: --b1_kd1sH1vN1RrI0zprqVYbU9XC5kYE4DiAV5h2M-- +CLIENT -> SERVER: +CLIENT -> SERVER: . +SERVER -> CLIENT: 250 Ok 0100019d25d98c95-df6cc150-7c16-427c-994a-8c4f741fc790-000000 +CLIENT -> SERVER: QUIT +SERVER -> CLIENT: 221 Bye diff --git a/register.php b/register.php index 548df204d2519641270b9b2110b1aae729b59931..d774fb36e18cac0b5d67794885117f7ff8de0f8e 100644 GIT binary patch delta 385 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 0) { + $sql .= ' AND a.webinar_id = ?'; + $params[] = $selectedWebinarId; + } + + $sql .= ' ORDER BY a.created_at DESC, a.id DESC'; + + $stmt = $pdo->prepare($sql); + $stmt->execute($params); + $attendees = $stmt->fetchAll(PDO::FETCH_ASSOC); + + if (!$attendees) { + admin_set_flash('No active attendees were found for the selected webinar.'); + header('Location: admin.php' . ($selectedWebinarId > 0 ? '?webinar_id=' . urlencode((string) $selectedWebinarId) : '')); + exit; + } + + $sentCount = 0; + $failedCount = 0; + + foreach ($attendees as $attendee) { + $payload = webinar_build_email_payload((string) ($attendee['first_name'] ?? ''), $attendee, true); + $result = MailService::sendMail((string) $attendee['email'], $payload['subject'], $payload['html'], $payload['text']); + + if (!empty($result['success'])) { + $sentCount++; + } else { + $failedCount++; + error_log('Correction email failed for attendee #' . (int) $attendee['id'] . ': ' . ($result['error'] ?? 'unknown error')); + } + } + + $scope = $selectedWebinarId > 0 ? 'selected webinar' : 'all active webinars'; + $message = "Correction email sent to {$sentCount} attendee(s) for the {$scope}."; + if ($failedCount > 0) { + $message .= " {$failedCount} email(s) failed to send. Check the mail log for details."; + } + + admin_set_flash($message); +} catch (Throwable $e) { + error_log('Failed to send correction emails: ' . $e->getMessage()); + admin_set_flash('Could not send the correction email right now. Please try again.'); +} + +header('Location: admin.php' . ($selectedWebinarId > 0 ? '?webinar_id=' . urlencode((string) $selectedWebinarId) : '')); +exit;