From 782d3432434ae92453ec44b93ee2df6fefa6d9e5 Mon Sep 17 00:00:00 2001 From: twotalesanimation <80506065+twotalesanimation@users.noreply.github.com> Date: Fri, 19 Dec 2025 19:50:22 +0200 Subject: [PATCH] updated to add country membership --- .htaccess | 2 +- index.php | 32 +- .../memberships/membership_application.php | 405 ++++++++++-------- src/pages/memberships/membership_details.php | 2 +- src/pages/other/base4.php | 11 + src/processors/process_application.php | 38 +- uploads/signatures/signature_163.png | Bin 9888 -> 5117 bytes 7 files changed, 306 insertions(+), 184 deletions(-) diff --git a/.htaccess b/.htaccess index a0bc9ffc..361dcb19 100644 --- a/.htaccess +++ b/.htaccess @@ -164,7 +164,7 @@ RewriteRule ^autosave$ src/processors/blog/autosave.php [L] -php_flag display_errors Off +php_flag display_errors On # php_value error_reporting -1 RedirectMatch 403 ^/\.well-known Options -Indexes diff --git a/index.php b/index.php index a29aec91..5a4487cf 100644 --- a/index.php +++ b/index.php @@ -27,16 +27,32 @@ if ($showRenewModal) { } else { $showRenewModal = false; } - $user_id = $_SESSION['user_id']; - $stmt = $conn->prepare("SELECT payment_status FROM membership_fees WHERE user_id = ? LIMIT 1"); - $stmt->bind_param("i", $user_id); - $stmt->execute(); - $stmt->bind_result($payment_status); - $stmt->fetch(); - $stmt->close(); - if ($payment_status === 'PENDING RENEWAL') { + $user_id = $_SESSION['user_id']; + + // Ensure we have a DB connection + if (!isset($conn) || $conn === null) { $showRenewModal = false; + } else { + $stmt = $conn->prepare("SELECT payment_status FROM membership_fees WHERE user_id = ? LIMIT 1"); + $stmt->bind_param("i", $user_id); + $stmt->execute(); + // store_result so we can check num_rows + $stmt->store_result(); + + // If there's no membership_fees record for this user, don't show the renew modal + if ($stmt->num_rows === 0) { + $showRenewModal = false; + } else { + $stmt->bind_result($payment_status); + $stmt->fetch(); + + if ($payment_status === 'PENDING RENEWAL') { + $showRenewModal = false; + } + } + + $stmt->close(); } } diff --git a/src/pages/memberships/membership_application.php b/src/pages/memberships/membership_application.php index a0703cee..4cc35f5e 100644 --- a/src/pages/memberships/membership_application.php +++ b/src/pages/memberships/membership_application.php @@ -7,7 +7,7 @@ checkUserSession(); // Assuming you have the user ID stored in the session if (isset($_SESSION['user_id'])) { $user_id = $_SESSION['user_id']; -}else{ +} else { header('Location: login.php'); exit(); // Stop further script execution } @@ -25,7 +25,7 @@ $user = $result->fetch_assoc(); $pageTitle = 'Membership Application'; $breadcrumbs = [['Home' => 'index.php'], ['Membership' => 'membership.php']]; require_once($rootPath . '/components/banner.php'); -?> + ?> @@ -39,6 +39,31 @@ $user = $result->fetch_assoc();
+ +

Membership Type

+
+
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+
+ + +

Main Member

@@ -88,193 +113,199 @@ $user = $result->fetch_assoc();
-

Spouse / Life Partner / Other Details

-
-
-
- - +
+

Spouse / Life Partner / Other Details

+
+
+
+ + +
-
-
-
- - +
+
+ + +
+
+ +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
+
+ + + +
+

Children's Names

+
+
+
+ +
- - -

Children's Names

-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
- -
- - -

Address

-
-
-
- - -
-
-
-
- - -
+
+
+ +
- - -

Interests and Hobbies

-
-
-
- -
+
+
+ +
- - -

Primary Vehicle

-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
+
+
+ +
-

Secondary Vehicle

-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
+
+
+ +
+
+
+ + +
+
+ +
+
-
- - -
-
- - + +

Address

+
+
+
+ + +
+
+
+
+ + +
+
+
+ + +

Interests and Hobbies

+
+
+
+ +
+
+
+ + +

Primary Vehicle

+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+

Secondary Vehicle

