diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
|---|---|---|
| committer | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
| commit | 4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch) | |
| tree | 5c07151ae61276d334e88f6309c30d439a85c12e /lib/bootstrap.php | |
| parent | da0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff) | |
| parent | 97a188592c679890a25c37ab78463add76a52ff7 (diff) | |
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/bootstrap.php')
| -rw-r--r-- | lib/bootstrap.php | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/lib/bootstrap.php b/lib/bootstrap.php index c9f5103..478ca0e 100644 --- a/lib/bootstrap.php +++ b/lib/bootstrap.php @@ -9,8 +9,16 @@ * the License, or (at your option) any later version. */ +// Include composer's autoload +require __DIR__ . '/../composer/autoload.php'; + +// Load enviroment +$dot_env_path = __DIR__ . '/..'; +$dotenv = \Dotenv\Dotenv::createImmutable($dot_env_path); +$dotenv->safeLoad(); + // Default environment, do not change. Change in config/config_local.inc.php. -const DEFAULT_ENV = 'production'; +define('DEFAULT_ENV', $_ENV['STUDIP_ENV'] ?? 'production'); //software version - please leave it as it is! $SOFTWARE_VERSION = '6.0.alpha'; @@ -46,7 +54,7 @@ $ABSOLUTE_URI_STUDIP = ""; if (isset($_SERVER['SERVER_NAME'])) { // work around possible bug in lighttpd if (mb_strpos($_SERVER['SERVER_NAME'], ':') !== false) { - list($_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT']) = + [$_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT']] = explode(':', $_SERVER['SERVER_NAME']); } @@ -61,33 +69,39 @@ if (isset($_SERVER['SERVER_NAME'])) { $ABSOLUTE_URI_STUDIP .= $CANONICAL_RELATIVE_PATH_STUDIP; } -// default ASSETS_URL and ASSETS_PATH, customize if required -$GLOBALS['ASSETS_URL'] = $ABSOLUTE_URI_STUDIP . 'assets/'; -$GLOBALS['ASSETS_PATH'] = $ABSOLUTE_PATH_STUDIP . 'assets/'; +// Check if instance is configured; redirect to install script if not +if (!file_exists($GLOBALS['STUDIP_BASE_PATH'] . '/config/config_local.inc.php') && php_sapi_name() !== 'cli') { + require_once __DIR__ . '/classes/URLHelper.php'; + + URLHelper::setBaseUrl($GLOBALS['ABSOLUTE_URI_STUDIP']); + header('Location: ' . URLHelper::getURL('install.php')); + die; +} +// Load configuration require __DIR__ . '/classes/StudipFileloader.php'; $added_configs = []; -StudipFileloader::load('config_defaults.inc.php config_local.inc.php', $added_configs, compact('STUDIP_BASE_PATH', 'ABSOLUTE_URI_STUDIP', 'ASSETS_URL', 'CANONICAL_RELATIVE_PATH_STUDIP'), true); +StudipFileloader::load('config_defaults.inc.php config_local.inc.php', $added_configs, compact('STUDIP_BASE_PATH', 'ABSOLUTE_URI_STUDIP', 'CANONICAL_RELATIVE_PATH_STUDIP'), true); foreach($added_configs as $key => $value) { $GLOBALS[$key] = $value; } +// create ASSETS_URL and ASSETS_PATH if not customized in config_local.inc.php +if (!isset($GLOBALS['ASSETS_URL'])) { + $GLOBALS['ASSETS_URL'] = $ABSOLUTE_URI_STUDIP . 'assets/'; +} +if (!isset($GLOBALS['ASSETS_PATH'])) { + $GLOBALS['ASSETS_PATH'] = $ABSOLUTE_PATH_STUDIP . 'assets/'; +} + // If no ENV setting was found in the config files, assume ENV=production if (!defined('Studip\ENV')) { define('Studip\ENV', DEFAULT_ENV); } -if (!file_exists($GLOBALS['STUDIP_BASE_PATH'] . '/config/config_local.inc.php') && php_sapi_name() !== 'cli') { - require_once __DIR__ . '/classes/URLHelper.php'; - - URLHelper::setBaseUrl($GLOBALS['ABSOLUTE_URI_STUDIP']); - header('Location: ' . URLHelper::getURL('install.php')); - die; -} - require __DIR__ . '/bootstrap-autoload.php'; // construct absolute URL for ASSETS_URL @@ -111,18 +125,14 @@ Assets::set_assets_url($GLOBALS['ASSETS_URL']); Assets::set_assets_path($GLOBALS['ASSETS_PATH']); // globale template factory anlegen -require_once 'vendor/flexi/lib/flexi.php'; -$GLOBALS['template_factory'] = new Flexi_TemplateFactory("{$STUDIP_BASE_PATH}/templates"); +$GLOBALS['template_factory'] = new Flexi\Factory("{$STUDIP_BASE_PATH}/templates"); // set default pdo connection try { - DBManager::getInstance() - ->setConnection('studip', - 'mysql:host=' . $GLOBALS['DB_STUDIP_HOST'] . - ';dbname=' . $GLOBALS['DB_STUDIP_DATABASE'] . - ';charset=utf8mb4', - $GLOBALS['DB_STUDIP_USER'], - $GLOBALS['DB_STUDIP_PASSWORD']); + DBManager::getInstance()->setConnection( + 'studip', + app(StudipPDO::class) + ); } catch (PDOException $exception) { if (Studip\ENV === 'development') { throw $exception; @@ -160,7 +170,7 @@ if (isset($_SERVER['REQUEST_METHOD'])) { // bootstrap because the stud.ip cache needs to have a db conenction) if ($GLOBALS['CACHING_ENABLE']) { $lookup_hash = null; - $cached = StudipCacheFactory::getCache()->read('STUDIP#autoloader-classes'); + $cached = \Studip\Cache\Factory::getCache()->read('STUDIP#autoloader-classes'); if ($cached) { $class_lookup = json_decode($cached, true); if (is_array($class_lookup)) { @@ -172,7 +182,7 @@ if ($GLOBALS['CACHING_ENABLE']) { register_shutdown_function(function () use ($lookup_hash) { $cached = json_encode(StudipAutoloader::$class_lookup, JSON_UNESCAPED_UNICODE); if (md5($cached) !== $lookup_hash) { - StudipCacheFactory::getCache()->write( + \Studip\Cache\Factory::getCache()->write( 'STUDIP#autoloader-classes', $cached, 7 * 24 * 60 * 60 @@ -214,7 +224,7 @@ if (Config::get()->CALENDAR_ENABLE) { } if (Config::get()->SOAP_ENABLE) { - require_once 'lib/soap/StudipSoapClient' . (Config::get()->SOAP_USE_PHP5 ? '_PHP5' : '' ) . '.class.php'; + require_once 'lib/soap/StudipSoapClient' . (Config::get()->SOAP_USE_PHP5 ? '_PHP5' : '' ) . '.php'; } if (Config::Get()->ILIAS_INTERFACE_ENABLE) { |
