diff --git a/2025_agm_minutes.php b/2025_agm_minutes.php index dc6328a6..96ceca8e 100644 --- a/2025_agm_minutes.php +++ b/2025_agm_minutes.php @@ -1,5 +1,5 @@ - @@ -67,28 +67,15 @@ $page_id = 'agm_minutes'; float: right; } - .clearfix { - clear: both; - } + -
- -
- -
-
- - + 'index.php']]; + require_once('components/banner.php'); +?>
diff --git a/about.php b/about.php index 5a607d00..126ff29a 100644 --- a/about.php +++ b/about.php @@ -39,31 +39,11 @@ include_once('header.php'); } - 'index.php']]; +require_once('components/banner.php'); ?> -
- - -
- -
-
diff --git a/basic_indemnity.php b/basic_indemnity.php index ac02f49b..470759f1 100644 --- a/basic_indemnity.php +++ b/basic_indemnity.php @@ -38,33 +38,11 @@ if (isset($_SESSION['user_id'])) { } - - 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
diff --git a/batch_update_banners.php b/batch_update_banners.php new file mode 100644 index 00000000..734f5b6f --- /dev/null +++ b/batch_update_banners.php @@ -0,0 +1,94 @@ + ['pageTitle', [breadcrumbs]] +$filesToUpdate = [ + 'blog.php' => ['Blogs', [['Home' => 'index.php']]], + 'blog_details.php' => ['Blog Details', [['Home' => 'index.php'], ['Blogs' => 'blog.php']]], + 'bookings.php' => ['Bookings', [['Home' => 'index.php']]], + 'campsites.php' => ['Campsites', [['Home' => 'index.php']]], + 'contact.php' => ['Contact Us', [['Home' => 'index.php']]], + 'driver_training.php' => ['Driver Training', [['Home' => 'index.php']]], + 'events.php' => ['Events', [['Home' => 'index.php']]], + 'membership.php' => ['Membership', [['Home' => 'index.php']]], + 'membership_application.php' => ['Membership Application', [['Home' => 'index.php'], ['Membership' => 'membership.php']]], + 'membership_payment.php' => ['Membership Payment', [['Home' => 'index.php'], ['Membership' => 'membership.php']]], + 'trips.php' => ['Trips', [['Home' => 'index.php']]], + 'bush_mechanics.php' => ['Bush Mechanics', [['Home' => 'index.php']]], + 'rescue_recovery.php' => ['Rescue & Recovery', [['Home' => 'index.php']]], + 'best_of_the_eastern_cape_2024.php' => ['Best of Eastern Cape 2024', [['Home' => 'index.php']]], + '2025_agm_minutes.php' => ['2025 AGM Minutes', [['Home' => 'index.php']]], +]; + +$updated = 0; +$skipped = 0; +$failed = 0; + +foreach ($filesToUpdate as $filename => $config) { + $filepath = __DIR__ . '/' . $filename; + + if (!file_exists($filepath)) { + echo "[MISSING] $filename\n"; + $failed++; + continue; + } + + $content = file_get_contents($filepath); + + // Check if already uses banner component + if (strpos($content, 'components/banner.php') !== false) { + echo "[SKIP] $filename - Already uses banner component\n"; + $skipped++; + continue; + } + + // Check if file has page-banner-area + if (strpos($content, 'page-banner-area') === false) { + echo "[SKIP] $filename - No page-banner-area found\n"; + $skipped++; + continue; + } + + list($pageTitle, $breadcrumbs) = $config; + + // Format breadcrumbs array for PHP code + $breadcrumbStr = '['; + foreach ($breadcrumbs as $item) { + $breadcrumbStr .= '['; + foreach ($item as $label => $url) { + $breadcrumbStr .= "'{$label}' => '{$url}', "; + } + $breadcrumbStr = rtrim($breadcrumbStr, ', ') . '], '; + } + $breadcrumbStr = rtrim($breadcrumbStr, ', ') . ']'; + + // Build replacement code + $replacement = ""; + + // Pattern: Match from "" + // This handles the PHP setup code + HTML section + closing comment + $pattern = '/[\s]*<\?php\s*\$bannerFolder\s*=\s*[\'"]assets\/images\/banners\/[\'"];[\s\S]*?<\/section>\s*/'; + + $newContent = preg_replace($pattern, $replacement, $content, 1, $count); + + if ($count > 0 && file_put_contents($filepath, $newContent) !== false) { + $updated++; + echo "[UPDATE] $filename\n"; + } else { + $failed++; + echo "[FAIL] $filename\n"; + } +} + +echo "\n"; +echo str_repeat("=", 50) . "\n"; +echo "BATCH UPDATE SUMMARY\n"; +echo str_repeat("=", 50) . "\n"; +echo "Updated: $updated\n"; +echo "Skipped: $skipped\n"; +echo "Failed: $failed\n"; +echo str_repeat("=", 50) . "\n"; +?> diff --git a/best_of_the_eastern_cape_2024.php b/best_of_the_eastern_cape_2024.php index 48575c2b..374a7672 100644 --- a/best_of_the_eastern_cape_2024.php +++ b/best_of_the_eastern_cape_2024.php @@ -1,5 +1,5 @@ - @@ -67,31 +67,15 @@ $page_id = 'best_0f_ec'; float: right; } - .clearfix { - clear: both; - } + - - - -
- -
- -
-
- - + 'index.php']]; + require_once('components/banner.php'); +?>
diff --git a/blog.php b/blog.php index 4b2a1b26..9500c534 100644 --- a/blog.php +++ b/blog.php @@ -1,5 +1,5 @@ - - - - - 'index.php']]; + require_once('components/banner.php'); ?> -
- - -
- -
-
- diff --git a/blog_details.php b/blog_details.php index 4e5fb37f..488de786 100644 --- a/blog_details.php +++ b/blog_details.php @@ -1,5 +1,5 @@ - 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
diff --git a/bush_mechanics.php b/bush_mechanics.php index 0d9d944b..8d7f928f 100644 --- a/bush_mechanics.php +++ b/bush_mechanics.php @@ -20,32 +20,11 @@ $page_id = 'bush_mechanics'; font-size: 16px; } - - - 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
-
diff --git a/campsites.php b/campsites.php index 92222714..f3cff20f 100644 --- a/campsites.php +++ b/campsites.php @@ -1,5 +1,5 @@ -fetch_assoc()) { .info-box img { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); - } 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
diff --git a/components/banner.php b/components/banner.php new file mode 100644 index 00000000..3c440309 --- /dev/null +++ b/components/banner.php @@ -0,0 +1,72 @@ + + * + * Parameters: + * $pageTitle (required) - Page title to display + * $bannerImage (optional) - URL to banner background image. If not set, uses random banner + * $breadcrumbs (optional) - Array of breadcrumb items. Default: [['Home' => 'index.php']] + * $classes (optional) - Additional CSS classes for banner section + */ + +// Default values +$pageTitle = $pageTitle ?? 'Page'; +$bannerImage = $bannerImage ?? ''; +$breadcrumbs = $breadcrumbs ?? [['Home' => 'index.php']]; +$classes = $classes ?? ''; + +// If no banner image provided, try to use random banner +if (empty($bannerImage)) { + $bannerFolder = 'assets/images/banners/'; + $bannerImages = glob($bannerFolder . '*.{jpg,jpeg,png,webp}', GLOB_BRACE); + $bannerImage = !empty($bannerImages) ? $bannerImages[array_rand($bannerImages)] : 'assets/images/base4/camping.jpg'; +} + +// Add the page title to breadcrumbs as last item (not a link) +$breadcrumbItems = []; +foreach ($breadcrumbs as $item) { + foreach ($item as $label => $url) { + $breadcrumbItems[] = ['label' => $label, 'url' => $url]; + } +} +$breadcrumbItems[] = ['label' => $pageTitle, 'url' => null]; +?> + + +
+ + +
+ +
+
+ diff --git a/contact.php b/contact.php index 1c1445ab..a78b81fa 100644 --- a/contact.php +++ b/contact.php @@ -26,32 +26,11 @@ include_once('header.php') ?> display: block; /* Prevents inline whitespace issues */ } - - - 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
- diff --git a/course_details.php b/course_details.php index 56fae5db..de16b643 100644 --- a/course_details.php +++ b/course_details.php @@ -9,20 +9,11 @@ $result = $conn->query($sql); - -
-
- -
-
+ 'index.php']]; + require_once('components/banner.php'); +?> diff --git a/driver_training.php b/driver_training.php index 80b7a96f..3f904b40 100644 --- a/driver_training.php +++ b/driver_training.php @@ -24,32 +24,11 @@ $page_id = 'driver_training'; padding: 8px; font-size: 16px; } - - - 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
-
diff --git a/events.php b/events.php index c6420dfe..82dd07cd 100644 --- a/events.php +++ b/events.php @@ -1,5 +1,5 @@ - 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
diff --git a/indemnity.php b/indemnity.php index e145fb7d..e028ee0c 100644 --- a/indemnity.php +++ b/indemnity.php @@ -38,33 +38,11 @@ if (isset($_SESSION['user_id'])) { } - - 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
diff --git a/membership.php b/membership.php index cb0eeb06..fcc67c1a 100644 --- a/membership.php +++ b/membership.php @@ -15,33 +15,11 @@ $stmt->bind_param("i", $user_id); $stmt->execute(); $result = $stmt->get_result(); $user = $result->fetch_assoc(); +?> 'index.php']]; + require_once('components/banner.php'); ?> - -
- -
- -
-
-
diff --git a/membership_application.php b/membership_application.php index 7af11bd2..612c5339 100644 --- a/membership_application.php +++ b/membership_application.php @@ -20,34 +20,11 @@ $stmt->bind_param("i", $user_id); $stmt->execute(); $result = $stmt->get_result(); $user = $result->fetch_assoc(); +?> 'index.php'], ['Membership' => 'membership.php']]; + require_once('components/banner.php'); ?> - -
- -
- -
-
- diff --git a/membership_payment.php b/membership_payment.php index af679814..8e3492d0 100644 --- a/membership_payment.php +++ b/membership_payment.php @@ -67,36 +67,11 @@ $stmt->fetch(); $stmt->close(); $conn->close(); +?> 'index.php'], ['Membership' => 'membership.php']]; + require_once('components/banner.php'); ?> - - - -
- -
- -
-
-
diff --git a/rescue_recovery.php b/rescue_recovery.php index 14d289d0..d8ed5252 100644 --- a/rescue_recovery.php +++ b/rescue_recovery.php @@ -19,32 +19,11 @@ $page_id = 'rescue_recovery'; padding: 8px; font-size: 16px; } - - - 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-
-
diff --git a/trips.php b/trips.php index 9406f600..ea116ed8 100644 --- a/trips.php +++ b/trips.php @@ -1,5 +1,5 @@ - @@ -14,44 +14,13 @@ include_once('header.php'); display: block; /* Ensure proper block behavior */ } - - .image img { - width: 100%; - /* Image scales to fill the container */ - height: 100%; - /* Image scales to fill the container */ - object-fit: cover; - /* Fills the container while maintaining aspect ratio */ - object-position: top; - /* Aligns the top of the image with the top of the container */ - display: block; - /* Prevents inline whitespace issues */ - } 'index.php']]; + require_once('components/banner.php'); ?> -
- -
- -
-