diff --git a/common.php b/common.php index 7fc7f95f..14d4a5db 100644 --- a/common.php +++ b/common.php @@ -122,38 +122,31 @@ if (!IS_CLI) { session_start(); } -// basedir -$basedir = ''; -$tmp = explode('/', $_SERVER['SCRIPT_NAME']); -$size = count($tmp) - 1; -for($i = 1; $i < $size; $i++) - $basedir .= '/' . $tmp[$i]; - -$basedir = str_replace(['/' . ADMIN_PANEL_FOLDER, '/install', '/tools'], '', $basedir); -define('BASE_DIR', $basedir); - -if(!IS_CLI) { - if (isset($_SERVER['HTTP_HOST'][0])) { - $baseHost = $_SERVER['HTTP_HOST']; - } else { - if (isset($_SERVER['SERVER_NAME'][0])) { - $baseHost = $_SERVER['SERVER_NAME']; - } else { - $baseHost = $_SERVER['SERVER_ADDR']; - } - } - - define('SERVER_URL', 'http' . (isHttps() ? 's' : '') . '://' . $baseHost); - define('BASE_URL', SERVER_URL . BASE_DIR . '/'); - define('ADMIN_URL', SERVER_URL . BASE_DIR . '/' . ADMIN_PANEL_FOLDER . '/'); - - //define('CURRENT_URL', BASE_URL . $_SERVER['REQUEST_URI']); -} - if (file_exists(BASE . 'config.local.php')) { require BASE . 'config.local.php'; } +if(!IS_CLI) { + require SYSTEM . 'base.php'; + define('BASE_DIR', $baseDir); + + if (isset($config['site_url'])) { + $hasSlashAtEnd = ($config['site_url'][strlen($config['site_url']) - 1] == '/'); + + define('SERVER_URL', $config['site_url']); + define('BASE_URL', SERVER_URL . ($hasSlashAtEnd ? '' : '/')); + define('ADMIN_URL', SERVER_URL . ($hasSlashAtEnd ? '' : '/') . ADMIN_PANEL_FOLDER . '/'); + } + else { + define('SERVER_URL', 'http' . (isHttps() ? 's' : '') . '://' . $baseHost); + define('BASE_URL', SERVER_URL . BASE_DIR . '/'); + define('ADMIN_URL', SERVER_URL . BASE_DIR . '/' . ADMIN_PANEL_FOLDER . '/'); + + //define('CURRENT_URL', BASE_URL . $_SERVER['REQUEST_URI']); + } + +} + /** @var array $config */ ini_set('log_errors', 1); if(@$config['env'] === 'dev' || defined('MYAAC_INSTALL')) { diff --git a/install/steps/4-config.php b/install/steps/4-config.php index 325b97f1..342edd06 100644 --- a/install/steps/4-config.php +++ b/install/steps/4-config.php @@ -10,6 +10,14 @@ foreach($config['clients'] as $client) { $clients[$client] = $client_version; } +if (empty($_SESSION['var_site_url'])) { + //require SYSTEM . 'base.php'; + $serverUrl = 'http' . (isHttps() ? 's' : '') . '://' . $baseHost; + $siteURL = $serverUrl . $baseDir; + + $_SESSION['var_site_url'] = $siteURL; +} + $twig->display('install.config.html.twig', array( 'clients' => $clients, 'timezones' => DateTimeZone::listIdentifiers(), diff --git a/system/base.php b/system/base.php new file mode 100644 index 00000000..a0ba4e6b --- /dev/null +++ b/system/base.php @@ -0,0 +1,19 @@ + 'MyAAC', 'settings' => [ @@ -32,6 +37,13 @@ return [ 'type' => 'section', 'title' => 'General' ], + 'site_url' => [ + 'name' => 'Website URL', + 'type' => 'text', + 'desc' => 'Website address of this MyAAC instance', + 'default' => $siteURL, + 'is_config' => true, + ], 'env' => [ 'name' => 'App Environment', 'type' => 'options', diff --git a/system/templates/install.config.html.twig b/system/templates/install.config.html.twig index ab4fc361..8c0aa50a 100644 --- a/system/templates/install.config.html.twig +++ b/system/templates/install.config.html.twig @@ -9,7 +9,7 @@