74 lines
1.7 KiB
PHP
74 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Helpers;
|
|
|
|
class SessionHelper
|
|
{
|
|
private static $sessionFile;
|
|
|
|
private static function getSessionFile()
|
|
{
|
|
if (self::$sessionFile === null) {
|
|
$storageDir = __DIR__ . "/../../storage";
|
|
if (!file_exists($storageDir)) {
|
|
mkdir($storageDir, 0777, true);
|
|
}
|
|
self::$sessionFile = $storageDir . "/telegram_sessions.json";
|
|
}
|
|
return self::$sessionFile;
|
|
}
|
|
|
|
/**
|
|
* Load all sessions
|
|
*/
|
|
public static function loadSessions()
|
|
{
|
|
$file = self::getSessionFile();
|
|
|
|
if (!file_exists($file)) {
|
|
file_put_contents($file, json_encode(["sessions" => []], JSON_PRETTY_PRINT));
|
|
}
|
|
|
|
$json = json_decode(file_get_contents($file), true);
|
|
return $json["sessions"] ?? [];
|
|
}
|
|
|
|
/**
|
|
* Save all sessions
|
|
*/
|
|
public static function saveSessions($sessions)
|
|
{
|
|
$file = self::getSessionFile();
|
|
file_put_contents($file, json_encode(["sessions" => $sessions], JSON_PRETTY_PRINT));
|
|
}
|
|
|
|
/**
|
|
* Get session for a chat ID
|
|
*/
|
|
public static function getSession($chatId)
|
|
{
|
|
$sessions = self::loadSessions();
|
|
return $sessions[$chatId] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Set session for a chat ID
|
|
*/
|
|
public static function setSession($chatId, $value)
|
|
{
|
|
$sessions = self::loadSessions();
|
|
$sessions[$chatId] = $value;
|
|
self::saveSessions($sessions);
|
|
}
|
|
|
|
/**
|
|
* Clear session for a chat ID
|
|
*/
|
|
public static function clearSession($chatId)
|
|
{
|
|
$sessions = self::loadSessions();
|
|
unset($sessions[$chatId]);
|
|
self::saveSessions($sessions);
|
|
}
|
|
}
|