phpmyadmin/libraries/classes/FlashMessages.php
Maurício Meneghini Fauth 5f4fe6c50d
Add a flash messages service provider
Used to persist messages from the current request to the next
request.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2021-03-20 15:54:46 -03:00

55 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin;
use RuntimeException;
final class FlashMessages
{
private const STORAGE_KEY = 'flashMessages';
/** @var array */
private $storage;
/** @var array<string, string[]> */
private $previousMessages = [];
public function __construct()
{
if (! isset($_SESSION)) {
throw new RuntimeException(__('Session not found.'));
}
$this->storage = &$_SESSION;
if (isset($this->storage[self::STORAGE_KEY])) {
$this->previousMessages = $this->storage[self::STORAGE_KEY];
}
$this->storage[self::STORAGE_KEY] = [];
}
public function addMessage(string $key, string $message): void
{
if (! isset($this->storage[self::STORAGE_KEY][$key])) {
$this->storage[self::STORAGE_KEY][$key] = [];
}
$this->storage[self::STORAGE_KEY][$key][] = $message;
}
/** @return string[]|null */
public function getMessage(string $key): ?array
{
return $this->previousMessages[$key] ?? null;
}
/** @return array<string, string[]> */
public function getMessages(): array
{
return $this->previousMessages;
}
}