# Complementos (plugins) de Linsei

Linsei carga automaticamente los plugins de esta carpeta. Hay dos formatos:

- `plugins/mi-plugin/plugin.php` (recomendado, una carpeta por plugin)
- `plugins/mi-plugin.php` (archivo suelto)

Cada archivo debe empezar con esta linea de seguridad:

```php
<?php if(!defined("PL_APP")){http_response_code(403);exit;}
```

## Acciones y filtros

```php
// Ejecutar codigo en un punto concreto (accion)
pl_add_action('dashboard_after', function ($isAdmin) {
    echo '<div class="card">Hola desde mi plugin</div>';
});

// Transformar un valor (filtro)
pl_add_filter('algun_valor', function ($valor) {
    return strtoupper($valor);
}, 10);
```

Para disparar tus propios puntos de extension:

```php
pl_do_action('mi_evento', $dato);
$x = pl_apply_filters('mi_valor', $x);
```

## Hooks disponibles

| Hook | Tipo | Cuando | Argumentos |
|------|------|--------|------------|
| `init` | accion | en cada peticion, tras cargar plugins | - |
| `admin_menu` | accion | al pintar el menu lateral | `$user` |
| `dashboard_after` | accion | al final del dashboard | `$isAdmin` |
| `help_after` | accion | al final de la pagina de Ayuda | - |
| `link_created` | accion | al crear un enlace (panel o API) | `$slug`, `$url` |
| `link_clicked` | accion | en cada clic/redireccion | `$link` (array) |

Ejemplo real: el complemento `affiliate-links` usa estos hooks.
