Skip to content

Commit 503a9bf

Browse files
committed
[BUGFIX] Prevent undefined global variable
When there is no request object in FrontendUtility, an exception is logged to TYPO3s log file. These changes mitigates them. Related: #1286
1 parent e9b9419 commit 503a9bf

File tree

1 file changed

+43
-15
lines changed

1 file changed

+43
-15
lines changed

Classes/Utility/FrontendUtility.php

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,21 @@ public static function getStoragePage(int $pid = 0): int
3737
*/
3838
public static function getCurrentPageIdentifier(): int
3939
{
40-
return self::getRequest()->getAttribute('frontend.page.information')->getId() ?? 0;
40+
if (self::getRequest() !== null) {
41+
return self::getRequest()->getAttribute('frontend.page.information')->getId() ?? 0;
42+
}
43+
return 0;
4144
}
4245

4346
/**
4447
* Get configured frontend language
4548
*/
4649
public static function getSysLanguageUid(): int
4750
{
48-
return self::getRequest()->getAttribute('language')->getLanguageId();
51+
if (self::getRequest() !== null) {
52+
return self::getRequest()->getAttribute('language')->getLanguageId();
53+
}
54+
return 0;
4955
}
5056

5157
public static function getPluginName(): string
@@ -91,13 +97,17 @@ public static function isAllowedToEdit(array $settings, $mail): bool
9197
$mail = $mailRepository->findByUid((int)$mail);
9298
}
9399

94-
$userObject = self::getRequest()->getAttribute('frontend.user');
95-
$feUser = self::getRequest()->getAttribute('frontend.user')->getUserId();
100+
$request = self::getRequest();
101+
if ($request === null) {
102+
return false;
103+
}
104+
105+
$feUser = $request->getAttribute('frontend.user')->getUserId();
96106
if ($feUser === 0 || $mail === null) {
97107
return false;
98108
}
99109

100-
$usergroups = self::getRequest()->getAttribute('frontend.user')->createUserAspect()->getGroupIds();
110+
$usergroups = $request->getAttribute('frontend.user')->createUserAspect()->getGroupIds();
101111
$usersSettings = GeneralUtility::trimExplode(',', $settings['edit']['feuser'] ?? '', true);
102112
$usergroupsSettings = GeneralUtility::trimExplode(',', $settings['edit']['fegroup'] ?? '', true);
103113

@@ -123,7 +133,13 @@ public static function isAllowedToEdit(array $settings, $mail): bool
123133

124134
public static function isAllowedToView(array $settings, Mail $mail): bool
125135
{
126-
$feUser =self::getRequest()->getAttribute('frontend.user')->getUserId();
136+
$request = self::getRequest();
137+
138+
if ($request === null) {
139+
return false;
140+
}
141+
142+
$feUser = $request->getAttribute('frontend.user')->getUserId();
127143
if (
128144
$feUser === 0 ||
129145
(
@@ -142,16 +158,25 @@ public static function isAllowedToView(array $settings, Mail $mail): bool
142158
*/
143159
public static function isLoggedInFrontendUser(): bool
144160
{
145-
return self::getRequest()->getAttribute('frontend.user')->isActiveLogin(self::getRequest());
161+
$request = self::getRequest();
162+
if ($request !== null) {
163+
return $request->getAttribute('frontend.user')->isActiveLogin($request);
164+
}
165+
166+
return false;
146167
}
147168

148169
/**
149170
* Get Property from currently logged in fe_user
150171
*/
151172
public static function getPropertyFromLoggedInFrontendUser(string $propertyName = 'uid'): string
152173
{
153-
$feUser = self::getRequest()->getAttribute('frontend.user');
154-
return (string)($feUser->user[$propertyName] ?? '');
174+
$request = self::getRequest();
175+
if ($request !== null) {
176+
$feUser = $request->getAttribute('frontend.user');
177+
return (string)($feUser->user[$propertyName] ?? '');
178+
}
179+
return '';
155180
}
156181

157182
/**
@@ -254,16 +279,19 @@ protected static function getArgumentsFromGetOrPostRequest(string $key): array
254279

255280
protected static function getArgumentsFromTyposcriptFrontendController(string $key): array
256281
{
257-
$pageArguments = self::getRequest()->getAttribute('routing');
258-
$arguments = $pageArguments->getArguments();
259-
if (array_key_exists($key, $arguments)) {
260-
return (array)$arguments[$key];
282+
$request = self::getRequest();
283+
if ($request !== null) {
284+
$pageArguments = $request->getAttribute('routing');
285+
$arguments = $pageArguments->getArguments();
286+
if (array_key_exists($key, $arguments)) {
287+
return (array)$arguments[$key];
288+
}
261289
}
262290
return [];
263291
}
264292

265-
protected static function getRequest(): ServerRequestInterface
293+
protected static function getRequest(): ?ServerRequestInterface
266294
{
267-
return $GLOBALS['TYPO3_REQUEST'];
295+
return $GLOBALS['TYPO3_REQUEST'] ?? null;
268296
}
269297
}

0 commit comments

Comments
 (0)