Skip to content
docsv0.2.0

PluginsStateProvider

El estado de la sección "Plugins": qué plugins tiene este host y cuáles arrancan. Maneja las OPERACIONES de `milpa/plugin`, no el registro. Leer el registro directo desde acá sería una segunda implementación de "qué plugins hay" — y la primera vez que las dos no coincidan, el panel y la terminal van a estar diciendo cosas distintas sobre el mismo host. La operación es la única definición; esta clase sólo la invoca. Qué operaciones existen lo decide el host por lo que cableó: sin un {@see PluginInstallerInterface} en el container, `plugins.install` sencillamente no existe y la vista no pinta el botón. Eso no se decide acá.

PluginsStateProvider::__construct()

public function __construct(array $operations):

Parameters

Parameters of __construct()
NameTypeDescription
$operationslist<Operation>

PluginsStateProvider::fromContainer()

public static function fromContainer(Milpa\Interfaces\Di\DIContainerInterface $container): self

Arma el proveedor desde el container del host. Sin registro no hay nada que administrar, así que se arma vacío: la sección se pinta diciendo que este host no tiene almacén de activación, en vez de tronar la página entera.

Parameters

Parameters of fromContainer()
NameTypeDescription
$containerMilpa\Interfaces\Di\DIContainerInterface

PluginsStateProvider::state()

public function state(): array

La lista de plugins más qué puede hacer esta superficie con ellos. `canInstall` no es cosmético: viaja para que la vista pinte lo que el host realmente puede hacer, y no un formulario cuyo POST no tiene a quién llamar.

PluginsStateProvider::toggle()

public function toggle(string $name, bool $enabled): ?string

Prende o apaga un plugin por nombre. Devuelve **null si funcionó**, o el motivo si no. El resultado se lee por el tipo, no por la forma del texto: quien llama pregunta `=== null`, y ningún cambio de redacción puede volver un fallo en un éxito. Traduce la excepción de la operación a texto y no la deja subir: quien llama es el POST de un panel, y un stack trace en la cara no le dice a nadie qué hacer.

Parameters

Parameters of toggle()
NameTypeDescription
$namestring
$enabledbool