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
| Name | Type | Description |
|---|---|---|
| $operations | list<Operation> |
PluginsStateProvider::fromContainer()
public static function fromContainer(Milpa\Interfaces\Di\DIContainerInterface $container): selfArma 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
| Name | Type | Description |
|---|---|---|
| $container | Milpa\Interfaces\Di\DIContainerInterface |
PluginsStateProvider::state()
public function state(): arrayLa 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): ?stringPrende 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
| Name | Type | Description |
|---|---|---|
| $name | string | |
| $enabled | bool |