mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-21 16:22:20 +02:00
N°2060 [WIP] Initialisation of the portal application:
- Refactor kernel bootstrapping: - Make bin/console from SF work - Make iTopPortalEditUrlMaker / iTopPortalViewUrlMaker work again - Add classmap to /application in composer.json
This commit is contained in:
@@ -22,45 +22,16 @@
|
||||
* This allows to make a portal directly from the ITSM Designer.
|
||||
*/
|
||||
|
||||
// Load current environment
|
||||
if (file_exists(__DIR__ . '/../../approot.inc.php'))
|
||||
{
|
||||
require_once __DIR__ . '/../../approot.inc.php'; // When in env-xxxx folder
|
||||
require_once __DIR__ . '/../../approot.inc.php'; // When in env-xxxx folder
|
||||
}
|
||||
else
|
||||
{
|
||||
require_once __DIR__ . '/../../../approot.inc.php'; // When in datamodels/x.x folder
|
||||
require_once __DIR__ . '/../../../approot.inc.php'; // When in datamodels/x.x folder
|
||||
}
|
||||
require_once APPROOT . '/application/startup.inc.php';
|
||||
require_once APPROOT . 'application/startup.inc.php';
|
||||
|
||||
// If PORTAL_ID is not already defined, we look for it in a parameter
|
||||
if(!defined('PORTAL_ID'))
|
||||
{
|
||||
// Retrieving portal id from request params
|
||||
$sPortalId = utils::ReadParam('portal_id', '');
|
||||
if ($sPortalId == '')
|
||||
{
|
||||
echo "Missing argument 'portal_id'";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Defining portal constants
|
||||
define('PORTAL_ID', $sPortalId);
|
||||
}
|
||||
|
||||
// Set debug mode only when necessary
|
||||
if (utils::ReadParam('debug', 'false') === 'true')
|
||||
{
|
||||
$_SERVER['APP_DEBUG'] = true;
|
||||
}
|
||||
|
||||
define('PORTAL_CACHE_PATH', utils::GetCachePath() . '/portals/' . PORTAL_ID . '/');
|
||||
|
||||
// Constants to be used in templates and others
|
||||
define('COMBODO_CURRENT_ENVIRONMENT', utils::GetCurrentEnvironment());
|
||||
define('COMBODO_ABSOLUTE_URL', utils::GetAbsoluteUrlAppRoot());
|
||||
define('COMBODO_MODULES_ABSOLUTE_URL', utils::GetAbsoluteUrlAppRoot() . 'env-' . utils::GetCurrentEnvironment());
|
||||
define('COMBODO_PORTAL_BASE_ABSOLUTE_URL', utils::GetAbsoluteUrlAppRoot() . 'env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/public/');
|
||||
define('COMBODO_PORTAL_BASE_ABSOLUTE_PATH', MODULESROOT . '/itop-portal-base/portal/public/');
|
||||
define('COMBODO_PORTAL_INSTANCE_ABSOLUTE_URL', utils::GetAbsoluteUrlAppRoot() . 'env-' . utils::GetCurrentEnvironment() . '/' . PORTAL_ID . '/');
|
||||
|
||||
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/public/index.php';
|
||||
// Load frontal
|
||||
require_once MODULESROOT . 'itop-portal-base/portal/public/index.php';
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
use App\Kernel;
|
||||
use Combodo\iTop\Portal\Kernel;
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
||||
use Symfony\Component\Console\Input\ArgvInput;
|
||||
use Symfony\Component\Debug\Debug;
|
||||
|
||||
if (false === in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
|
||||
echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.\PHP_SAPI.' SAPI'.\PHP_EOL;
|
||||
@@ -12,13 +11,36 @@ if (false === in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
|
||||
|
||||
set_time_limit(0);
|
||||
|
||||
require dirname(__DIR__).'/vendor/autoload.php';
|
||||
if(!defined('APPROOT'))
|
||||
{
|
||||
if (file_exists(__DIR__ . '/../../../../approot.inc.php'))
|
||||
{
|
||||
require_once __DIR__ . '/../../../../approot.inc.php'; // When in env-xxxx folder
|
||||
}
|
||||
else
|
||||
{
|
||||
require_once __DIR__ . '/../../../../../approot.inc.php'; // When in datamodels/x.x folder
|
||||
}
|
||||
}
|
||||
require_once APPROOT . 'lib/composer-vendor/autoload.php';
|
||||
|
||||
if (!class_exists(Application::class)) {
|
||||
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
|
||||
}
|
||||
|
||||
$input = new ArgvInput();
|
||||
// Remove --portal_id from CLI params to avoid SF CLI conflicts
|
||||
// Note: The parameter is needed when calling the bin/console to determine which portal to select
|
||||
$aCleanedArgv = $_SERVER['argv'];
|
||||
foreach($aCleanedArgv as $iArg => $sArg)
|
||||
{
|
||||
if (preg_match('/^--portal_id=(.*)$/', $sArg, $aMatches))
|
||||
{
|
||||
unset($aCleanedArgv[$iArg]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$input = new ArgvInput($aCleanedArgv);
|
||||
if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
|
||||
putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env);
|
||||
}
|
||||
@@ -27,15 +49,7 @@ if ($input->hasParameterOption('--no-debug', true)) {
|
||||
putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
|
||||
}
|
||||
|
||||
require dirname(__DIR__).'/config/bootstrap.php';
|
||||
|
||||
if ($_SERVER['APP_DEBUG']) {
|
||||
umask(0000);
|
||||
|
||||
if (class_exists(Debug::class)) {
|
||||
Debug::enable();
|
||||
}
|
||||
}
|
||||
require_once MODULESROOT . 'itop-portal-base/portal/config/bootstrap.php';
|
||||
|
||||
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
|
||||
$application = new Application($kernel);
|
||||
|
||||
@@ -27,7 +27,8 @@
|
||||
"Combodo\\iTop\\Portal\\": "src/"
|
||||
},
|
||||
"classmap": [
|
||||
"../../../../core"
|
||||
"../../../../core",
|
||||
"../../../../application"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
|
||||
@@ -1,8 +1,23 @@
|
||||
<?php
|
||||
|
||||
use Symfony\Component\Debug\Debug;
|
||||
use Symfony\Component\Dotenv\Dotenv;
|
||||
|
||||
require APPROOT.'/lib/composer-vendor/autoload.php';
|
||||
require_once APPROOT.'/lib/composer-vendor/autoload.php';
|
||||
|
||||
// Load current environment if necessary
|
||||
if(!defined('MODULESROOT'))
|
||||
{
|
||||
if (file_exists(__DIR__ . '/../../../../approot.inc.php'))
|
||||
{
|
||||
require_once __DIR__ . '/../../../../approot.inc.php'; // When in env-xxxx folder
|
||||
}
|
||||
else
|
||||
{
|
||||
require_once __DIR__ . '/../../../../../approot.inc.php'; // When in datamodels/x.x folder
|
||||
}
|
||||
require_once APPROOT . '/application/startup.inc.php';
|
||||
}
|
||||
|
||||
// Load cached env vars if the .env.local.php file exists
|
||||
// Run "composer dump-env prod" to create it (requires symfony/flex >=1.2)
|
||||
@@ -45,7 +60,56 @@ if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) {
|
||||
}
|
||||
}
|
||||
|
||||
// Set debug mode only when necessary
|
||||
if (utils::ReadParam('debug', 'false') === 'true')
|
||||
{
|
||||
$_SERVER['APP_DEBUG'] = true;
|
||||
}
|
||||
|
||||
$_SERVER += $_ENV;
|
||||
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = (isset($_SERVER['APP_ENV']) ? $_SERVER['APP_ENV'] : (isset($_ENV['APP_ENV']) ? $_ENV['APP_ENV'] : null)) ?: 'prod';
|
||||
$_SERVER['APP_DEBUG'] = isset($_SERVER['APP_DEBUG']) ? $_SERVER['APP_DEBUG'] : (isset($_ENV['APP_DEBUG']) ? $_ENV['APP_DEBUG'] : ('prod' !== $_SERVER['APP_ENV']));
|
||||
$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
|
||||
|
||||
if ($_SERVER['APP_DEBUG']) {
|
||||
umask(0000);
|
||||
|
||||
if (class_exists(Debug::class)) {
|
||||
Debug::enable();
|
||||
}
|
||||
}
|
||||
|
||||
// If PORTAL_ID is not already defined, we look for it in a parameter
|
||||
if(!defined('PORTAL_ID'))
|
||||
{
|
||||
// Retrieving portal id from request params
|
||||
$sPortalId = utils::ReadParam('portal_id', '', true);
|
||||
if ($sPortalId == '')
|
||||
{
|
||||
echo "Missing argument 'portal_id'";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Defining portal constants
|
||||
define('PORTAL_ID', $sPortalId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@trigger_error(
|
||||
sprintf(
|
||||
'Usage of legacy "PORTAL_ID" constant ("%s") is deprecated. You should pass "portal_id" in the URL as GET parameter.',
|
||||
PORTAL_ID
|
||||
),
|
||||
E_USER_DEPRECATED
|
||||
);
|
||||
}
|
||||
|
||||
define('PORTAL_CACHE_PATH', utils::GetCachePath() . '/portals/' . PORTAL_ID . '/');
|
||||
|
||||
// Constants to be used in templates and others
|
||||
define('COMBODO_CURRENT_ENVIRONMENT', utils::GetCurrentEnvironment());
|
||||
define('COMBODO_ABSOLUTE_URL', utils::GetAbsoluteUrlAppRoot());
|
||||
define('COMBODO_MODULES_ABSOLUTE_URL', utils::GetAbsoluteUrlModulesRoot());
|
||||
define('COMBODO_PORTAL_BASE_ABSOLUTE_URL', utils::GetAbsoluteUrlModulesRoot() . 'itop-portal-base/portal/public/');
|
||||
define('COMBODO_PORTAL_BASE_ABSOLUTE_PATH', MODULESROOT . '/itop-portal-base/portal/public/');
|
||||
define('COMBODO_PORTAL_INSTANCE_ABSOLUTE_URL', utils::GetAbsoluteUrlModulesRoot() . PORTAL_ID . '/');
|
||||
@@ -1,17 +1,9 @@
|
||||
<?php
|
||||
|
||||
use Combodo\iTop\Portal\Kernel;
|
||||
use Symfony\Component\Debug\Debug;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
require dirname(__DIR__).'/config/bootstrap.php';
|
||||
require_once APPROOT . '/application/loginwebpage.class.inc.php';
|
||||
|
||||
if ($_SERVER['APP_DEBUG']) {
|
||||
umask(0000);
|
||||
|
||||
Debug::enable();
|
||||
}
|
||||
require_once MODULESROOT . 'itop-portal-base/portal/config/bootstrap.php';
|
||||
|
||||
// Note: Manually refactored ternary condition to be PHP 5.x compatible
|
||||
if ($trustedProxies = isset($_SERVER['TRUSTED_PROXIES']) ? $_SERVER['TRUSTED_PROXIES'] : (isset($_ENV['TRUSTED_PROXIES']) ? $_ENV['TRUSTED_PROXIES'] : false) ) {
|
||||
|
||||
Reference in New Issue
Block a user