forked from PrestaShop/PrestaShop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.php
105 lines (95 loc) · 4.13 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <[email protected]>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*/
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\ErrorHandler\Debug;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\HttpKernelInterface;
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', __DIR__);
}
if (!defined('PS_ADMIN_DIR')) {
define('PS_ADMIN_DIR', _PS_ADMIN_DIR_);
}
require _PS_ADMIN_DIR_ . '/../config/config.inc.php';
define('_PS_APP_ID_', AdminKernel::APP_ID);
//small test to clear cache after upgrade
if (Configuration::get('PS_UPGRADE_CLEAR_CACHE')) {
header('Cache-Control: max-age=0, must-revalidate');
header('Expires: Mon, 06 Jun 1985 06:06:00 GMT+1');
Configuration::updateValue('PS_UPGRADE_CLEAR_CACHE', 0);
}
// Enable APC for autoloading to improve performance.
// You should change the ApcClassLoader first argument to a unique prefix
// in order to prevent cache key conflicts with other applications
// also using APC.
/*
$apcLoader = new ApcClassLoader(sha1(__FILE__), $loader);
$loader->unregister();
$apcLoader->register(true);
*/
if (_PS_MODE_DEV_) {
Debug::enable();
}
require_once __DIR__ . '/../autoload.php';
// Loads .env file from the root of project
$dotEnvFile = dirname(__FILE__, 2) . '/.env';
(new Dotenv())
// DO NOT use putEnv
->usePutenv(false)
->loadEnv($dotEnvFile)
;
$kernel = new AdminKernel(_PS_ENV_, _PS_MODE_DEV_);
// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
//Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
Request::setTrustedProxies([], Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO);
try {
$response = $kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, false);
$response->send();
$kernel->terminate($request, $response);
/*
* @todo during the refacto for getLegacyLayout, this behaviour should be changed, when no route is found`
* we should fallback to a common LegacyFallbackController symfony controller, that doesn't end the request
* it is responsible for calling the dispatcher and display the legacy controller content inside the new
* Symfony layout
*/
} catch (NotFoundHttpException $exception) {
/** @var RequestStack $requestStack */
$requestStack = $kernel->getContainer()->get('request_stack');
// We force pushing the request in the stack again because when kernel detected the exception it popped it out,
// but we need the request to be accessible, especially to access the session that stores CSRF value for the user
$requestStack->push($request);
define('ADMIN_LEGACY_CONTEXT', true);
// correct Apache charset (except if it's too late)
if (!headers_sent()) {
header('Content-Type: text/html; charset=utf-8');
}
// Prepare and trigger LEGACY admin dispatcher
Dispatcher::getInstance()->dispatch();
$requestStack->pop();
}