2026-05-21 15:21:45 +00:00

87 lines
3.7 KiB
PHP

<?php
namespace Lean\Console\Controller;
use League\Route\Router;
use Picea\Ui\Method\FormHandler;
use Psr\Http\Message\{ ResponseInterface, ServerRequestInterface };
use Notes\Tell\Attribute\Language, Notes\Route\Attribute\Method\Route;
use \Lean\Console\Lib,
\Lean\Console\Form;
use Picea\Extension\UrlExtension;
use Ulmus\Annotation\Classes\Table,
Ulmus\Container\AdapterProxy;
class Storage extends Console {
use Lib\ConsoleControllerTrait;
#[Route(route: "/storage/database", name: "lean.console:storage.database")]
public function database(ServerRequestInterface $request, array $arguments) : ResponseInterface
{
$connections = $this->container->has(AdapterProxy::class) ? $this->container->get(AdapterProxy::class)->connections : false;
$migrations = $this->container->has(Lib\DatabaseMigrations::class) ? $this->container->get(Lib\DatabaseMigrations::class) : false;
$migrations->getEntities();
$context = (new FormHandler($request, new Form\Storage\Database\Migrate($migrations), $this->pushContext(new Lib\FormContext($request, "database.migrate"))))->context;
return $this->renderView("lean-console/page/storage/database", get_defined_vars());
}
#[Route(route: "/storage/database/import", name: "lean.console:storage.database_import")]
public function database_import(ServerRequestInterface $request, array $arguments) : ResponseInterface
{
$connections = $this->container->has(AdapterProxy::class) ? $this->container->get(AdapterProxy::class)->connections : false;
$migrations = $this->container->has(Lib\DatabaseMigrations::class) ? $this->container->get(Lib\DatabaseMigrations::class) : false;
$migrations->getEntities();
$form = new Form\Storage\Database\Import($migrations, $connections);
$context = (new FormHandler($request, $form, $this->pushContext(new Lib\FormContext($request, "database.import"))))->context;
return $this->renderView("lean-console/page/storage/database_import", get_defined_vars());
}
#[Route(route: "/storage/database/insert", name: "lean.console:storage.database_insert")]
public function insert(ServerRequestInterface $request, array $arguments) : ResponseInterface
{
$class = $request->getQueryParams()['source'] ?? $request->getParsedBody()['source'];
$context = (new FormHandler($request, new Form\Storage\Database\Insert(new $class())))->context;
return $this->renderView("lean-console/page/storage/database_insert", get_defined_vars());
}
#[Route(route: "/storage/session", name: "lean.console:storage.session")] # migrated from: "/storage/session", "name" => "lean.console:storage.session"
public function session(ServerRequestInterface $request, array $arguments) : ResponseInterface
{
$path = ini_get("session.save_path");
$sessions = preg_grep("/^sess_/", scandir($path));
return $this->renderView("lean-console/page/storage/session", get_defined_vars());
}
#[Route(route: "/storage/session/content/{hash}", name: "lean.console:storage.session_content")] # migrated from: "/storage/session/content/{hash}", "name" => "lean.console:storage.session_content"
public function sessionContent(ServerRequestInterface $request, array $arguments) : ResponseInterface
{
$sess = session_encode();
session_decode(file_get_contents($this->sessionPath() . $arguments['hash']));
$data = array_combine(array_keys($_SESSION), array_values($_SESSION));
session_decode($sess);
return $this->renderJson($data);
}
protected function sessionPath() : string
{
return rtrim(ini_get("session.save_path"), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
}
}