90 lines
3.5 KiB
PHP
90 lines
3.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* ============================================
|
|
* File: public/index.php
|
|
* Version: v1.7
|
|
* Purpose: Application entry point for Arsha one-pager with dynamic & closure route support
|
|
* Project: Wizdom Networks Website
|
|
* ============================================
|
|
*/
|
|
|
|
// ------------------------------------------------------------
|
|
// Environment & Error Configuration
|
|
// ------------------------------------------------------------
|
|
ini_set('display_errors', 1);
|
|
ini_set('display_startup_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
// ------------------------------------------------------------
|
|
// Composer Autoload & Environment Variables
|
|
// ------------------------------------------------------------
|
|
require_once __DIR__ . '/../vendor/autoload.php';
|
|
|
|
use Dotenv\Dotenv;
|
|
$dotenv = Dotenv::createImmutable(__DIR__ . '/../');
|
|
$dotenv->load();
|
|
|
|
// ------------------------------------------------------------
|
|
// Core Utilities & Session Boot
|
|
// ------------------------------------------------------------
|
|
use WizdomNetworks\WizeWeb\Utilities\SessionHelper;
|
|
use WizdomNetworks\WizeWeb\Utilities\Logger;
|
|
use WizdomNetworks\WizeWeb\Utilities\ErrorHandler;
|
|
use WizdomNetworks\WizeWeb\Core\Router;
|
|
use WizdomNetworks\WizeWeb\Core\View;
|
|
|
|
use WizdomNetworks\WizeWeb\Controllers\LandingController;
|
|
use WizdomNetworks\WizeWeb\Controllers\ContactController;
|
|
use WizdomNetworks\WizeWeb\Controllers\VerificationController;
|
|
use WizdomNetworks\WizeWeb\Controllers\ResendVerificationController;
|
|
use WizdomNetworks\WizeWeb\Controllers\SubscriberController;
|
|
use WizdomNetworks\WizeWeb\Controllers\UnsubscribeController;
|
|
|
|
// Start session before routing
|
|
SessionHelper::start();
|
|
Logger::info("Bootstrapping application");
|
|
|
|
// ------------------------------------------------------------
|
|
// Route Registration
|
|
// ------------------------------------------------------------
|
|
$router = new Router();
|
|
|
|
// Landing Page Routes
|
|
$router->add('', LandingController::class, 'index');
|
|
$router->add('/', LandingController::class, 'index');
|
|
$router->add('index.php', LandingController::class, 'index');
|
|
|
|
// Contact Form Routes
|
|
$router->add('/contact', ContactController::class, 'index', 'GET');
|
|
$router->add('/contact', ContactController::class, 'submit', 'POST');
|
|
|
|
// Verification Routes
|
|
$router->add('/verify', VerificationController::class, 'verify', 'GET'); // e.g. /verify?email=...
|
|
$router->add('/verify/{code}', ContactController::class, 'verify', 'GET'); // e.g. /verify/abc123...
|
|
|
|
// Resend / Newsletter / Unsubscribe
|
|
$router->add('/resend-verification', ResendVerificationController::class, 'handle', 'POST');
|
|
$router->add('/subscriber/update', SubscriberController::class, 'update', 'POST');
|
|
$router->add('/unsubscribe', UnsubscribeController::class, 'confirm', 'GET');
|
|
$router->add('/unsubscribe', UnsubscribeController::class, 'process', 'POST');
|
|
|
|
// Post-Redirect-GET success confirmation
|
|
$router->addClosure('/verify-success', function () {
|
|
$type = $_SESSION['update_type'] ?? 'newsletter';
|
|
$message = $_SESSION['update_success'] ? 'Thank you! Your information has been updated.' : null;
|
|
|
|
View::render('pages/verify_success', [
|
|
'type' => $type,
|
|
'message' => $message,
|
|
]);
|
|
|
|
unset($_SESSION['update_success'], $_SESSION['update_type']);
|
|
}, 'GET');
|
|
|
|
// ------------------------------------------------------------
|
|
// Dispatch Request
|
|
// ------------------------------------------------------------
|
|
$requestedPath = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
|
|
$router->dispatch($requestedPath);
|