+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
-
+ + +
+
+ + +
+
+ +
+
@@ -282,3 +313,43 @@ $user = $result->fetch_assoc(); + + \ No newline at end of file diff --git a/src/pages/memberships/membership_details.php b/src/pages/memberships/membership_details.php index 8a5c39d2..d3abaff9 100644 --- a/src/pages/memberships/membership_details.php +++ b/src/pages/memberships/membership_details.php @@ -189,7 +189,7 @@ if (empty($application['id_number'])) { - PENDING RENEWAL + '> diff --git a/src/pages/other/base4.php b/src/pages/other/base4.php index 7b5f101f..75fc9d39 100644 --- a/src/pages/other/base4.php +++ b/src/pages/other/base4.php @@ -141,6 +141,17 @@ include_once($rootPath . '/header.php'); margin: 50px; padding: 20px; border-radius: 20px; + box-sizing: border-box; + } + + @media (max-width: 768px) { + #map { + margin: 0 !important; + padding: 0 !important; + width: 100% !important; + height: 500px !important; + border-radius: 0 !important; + } } .obstacle-popup h4 { diff --git a/src/processors/process_application.php b/src/processors/process_application.php index 8e073398..eb22fab0 100644 --- a/src/processors/process_application.php +++ b/src/processors/process_application.php @@ -4,6 +4,7 @@ require_once($rootPath . "/src/config/env.php"); require_once($rootPath . "/src/config/session.php"); require_once($rootPath . "/src/config/connection.php"); require_once($rootPath . "/src/config/functions.php"); +require_once($rootPath . "/src/helpers/notification_helper.php"); $user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : null; $payment_id = generatePaymentRef('SUBS', null, $user_id); @@ -89,7 +90,17 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $email = validateEmail($_POST['email'] ?? ''); if ($email === false) { - die('Invalid email format.'); + die('Invalid email format.'); + } + + //MEMBERSHIP TYPE + $country_membership = isset($_POST['country_membership']) ? 1 : 0; + $membership_type = in_array($_POST['membership_type'] ?? '', ['full', 'single']) ? $_POST['membership_type'] : 'full'; + + if ($country_membership) { + $membership_type = 'country'; + }else{ + $membership_type = $membership_type; } // Spouse or Partner details (optional) @@ -136,8 +147,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { spouse_first_name, spouse_last_name, spouse_id_number, spouse_dob, spouse_occupation, spouse_tel_cell, spouse_email, child_name1, child_dob1, child_name2, child_dob2, child_name3, child_dob3, physical_address, postal_address, interests_hobbies, vehicle_make, vehicle_model, vehicle_year, vehicle_registration, - secondary_vehicle_make, secondary_vehicle_model, secondary_vehicle_year, secondary_vehicle_registration - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + secondary_vehicle_make, secondary_vehicle_model, secondary_vehicle_year, secondary_vehicle_registration, membership_type + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); // Check if preparation was successful if (!$stmt) { @@ -145,7 +156,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } $stmt->bind_param( - "isssssssssssssssssssssssssssssss", + "issssssssssssssssssssssssssssssss", $user_id, $first_name, $last_name, @@ -177,7 +188,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $secondary_vehicle_make, $secondary_vehicle_model, $secondary_vehicle_year, - $secondary_vehicle_registration + $secondary_vehicle_registration, + $membership_type ); if ($stmt->execute()) { @@ -187,10 +199,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $year = (int)$today->format('Y'); $payment_date = $today->format('Y-m-d'); $membership_start_date = $payment_date; + if ($membership_type === 'country') { + $payment_amount = getPriceByDescription('country_membership'); + $prorata_amount = calculateProrata(getPriceByDescription('country_prorata')); + } elseif ($membership_type === 'single') { + $payment_amount = getPriceByDescription('single'); + $prorata_amount = calculateProrata(getPriceByDescription('single_prorata')); + } else { + $payment_amount = getPriceByDescription('membership_fees'); + $prorata_amount = calculateProrata(getPriceByDescription('pro_rata')); + } + + if ($month == 12 || $month == 1 || $month == 2) { // December, January, February: charge full fee, valid till end of next Feb - $payment_amount = getPriceByDescription('membership_fees'); + $payment_amount = $payment_amount; // If Dec, Jan, Feb, set end to next year's Feb $end_year = ($month == 12) ? $year + 2 : $year + 1; $membership_end_date = (new DateTime("$end_year-02-01")) @@ -198,7 +222,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ->format('Y-m-d'); } else { // Prorata for Mar-Nov - $payment_amount = calculateProrata(getPriceByDescription('pro_rata')); + $payment_amount = $prorata_amount; // End of next Feb if after Feb, else this Feb if ($month > 2) { $end_year = $year + 1; diff --git a/uploads/signatures/signature_163.png b/uploads/signatures/signature_163.png index 27bcf4f9f6ebea8ab223f75936aab0f9cb7f7bc0..48a14509cc21e9e1802668572630a010ae853266 100644 GIT binary patch literal 5117 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 YcSd>sr}?*4;2)TknZ0S5v0Kdl0f`NW#{d8T literal 9888 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