diff --git a/includes/engelsystem_provider.php b/includes/engelsystem_provider.php
index 65a319e9..aed331d4 100644
--- a/includes/engelsystem_provider.php
+++ b/includes/engelsystem_provider.php
@@ -6,6 +6,7 @@ use Engelsystem\Exceptions\Handler as ExceptionHandler;
use Engelsystem\Http\Request;
use Engelsystem\Renderer\HtmlEngine;
use Engelsystem\Renderer\Renderer;
+use Symfony\Component\HttpFoundation\Session\Session;
/**
* This file includes all needed functions, connects to the db etc.
@@ -169,7 +170,9 @@ foreach ($includeFiles as $file) {
/**
* Init application
*/
-session_start();
+$session = new Session();
+$session->start();
+$request->setSession($session);
gettext_init();
diff --git a/includes/helper/internationalization_helper.php b/includes/helper/internationalization_helper.php
index 83faabb0..131941e9 100644
--- a/includes/helper/internationalization_helper.php
+++ b/includes/helper/internationalization_helper.php
@@ -9,7 +9,7 @@ use Engelsystem\Http\Request;
*/
function locale()
{
- return $_SESSION['locale'];
+ return session()->get('locale');
}
/**
@@ -29,11 +29,12 @@ function gettext_init()
{
$locales = config('locales');
$request = request();
+ $session = session();
if ($request->has('set_locale') && isset($locales[$request->input('set_locale')])) {
- $_SESSION['locale'] = $request->input('set_locale');
- } elseif (!isset($_SESSION['locale'])) {
- $_SESSION['locale'] = config('default_locale');
+ $session->set('locale', $request->input('set_locale'));
+ } elseif (!$session->has('locale')) {
+ $session->set('locale', config('default_locale'));
}
gettext_locale();
@@ -50,7 +51,7 @@ function gettext_init()
function gettext_locale($locale = null)
{
if ($locale == null) {
- $locale = $_SESSION['locale'];
+ $locale = session()->get('locale');
}
putenv('LC_ALL=' . $locale);
diff --git a/includes/helper/message_helper.php b/includes/helper/message_helper.php
index 1f429c27..7a42a7b7 100644
--- a/includes/helper/message_helper.php
+++ b/includes/helper/message_helper.php
@@ -7,12 +7,12 @@
*/
function msg()
{
- if (!isset($_SESSION['msg'])) {
- return '';
- }
- $msg = $_SESSION['msg'];
- $_SESSION['msg'] = '';
- return $msg;
+ $session = session();
+
+ $message = $session->get('msg', '');
+ $session->set('msg', '');
+
+ return $message;
}
/**
@@ -61,6 +61,8 @@ function success($msg, $immediately = false)
*/
function alert($class, $msg, $immediately = false)
{
+ $session = session();
+
if ($immediately) {
if ($msg == '') {
return '';
@@ -68,10 +70,9 @@ function alert($class, $msg, $immediately = false)
return '
' . $msg . '
';
}
- if (!isset($_SESSION['msg'])) {
- $_SESSION['msg'] = '';
- }
- $_SESSION['msg'] .= alert($class, $msg, true);
+ $message = $session->get('msg', '');
+ $message .= alert($class, $msg, true);
+ $session->set('msg', $message);
return null;
}
diff --git a/includes/pages/admin_shifts.php b/includes/pages/admin_shifts.php
index 04d88a4f..c77bd46d 100644
--- a/includes/pages/admin_shifts.php
+++ b/includes/pages/admin_shifts.php
@@ -19,6 +19,7 @@ function admin_shifts()
{
$valid = true;
$request = request();
+ $session = session();
$start = parse_date('Y-m-d H:i', date('Y-m-d') . ' 00:00');
$end = $start;
$mode = 'single';
@@ -270,8 +271,8 @@ function admin_shifts()
}
// Fürs Anlegen zwischenspeichern:
- $_SESSION['admin_shifts_shifts'] = $shifts;
- $_SESSION['admin_shifts_types'] = $needed_angel_types;
+ $session->set('admin_shifts_shifts', $shifts);
+ $session->set('admin_shifts_types', $needed_angel_types);
$hidden_types = '';
foreach ($needed_angel_types as $type_id => $count) {
@@ -301,16 +302,14 @@ function admin_shifts()
}
} elseif ($request->has('submit')) {
if (
- !isset($_SESSION['admin_shifts_shifts'])
- || !isset($_SESSION['admin_shifts_types'])
- || !is_array($_SESSION['admin_shifts_shifts'])
- || !is_array($_SESSION['admin_shifts_types'])
+ !is_array($session->get('admin_shifts_shifts'))
+ || !is_array($session->get('admin_shifts_types'))
) {
redirect(page_link_to('admin_shifts'));
}
$needed_angel_types_info = [];
- foreach ($_SESSION['admin_shifts_shifts'] as $shift) {
+ foreach ($session->get('admin_shifts_shifts', []) as $shift) {
$shift['URL'] = null;
$shift['PSID'] = null;
$shift_id = Shift_create($shift);
@@ -322,7 +321,7 @@ function admin_shifts()
. ' to ' . date('Y-m-d H:i', $shift['end'])
);
- foreach ($_SESSION['admin_shifts_types'] as $type_id => $count) {
+ foreach ($session->get('admin_shifts_types', []) as $type_id => $count) {
$angel_type_source = DB::selectOne('
SELECT *
FROM `AngelTypes`
@@ -348,8 +347,8 @@ function admin_shifts()
success('Schichten angelegt.');
redirect(page_link_to('admin_shifts'));
} else {
- unset($_SESSION['admin_shifts_shifts']);
- unset($_SESSION['admin_shifts_types']);
+ $session->remove('admin_shifts_shifts');
+ $session->remove('admin_shifts_types');
}
$rid = null;
diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php
index 4a77b40c..9179c6c4 100644
--- a/includes/pages/guest_login.php
+++ b/includes/pages/guest_login.php
@@ -39,6 +39,7 @@ function guest_register()
$min_password_length = config('min_password_length');
$event_config = EventConfig();
$request = request();
+ $session = session();
$msg = '';
$nick = '';
@@ -226,7 +227,7 @@ function guest_register()
$password_hash,
$comment,
$hometown,
- $_SESSION['locale'],
+ $session->get('locale'),
$planned_arrival_date,
]
);
@@ -377,25 +378,36 @@ function guest_register()
]);
}
+/**
+ * @return string
+ */
function entry_required()
{
return '';
}
+/**
+ * @return bool
+ */
function guest_logout()
{
- session_destroy();
+ session()->invalidate();
redirect(page_link_to('start'));
return true;
}
+/**
+ * @return string
+ */
function guest_login()
{
$nick = '';
$request = request();
- unset($_SESSION['uid']);
+ $session = session();
$valid = true;
+ $session->remove('uid');
+
if ($request->has('submit')) {
if ($request->has('nick') && strlen(User_validate_Nick($request->input('nick'))) > 0) {
$nick = User_validate_Nick($request->input('nick'));
@@ -420,8 +432,8 @@ function guest_login()
}
if ($valid && !empty($login_user)) {
- $_SESSION['uid'] = $login_user['UID'];
- $_SESSION['locale'] = $login_user['Sprache'];
+ $session->set('uid', $login_user['UID']);
+ $session->set('locale', $login_user['Sprache']);
redirect(page_link_to('news'));
}
@@ -477,6 +489,9 @@ function guest_login()
]);
}
+/**
+ * @return string
+ */
function get_register_hint()
{
global $privileges;
diff --git a/includes/pages/user_settings.php b/includes/pages/user_settings.php
index 03621a45..0ba8bbcb 100644
--- a/includes/pages/user_settings.php
+++ b/includes/pages/user_settings.php
@@ -164,6 +164,7 @@ function user_settings_locale($user_source, $locales)
{
$valid = true;
$request = request();
+ $session = session();
if ($request->has('language') && isset($locales[$request->input('language')])) {
$user_source['Sprache'] = $request->input('language');
@@ -182,7 +183,7 @@ function user_settings_locale($user_source, $locales)
$user_source['UID'],
]
);
- $_SESSION['locale'] = $user_source['Sprache'];
+ $session->set('locale', $user_source['Sprache']);
success('Language changed.');
redirect(page_link_to('user_settings'));
diff --git a/includes/pages/user_shifts.php b/includes/pages/user_shifts.php
index db0bb193..30abbde6 100644
--- a/includes/pages/user_shifts.php
+++ b/includes/pages/user_shifts.php
@@ -167,20 +167,23 @@ function view_user_shifts()
{
global $user, $privileges, $ical_shifts;
+ $session = session();
$ical_shifts = [];
$days = load_days();
$rooms = load_rooms();
$types = load_types();
- if (!isset($_SESSION['ShiftsFilter'])) {
+ if (!$session->has('ShiftsFilter')) {
$room_ids = [
$rooms[0]['id']
];
$type_ids = array_map('get_ids_from_array', $types);
- $_SESSION['ShiftsFilter'] = new ShiftsFilter(in_array('user_shifts_admin', $privileges), $room_ids, $type_ids);
+ $shiftsFilter = new ShiftsFilter(in_array('user_shifts_admin', $privileges), $room_ids, $type_ids);
+ $session->set('ShiftsFilter', $shiftsFilter);
}
- update_ShiftsFilter($_SESSION['ShiftsFilter'], in_array('user_shifts_admin', $privileges), $days);
- $shiftsFilter = $_SESSION['ShiftsFilter'];
+
+ $shiftsFilter = $session->get('ShiftsFilter');
+ update_ShiftsFilter($shiftsFilter, in_array('user_shifts_admin', $privileges), $days);
$shiftCalendarRenderer = shiftCalendarRendererByShiftFilter($shiftsFilter);
diff --git a/includes/sys_auth.php b/includes/sys_auth.php
index 36f0f935..4242261b 100644
--- a/includes/sys_auth.php
+++ b/includes/sys_auth.php
@@ -10,8 +10,10 @@ function load_auth()
global $user, $privileges;
$user = null;
- if (isset($_SESSION['uid'])) {
- $user = DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$_SESSION['uid']]);
+ $session = session();
+
+ if ($session->has('uid')) {
+ $user = DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$session->get('uid')]);
if (!empty($user)) {
// User ist eingeloggt, Datensatz zur Verfügung stellen und Timestamp updaten
DB::update('
@@ -21,12 +23,13 @@ function load_auth()
LIMIT 1
', [
time(),
- $_SESSION['uid'],
+ $session->get('uid'),
]);
$privileges = privileges_for_user($user['UID']);
return;
}
- unset($_SESSION['uid']);
+
+ $session->remove('uid');
}
// guest privileges
diff --git a/src/helpers.php b/src/helpers.php
index af0e802b..24f93f2c 100644
--- a/src/helpers.php
+++ b/src/helpers.php
@@ -5,6 +5,7 @@ use Engelsystem\Config\Config;
use Engelsystem\Http\Request;
use Engelsystem\Renderer\Renderer;
use Engelsystem\Routing\UrlGenerator;
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
/**
* Get or set config values
@@ -42,6 +43,22 @@ function request($key = null, $default = null)
return $request->input($key, $default);
}
+/**
+ * @param string $key
+ * @param mixed $default
+ * @return SessionInterface|mixed
+ */
+function session($key = null, $default = null)
+{
+ $session = request()->getSession();
+
+ if (is_null($key)) {
+ return $session;
+ }
+
+ return $session->get($key, $default);
+}
+
/**
* @param string $template
* @param mixed[] $data