You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.2 KiB
58 lines
1.2 KiB
<?php |
|
|
|
declare(strict_types=1); |
|
|
|
namespace PhpMyAdmin\Utils; |
|
|
|
final class SessionCache |
|
{ |
|
private static function key(): string |
|
{ |
|
global $cfg, $server; |
|
|
|
$key = 'server_' . $server; |
|
|
|
if (isset($cfg['Server']['user'])) { |
|
return $key . '_' . $cfg['Server']['user']; |
|
} |
|
|
|
return $key; |
|
} |
|
|
|
public static function has(string $name): bool |
|
{ |
|
return isset($_SESSION['cache'][self::key()][$name]); |
|
} |
|
|
|
/** |
|
* @return mixed|null |
|
*/ |
|
public static function get(string $name, ?callable $defaultValueCallback = null) |
|
{ |
|
if (self::has($name)) { |
|
return $_SESSION['cache'][self::key()][$name]; |
|
} |
|
|
|
if ($defaultValueCallback !== null) { |
|
$value = $defaultValueCallback(); |
|
self::set($name, $value); |
|
|
|
return $value; |
|
} |
|
|
|
return null; |
|
} |
|
|
|
/** |
|
* @param mixed $value |
|
*/ |
|
public static function set(string $name, $value): void |
|
{ |
|
$_SESSION['cache'][self::key()][$name] = $value; |
|
} |
|
|
|
public static function remove(string $name): void |
|
{ |
|
unset($_SESSION['cache'][self::key()][$name]); |
|
} |
|
}
|
|
|