76 lines
2.7 KiB
PHP
76 lines
2.7 KiB
PHP
<?php
|
|
/**
|
|
* Copyright since 2024 Webshop System
|
|
* Webshop ist ein freies E-Commerce System
|
|
*
|
|
* NOTICE OF LICENSE
|
|
*
|
|
* This source file is subject to the GNU General Public License (GPL v3)
|
|
* that is bundled with this package in the file LICENSE.md.
|
|
* It is also available through the world-wide-web at this URL:
|
|
* https://www.gnu.org/licenses/gpl-3.0.html
|
|
*
|
|
* DISCLAIMER
|
|
*
|
|
* This is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* @author Webshop System
|
|
* @copyright Since 2024 Webshop System
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License (GPL v3)
|
|
*/
|
|
|
|
use Webshop\Core\Util\CacheClearLocker;
|
|
use Symfony\Component\Dotenv\Dotenv;
|
|
use Symfony\Component\ErrorHandler\Debug;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
|
use Symfony\Component\HttpKernel\HttpKernelInterface;
|
|
|
|
// Set front dir constant to use after
|
|
if (!defined('_WS_FRONT_DIR_')) {
|
|
define('_WS_FRONT_DIR_', dirname(__DIR__));
|
|
}
|
|
|
|
// Include some configurations & composer autoload
|
|
require_once _WS_FRONT_DIR_ . '/config/config.inc.php';
|
|
require_once _WS_FRONT_DIR_ . '/vendor/autoload.php';
|
|
define('_WS_APP_ID_', FrontKernel::APP_ID);
|
|
|
|
// Load .env file from the root of project if present
|
|
(new Dotenv(false))->loadEnv(_WS_FRONT_DIR_ . '/.env');
|
|
|
|
// If we want to use new container access in front (Warning: Experimental feature from now!)
|
|
if (isset($_ENV['WS_FF_FRONT_CONTAINER_V2']) && filter_var($_ENV['WS_FF_FRONT_CONTAINER_V2'], \FILTER_VALIDATE_BOOL)) {
|
|
// Activate Symfony's debug if we need it
|
|
if (_WS_MODE_DEV_) {
|
|
Debug::enable();
|
|
}
|
|
|
|
// Block the process until the cache clear is in progress, this must be done before the kernel is created so it doesn't
|
|
// try to use the old container
|
|
CacheClearLocker::waitUntilUnlocked(_WS_ENV_, _WS_APP_ID_);
|
|
|
|
// Starting Kernel
|
|
$kernel = new FrontKernel(_WS_ENV_, _WS_MODE_DEV_);
|
|
$request = Request::createFromGlobals();
|
|
|
|
// Try to handle request
|
|
try {
|
|
$response = $kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, false);
|
|
$response->send();
|
|
define('FRONT_LEGACY_CONTEXT', false);
|
|
$kernel->terminate($request, $response);
|
|
} catch (NotFoundHttpException|Exception $exception) {
|
|
// correct Apache charset (except if it's too late)
|
|
if (!headers_sent()) {
|
|
header('Content-Type: text/html; charset=utf-8');
|
|
}
|
|
}
|
|
}
|
|
|
|
// Prepare and trigger LEGACY front dispatcher
|
|
define('FRONT_LEGACY_CONTEXT', true);
|
|
Dispatcher::getInstance()->dispatch();
|