From 01454544896827113e49db0d2848b5aab6ce14ae Mon Sep 17 00:00:00 2001 From: Jonas Kohl Date: Wed, 18 Sep 2024 23:05:35 +0200 Subject: Many changes --- .../mystic/forum/utils/RequestUtils.php | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'src/application/mystic/forum/utils/RequestUtils.php') diff --git a/src/application/mystic/forum/utils/RequestUtils.php b/src/application/mystic/forum/utils/RequestUtils.php index 6599052..796a476 100644 --- a/src/application/mystic/forum/utils/RequestUtils.php +++ b/src/application/mystic/forum/utils/RequestUtils.php @@ -10,6 +10,8 @@ use mystic\forum\orm\User; final class RequestUtils { use StaticClass; + private static ?string $formErrorDestination = null; + public static function getRequestMethod(): string { return strtoupper($_SERVER["REQUEST_METHOD"] ?? "GET"); } @@ -27,12 +29,12 @@ final class RequestUtils { } } - public static function getRequiredField(string $field): string { + public static function getRequiredField(string $field, string $formId): string { $fieldValue = $_POST[$field] ?? null; if ($fieldValue === null) { //http_response_code(400); //Messaging::error("Missing required field $field"); - RequestUtils::triggerFormError("Missing required field '$field'"); + RequestUtils::triggerFormError("Missing required field '$field'", $formId); //exit; } return $fieldValue; @@ -43,18 +45,24 @@ final class RequestUtils { $_SESSION["lastForm_uri"] = $_SERVER["REQUEST_URI"]; } - public static function triggerFormError(string $message, ?string $next = null): never { - $next ??= $_SERVER["REQUEST_URI"]; - $_SESSION["formError"] = $message; + public static function setFormErrorDestination(?string $dest): ?string { + $prev = self::$formErrorDestination; + self::$formErrorDestination = $dest; + return $prev; + } + + public static function triggerFormError(string $message, string $formId, ?string $next = null): never { + $next ??= self::$formErrorDestination ?? $_SERVER["REQUEST_URI"]; + $_SESSION["formError/$formId"] = $message; // store last form submission self::storeForm(); header("Location: $next"); exit; } - public static function getAndClearFormError(): ?string { - $err = $_SESSION["formError"] ?? null; - unset($_SESSION["formError"]); + public static function getAndClearFormError(string $formId): ?string { + $err = $_SESSION["formError/$formId"] ?? null; + unset($_SESSION["formError/$formId"]); return $err; } -- cgit v1.2.3