Skip to content

Commit b46ddb4

Browse files
committed
Twig session(key) function + reworked session functions to accept multi-array like in Laravel
Important: getSession returns NULL now instead of false if session value not found
1 parent de468a8 commit b46ddb4

File tree

5 files changed

+36
-7
lines changed

5 files changed

+36
-7
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## [master - 02.02.2025]
4+
5+
### Added
6+
* Twig session(key) function + reworked session functions to accept multi-array like in Laravel
7+
38
## [1.1 - 27.01.2025]
49

510
### Changed

system/functions.php

+23-4
Original file line numberDiff line numberDiff line change
@@ -1057,17 +1057,36 @@ function get_browser_real_ip() {
10571057

10581058
return '0';
10591059
}
1060-
function setSession($key, $data): void {
1061-
$_SESSION[setting('core.session_prefix') . $key] = $data;
1060+
function setSession($key, $value = null): void {
1061+
if (!is_array($key)) {
1062+
$key = [$key => $value];
1063+
}
1064+
1065+
foreach ($key as $arrayKey => $arrayValue) {
1066+
if (is_null($arrayValue)) {
1067+
unsetSession($arrayKey);
1068+
}
1069+
else {
1070+
$_SESSION[setting('core.session_prefix') . $arrayKey] = $arrayValue;
1071+
}
1072+
}
10621073
}
10631074
function getSession($key) {
1064-
$key = setting('core.session_prefix') . $key;
1065-
return $_SESSION[$key] ?? false;
1075+
return $_SESSION[setting('core.session_prefix') . $key] ?? null;
10661076
}
10671077
function unsetSession($key): void {
10681078
unset($_SESSION[setting('core.session_prefix') . $key]);
10691079
}
10701080

1081+
function session($key): mixed {
1082+
if (is_array($key)) {
1083+
setSession($key);
1084+
return null;
1085+
}
1086+
1087+
return getSession($key);
1088+
}
1089+
10711090
function csrf(bool $return = false): string {
10721091
return CsrfToken::create($return);
10731092
}

system/login.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414

1515
// stay-logged with sessions
1616
$current_session = getSession('account');
17-
if($current_session !== false)
17+
if($current_session)
1818
{
1919
$account_logged->load($current_session);
2020
if($account_logged->isLoaded() && $account_logged->getPassword() == getSession('password')
2121
//&& (!isset($_SESSION['admin']) || admin())
22-
&& (getSession('remember_me') !== false || getSession('last_visit') > time() - 15 * 60)) { // login for 15 minutes if "remember me" is not used
22+
&& (getSession('remember_me') || getSession('last_visit') > time() - 15 * 60)) { // login for 15 minutes if "remember me" is not used
2323
$logged = true;
2424
}
2525
else {

system/template.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
}
4242
else {
4343
$template_session = getSession('template');
44-
if ($template_session !== false) {
44+
if ($template_session) {
4545
if (!preg_match("/[^A-z0-9_\-]/", $template_session)) {
4646
$template_name = $template_session;
4747
}

system/twig.php

+5
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@
140140
});
141141
$twig->addFunction($function);
142142

143+
$function = new TwigFunction('session', function ($key) {
144+
return session($key);
145+
});
146+
$twig->addFunction($function);
147+
143148
$filter = new TwigFilter('urlencode', function ($s) {
144149
return urlencode($s);
145150
});

0 commit comments

Comments
 (0)