From 2f85abeb817dba2476294f23fcdff91140ed2e95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de>
Date: Wed, 19 Oct 2022 08:23:48 +0000
Subject: [PATCH] Resolve #1688 "Fatal Error im bootstrap mit PHP 8.1"

Closes #1688

Merge request studip/studip!1090
---
 lib/bootstrap.php                    | 9 ++++++++-
 lib/phplib/Seminar_Auth.class.php    | 2 +-
 lib/phplib/Seminar_Session.class.php | 2 +-
 tests/functional/_bootstrap.php      | 6 +++++-
 4 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/lib/bootstrap.php b/lib/bootstrap.php
index 1c3af707ff3..3950eefc8c7 100644
--- a/lib/bootstrap.php
+++ b/lib/bootstrap.php
@@ -65,7 +65,14 @@ if (isset($_SERVER['SERVER_NAME'])) {
 $GLOBALS['ASSETS_URL'] = $ABSOLUTE_URI_STUDIP . 'assets/';
 
 require __DIR__ . '/classes/StudipFileloader.php';
-$added = StudipFileloader::load('config_defaults.inc.php config_local.inc.php', $GLOBALS, compact('STUDIP_BASE_PATH', 'ABSOLUTE_URI_STUDIP', 'ASSETS_URL', 'CANONICAL_RELATIVE_PATH_STUDIP'), true);
+
+$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);
+
+foreach($added_configs as $key => $value) {
+    $GLOBALS[$key] = $value;
+}
 
 // If no ENV setting was found in the config files, assume ENV=production
 if (!defined('Studip\ENV')) {
diff --git a/lib/phplib/Seminar_Auth.class.php b/lib/phplib/Seminar_Auth.class.php
index c1c2b860b8b..3a915e56fb1 100644
--- a/lib/phplib/Seminar_Auth.class.php
+++ b/lib/phplib/Seminar_Auth.class.php
@@ -356,7 +356,7 @@ class Seminar_Auth
 
         if ($check_auth['uid']) {
             $uid = $check_auth['uid'];
-            if ($check_auth['need_email_activation'] == $uid) {
+            if (isset($check_auth['need_email_activation']) && $check_auth['need_email_activation'] == $uid) {
                 $this->need_email_activation = $uid;
                 $_SESSION['semi_logged_in'] = $uid;
                 return false;
diff --git a/lib/phplib/Seminar_Session.class.php b/lib/phplib/Seminar_Session.class.php
index a5bc5927ab9..937a865a10a 100644
--- a/lib/phplib/Seminar_Session.class.php
+++ b/lib/phplib/Seminar_Session.class.php
@@ -314,7 +314,7 @@ class Seminar_Session
         $this->delete();
         $this->start();
         foreach ($keep_session_vars as $k) {
-            $_SESSION[$k] = $keep[$k];
+            $_SESSION[$k] = $keep[$k] ?? null;
         }
     }
 
diff --git a/tests/functional/_bootstrap.php b/tests/functional/_bootstrap.php
index 4a71787b141..8feb13ea66e 100644
--- a/tests/functional/_bootstrap.php
+++ b/tests/functional/_bootstrap.php
@@ -32,12 +32,16 @@ StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/plugins/db');
 StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/plugins/engine');
 
 // load config-variables
+$added_configs = [];
 StudipFileloader::load(
     'config_defaults.inc.php config_local.inc.php',
-    $GLOBALS,
+    $added_configs,
     compact('STUDIP_BASE_PATH', 'ABSOLUTE_URI_STUDIP', 'ASSETS_URL', 'CANONICAL_RELATIVE_PATH_STUDIP'),
     true
 );
+foreach($added_configs as $key => $value) {
+    $GLOBALS[$key] = $value;
+}
 require 'config/config.inc.php';
 
 // Do not send mails of any kind during tests
-- 
GitLab